{"id":25314754,"url":"https://github.com/rguske/knative-serving-eventing-demo-magic","last_synced_at":"2026-04-29T01:34:02.469Z","repository":{"id":142901784,"uuid":"458228053","full_name":"rguske/knative-serving-eventing-demo-magic","owner":"rguske","description":"This repository supports you on installing and demoing Knative's building blocks Serving and Eventing.","archived":false,"fork":false,"pushed_at":"2022-05-15T11:43:38.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T15:14:38.067Z","etag":null,"topics":["faas","functions-as-a-service","knative","knative-eventing","knative-serving","kubernetes","serverless"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rguske.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-11T14:53:42.000Z","updated_at":"2023-03-05T08:55:09.000Z","dependencies_parsed_at":"2023-03-27T21:47:48.134Z","dependency_job_id":null,"html_url":"https://github.com/rguske/knative-serving-eventing-demo-magic","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rguske/knative-serving-eventing-demo-magic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rguske%2Fknative-serving-eventing-demo-magic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rguske%2Fknative-serving-eventing-demo-magic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rguske%2Fknative-serving-eventing-demo-magic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rguske%2Fknative-serving-eventing-demo-magic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rguske","download_url":"https://codeload.github.com/rguske/knative-serving-eventing-demo-magic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rguske%2Fknative-serving-eventing-demo-magic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32407164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["faas","functions-as-a-service","knative","knative-eventing","knative-serving","kubernetes","serverless"],"created_at":"2025-02-13T17:36:18.254Z","updated_at":"2026-04-29T01:34:02.454Z","avatar_url":"https://github.com/rguske.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Demo-Magic Scripts to install and demo Knative's Serving and Eventing\n\n[![Twitter\nFollow](https://img.shields.io/twitter/follow/vmw_rguske?style=social)](https://twitter.com/vmw_rguske)\n\n:pencil: [My Personal Blog](https://rguske.github.io)\n\nHi curious visitor :wave:\n\nKnative is the most popular platform to run Serverless workload on Kubernetes. It's two building blocks **Serving** and **Eventing** are providing a rich set of features in order to support you in running your Serverless workload **as well as** to build Event-Driven architectures. Implementation-details like e.g. the reactive *Knative Pod Autoscaler* making it possible to scale your workload from n to 0(!) and vice versa. Also, features like *Revisions* and *Routes* making deployment models like *Blue/Green*, *Canary* and *Progressive* available and thus providing great flexibility in shipping your code to production.\n\nThis repository provides two demo-scripts I've created to demo Knative's power in the mentioned disciplines. By cloning this repository, you will have two scripts by hand, which will install the two aforementioned building blocks to an existing Kubernetes installation plus demos for each. But don't think about a classical installation script (execute -\u003e finish)! The idea is basically, you execute a script, it'll start typing the first command for you and stops until you execute. Therefore, you can keep focus on your presentation and continue when you are ready. I've e.g. used the scripts multiple times when presenting on Knative. I'm using the popular [Demo Magic](https://github.com/paxtonhare/demo-magic) script/tool to do so.\n\n## :book: Table of Content\n\n- [Using Demo-Magic Scripts to install Knative's Serving and Eventing](#using-demo-magic-scripts-to-install-knatives-serving-and-eventing)\n  - [:book: Table of Content](#book-table-of-content)\n  - [:computer: CLI Tools](#computer-cli-tools)\n  - [:wrench: Preperations](#wrench-preperations)\n    - [:label: Knative Release Versions](#label-knative-release-versions)\n    - [:passport_control: Load Balancer required](#passport_control-load-balancer-required)\n  - [:sparkles: Knative Magic locally on a KinD Cluster](#sparkles-knative-magic-locally-on-a-kind-cluster)\n    - [:star: Eventing Demo vSphere-Tag](#star-eventing-demo-vsphere-tag)\n  - [:rocket: Execute a Script](#rocket-execute-a-script)\n\n## :computer: CLI Tools\n\nIn order not being disrupted by a missing cli tool during the script execution, install (or replace a tool withing the script) the following cli tools:\n\n- [kubectl](https://kubernetes.io/docs/tasks/tools/)\n- [kn](https://knative.dev/docs/install/client/install-kn/)\n- [vegeta](https://github.com/tsenart/vegeta)\n- [figlet](https://formulae.brew.sh/formula/figlet)\n- [lolcat](https://github.com/busyloop/lolcat)\n- [helm](https://helm.sh/docs/intro/install/)\n\n## :wrench: Preperations\n\nClone the repository locally and change into the new directory `knative_serving_eventing_demo_script`.\n\n```shell\ngit clone git@github.com:rguske/knative_serving_eventing_demo_script.git \u0026\u0026 cd knative_serving_eventing_demo_script\n```\n\n### :label: Knative Release Versions\n\nOpen both scripts and adjust the respective release versions for the installations at the beginning of every script. You'll find the latest releases using the links below.\n\n- [Serving](https://github.com/knative/serving/releases/)\n- [Net-Contour](https://github.com/knative-sandbox/net-contour/releases)\n- [Eventing](https://github.com/knative/eventing/releases)\n\n```shell\n# adjust the versions for the serving installation (core and net-contour) in knative_serving.sh\nexport KN_SERVING='knative-v1.1.1'\nexport KN_CONTOUR='knative-v1.1.0'\n\n# adjust the version for the eventing installation in knative_eventing.sh\nexport KN_EVENTING=knative-v1.0.2\n```\n\n\u003e Note: I've only tested both scripts successfully with the above release versions.\n\n\u003e Note: If you like to use another [networking-layer](https://knative.dev/docs/install/uninstall/#uninstalling-a-networking-layer) than Contour, modify the sections `04.` as well as `05.` in the `knative_serving.sh` script accordingly.\n\n### :passport_control: Load Balancer required\n\nBecause I'm using [Tanzu Kubernetes Grid](https://tanzu.vmware.com/kubernetes-grid) as a Kubernetes runtime, load balancing services is not a topic I have to worry about. Therefore, section `05.` in the `knative_serving.sh` script is expecting that a load balancer will assign an IP address automatically to the Envoy Proxy (`kubectl get service envoy -n contour-external --output 'jsonpath={.status.loadBalancer.ingress[0].ip}'`).\n\n\n## :sparkles: Knative Magic locally on a KinD Cluster\n\nIf you don't have a Kubernetes playground available, check out [Knative on Kind (KonK)](https://github.com/csantanapr/knative-kind).\n\nYou are a Fusion or Workstation user? Check out `vctl` to easliy instantiate a KinD cluster locally :eyes: :point_right: [A closer look at VMware's Project Nautilus](https://rguske.github.io/post/a-closer-look-at-vmwares-project-nautilus/)\n\n### :star: Eventing Demo vSphere-Tag\n\nIn order to provide a great Event-Driven-Architecture (EDA) experience on vSphere, the `knative_eventing.sh` script will install the [VMware Event Router](https://github.com/vmware-samples/vcenter-event-broker-appliance/tree/development/vmware-event-router) using `helm`, to connect to the vCenter Server event-stream (vCenter = event `provider`) and to provide the stream to a [broker](https://knative.dev/docs/eventing/broker/). For the deployment of the Event-Router, it's important that you enter your vCenter parameters in section `06.` of the `knative_eventing.sh` script.\n\nSection 06:\n\n```yaml\ncat \u003c\u003c EOF \u003e override.yaml\neventrouter:\n  config:\n    logLevel: info\n  vcenter:\n    address: https://\u003cvcenter-server-address\u003e # FQDN or IP\n    username: ro-user@vsphere.local # enter your read-only user\n    password: 'VMware1!' # enter your super secret password\n    insecure: true # specify if the connection is insecure or not\n  eventProcessor: knative\n  knative:\n    destination:\n      ref:\n        apiVersion: eventing.knative.dev/v1\n        kind: Broker\n        name: default\n        namespace: vmware-functions\nEOF\n```\n\nAlso, an example function from the official [VEBA](https://github.com/vmware-samples/vcenter-event-broker-appliance) (VMware Event Broker Appliance) repository will be used for the eventing demo. It will apply a specified vSphere Tag to a Virtual Machine after it was powered on (`DrsVmPoweredOnEvent`).\n\nAdjust the values in the `tag_secret.json` file accordingly before starting the `knative_eventing.sh` script.\n\n\u003e Note: Of course the vSphere Tag must also exist before you start the script :wink:\n\n```json5\n{\n  // vCenter Server address (FQDN or IP)\n  \"VCENTER_SERVER\": \"FILL-ME-IN\",\n  //User with the right persmissions to apply a vSphere Tag\n  \"VCENTER_USERNAME\" : \"FILL-ME-IN\",\n  // Users password\n  \"VCENTER_PASSWORD\" : \"FILL-ME-IN\",\n  // vSphere Tag name\n  \"VCENTER_TAG_NAME\" : \"FILL-ME-IN\",\n  // Possible values are Fail, Ignore or Warn\n  \"VCENTER_CERTIFICATE_ACTION\" : \"FILL-ME-IN\"\n}\n```\n\n## :rocket: Execute a Script\n\nSimply start a script by executing e.g. `./knative_serving.sh` on your terminal and confirm the execution of each printed command. I recommend using `tmux` and `watch` (e.g. `watch kubectl get pods -A`) or helpful tools like [k9s](https://github.com/derailed/k9s) or [Octant](https://github.com/vmware-tanzu/octant) to follow the installations on another terminal window.\n\nHave Fun!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frguske%2Fknative-serving-eventing-demo-magic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frguske%2Fknative-serving-eventing-demo-magic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frguske%2Fknative-serving-eventing-demo-magic/lists"}