From 8b2be69922c97d140f5a160598f4a1eafb98b880 Mon Sep 17 00:00:00 2001 From: Paul Schweigert Date: Fri, 10 Jun 2022 07:40:25 -0400 Subject: [PATCH] remove katacoda docs (#5017) Signed-off-by: Paul S. Schweigert --- tutorials/katacoda/1-serving-intro/finish.md | 0 tutorials/katacoda/1-serving-intro/index.json | 35 ------ tutorials/katacoda/1-serving-intro/intro.md | 7 -- .../scripts/install-dependencies.sh | 12 -- tutorials/katacoda/1-serving-intro/step1.md | 20 --- tutorials/katacoda/1-serving-intro/step2.md | 26 ---- tutorials/katacoda/1-serving-intro/step3.md | 47 ------- .../katacoda/2-serving-intro-yaml/finish.md | 0 .../katacoda/2-serving-intro-yaml/index.json | 35 ------ .../katacoda/2-serving-intro-yaml/intro.md | 7 -- .../scripts/install-dependencies.sh | 6 - .../katacoda/2-serving-intro-yaml/step1.md | 20 --- .../katacoda/2-serving-intro-yaml/step2.md | 43 ------- .../katacoda/2-serving-intro-yaml/step3.md | 98 --------------- .../3-eventing-intro-channels/assets/1to1.png | Bin 3456 -> 0 bytes .../3-eventing-intro-channels/assets/1toN.png | Bin 8575 -> 0 bytes .../3-eventing-intro-channels/assets/Nto1.png | Bin 6901 -> 0 bytes .../assets/channel.png | Bin 7872 -> 0 bytes .../assets/sequence.png | Bin 5190 -> 0 bytes .../3-eventing-intro-channels/finish.md | 0 .../3-eventing-intro-channels/index.json | 39 ------ .../3-eventing-intro-channels/intro.md | 10 -- .../scripts/install-dependencies.sh | 18 --- .../3-eventing-intro-channels/step1.md | 19 --- .../3-eventing-intro-channels/step2.md | 93 -------------- .../3-eventing-intro-channels/step3.md | 116 ------------------ .../3-eventing-intro-channels/step4.md | 101 --------------- .../assets/broker-eg.png | Bin 9086 -> 0 bytes .../4-eventing-intro-broker/assets/broker.png | Bin 12813 -> 0 bytes .../4-eventing-intro-broker/finish.md | 0 .../4-eventing-intro-broker/index.json | 35 ------ .../katacoda/4-eventing-intro-broker/intro.md | 9 -- .../scripts/install-dependencies.sh | 18 --- .../katacoda/4-eventing-intro-broker/step1.md | 28 ----- .../katacoda/4-eventing-intro-broker/step2.md | 111 ----------------- .../katacoda/4-eventing-intro-broker/step3.md | 79 ------------ 36 files changed, 1032 deletions(-) delete mode 100644 tutorials/katacoda/1-serving-intro/finish.md delete mode 100644 tutorials/katacoda/1-serving-intro/index.json delete mode 100644 tutorials/katacoda/1-serving-intro/intro.md delete mode 100755 tutorials/katacoda/1-serving-intro/scripts/install-dependencies.sh delete mode 100644 tutorials/katacoda/1-serving-intro/step1.md delete mode 100644 tutorials/katacoda/1-serving-intro/step2.md delete mode 100644 tutorials/katacoda/1-serving-intro/step3.md delete mode 100644 tutorials/katacoda/2-serving-intro-yaml/finish.md delete mode 100644 tutorials/katacoda/2-serving-intro-yaml/index.json delete mode 100644 tutorials/katacoda/2-serving-intro-yaml/intro.md delete mode 100755 tutorials/katacoda/2-serving-intro-yaml/scripts/install-dependencies.sh delete mode 100644 tutorials/katacoda/2-serving-intro-yaml/step1.md delete mode 100644 tutorials/katacoda/2-serving-intro-yaml/step2.md delete mode 100644 tutorials/katacoda/2-serving-intro-yaml/step3.md delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/assets/1to1.png delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/assets/1toN.png delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/assets/Nto1.png delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/assets/channel.png delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/assets/sequence.png delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/finish.md delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/index.json delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/intro.md delete mode 100755 tutorials/katacoda/3-eventing-intro-channels/scripts/install-dependencies.sh delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/step1.md delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/step2.md delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/step3.md delete mode 100644 tutorials/katacoda/3-eventing-intro-channels/step4.md delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/assets/broker-eg.png delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/assets/broker.png delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/finish.md delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/index.json delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/intro.md delete mode 100755 tutorials/katacoda/4-eventing-intro-broker/scripts/install-dependencies.sh delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/step1.md delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/step2.md delete mode 100644 tutorials/katacoda/4-eventing-intro-broker/step3.md diff --git a/tutorials/katacoda/1-serving-intro/finish.md b/tutorials/katacoda/1-serving-intro/finish.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/tutorials/katacoda/1-serving-intro/index.json b/tutorials/katacoda/1-serving-intro/index.json deleted file mode 100644 index 3e03465c0..000000000 --- a/tutorials/katacoda/1-serving-intro/index.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "title": "Getting Started with Knative Serving (kn cli)", - "description": "Introduction to Knative by installing knative serving and deploying an application (If you want to script your workflow, or really don't like yaml)", - "difficulty": "Beginner", - "time": "20", - "details": { - "steps": [ - { - "title": "Step 1", - "text": "step1.md" - }, - { - "title": "Step 2", - "text": "step2.md" - }, - { - "title": "Step 3", - "text": "step3.md" - } - ], - "intro": { - "code": "scripts/install-dependencies.sh", - "text": "intro.md" - }, - "finish": { - "text": "finish.md" - } - }, - "environment": { - "uilayout": "terminal" - }, - "backend": { - "imageid": "minikube-running" - } -} diff --git a/tutorials/katacoda/1-serving-intro/intro.md b/tutorials/katacoda/1-serving-intro/intro.md deleted file mode 100644 index cc12c134f..000000000 --- a/tutorials/katacoda/1-serving-intro/intro.md +++ /dev/null @@ -1,7 +0,0 @@ -## What is Knative? -Knative brings the "serverless" experience to kubernetes. It also tries to codify common patterns and best practices for running applications while hiding the complexity of doing so on kubernetes. It does so by providing two components: -- Eventing - Management and delivery of events -- Serving - Request-driven compute that can scale to zero - -## What will we learn in this tutorial? -This tutorial will serve as an introduction to Knative. Here we will install Knative (Serving only), deploy an application, watch Knative's "scale down to zero" feature then deploy a second version of the application and watch traffic split between the two versions. diff --git a/tutorials/katacoda/1-serving-intro/scripts/install-dependencies.sh b/tutorials/katacoda/1-serving-intro/scripts/install-dependencies.sh deleted file mode 100755 index f73241d74..000000000 --- a/tutorials/katacoda/1-serving-intro/scripts/install-dependencies.sh +++ /dev/null @@ -1,12 +0,0 @@ -echo "Installing kn cli..." -wget https://storage.googleapis.com/knative-nightly/client/latest/kn-linux-amd64 -O kn -chmod +x kn -mv kn /usr/local/bin/ -echo "Done" - -echo "Waiting for Kubernetes to start. This may take a few moments, please wait..." -while [ `minikube status &>/dev/null; echo $?` -ne 0 ]; do sleep 1; done -echo "Kubernetes Started" - -export latest_version=$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/knative/serving/tags?per_page=1 | jq -r .[0].name) -echo "Latest knative version is: ${latest_version}" diff --git a/tutorials/katacoda/1-serving-intro/step1.md b/tutorials/katacoda/1-serving-intro/step1.md deleted file mode 100644 index 7a1ea2431..000000000 --- a/tutorials/katacoda/1-serving-intro/step1.md +++ /dev/null @@ -1,20 +0,0 @@ -## Installation -> The startup script running on the right will install the `kn` cli and wait for kubernetes to start. Once you see a prompt, you can click on the commands below at your own pace, and they will be copied and run for you in the terminal on the right. - -1. Install Knative Serving's core components - ``` - kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-crds.yaml - kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-core.yaml - ```{{execute}} -1. Install contour as the networking layer. (Knative also supports Courier, Gloo, Istio and Kourier as options) - ``` - kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/contour.yaml - kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/net-contour.yaml - ```{{execute}} -1. Configure Knative Serving to use Contour by default - ``` - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' - ```{{execute}} diff --git a/tutorials/katacoda/1-serving-intro/step2.md b/tutorials/katacoda/1-serving-intro/step2.md deleted file mode 100644 index 956fc7706..000000000 --- a/tutorials/katacoda/1-serving-intro/step2.md +++ /dev/null @@ -1,26 +0,0 @@ -## Deploy and autoscale application - -We are going to deploy the [Hello world sample web application](https://github.com/knative/docs/tree/main/code-samples/serving/hello-world/helloworld-go). This basic web application reads in an env variable TARGET and prints `Hello ${TARGET}!`. If TARGET is not specified, it will use `World` as the TARGET. - -We will now deploy the application by specifying the image location and the `TARGET` env variable set to `blue`. - -Knative defines a `service.serving.knative.dev` CRD to control the lifecycle of the application (not to be confused with kubernetes service). We will use the `kn` cli to create the Knative service: (This may take up to a minute) - -``` -kn service create demo --image gcr.io/knative-samples/helloworld-go --env TARGET=blue --autoscale-window 15s -```{{execute}} - -We can now invoke the application using `curl`. We first need to figure out the IP address of minikube and the ingress port. -``` -MINIKUBE_IP=$(minikube ip) -INGRESS_PORT=$(kubectl get svc envoy --namespace contour-external --output 'jsonpath={.spec.ports[?(@.port==80)].nodePort}') -```{{execute}} -Then invoke the application using curl: -``` -curl http://$MINIKUBE_IP:$INGRESS_PORT/ -H 'Host: demo.default.example.com' -```{{execute T1}} - -### Scale down to zero -You can run `watch kubectl get pods`{{execute T2}} (may need two clicks) in a new Terminal tab to see a pod created to serve the requests. Knative will scale this pod down to zero if there are no incoming requests, we have configured this window to be 15 seconds above. - -You can wait for the pods to scale down to zero and then issue the above `curl` again to see the pod spin up and serve the request. diff --git a/tutorials/katacoda/1-serving-intro/step3.md b/tutorials/katacoda/1-serving-intro/step3.md deleted file mode 100644 index 7c251c5cb..000000000 --- a/tutorials/katacoda/1-serving-intro/step3.md +++ /dev/null @@ -1,47 +0,0 @@ -## Blue/Green deploy -The Knative `service` resource creates additional resources "route, configuration and revision" to manage the lifecycle of the application. -- revision: just like a git revision, any change to the Service's `spec.template` results in a new revision -- route: control traffic to several revisions - -You can list those resources by running `kubectl get ksvc,configuration,route,revision` or by using the `kn` cli - -We will now update the service to change the `TARGET` env variable to `green`. - -But, before we do that, let us update the revision name to "hello-v1", so that we can direct traffic to it. -``` -kn service update demo --revision-name="demo-v1"```{{execute T1}} - -Now, let's update the env variable to `green`, but let's do it as a dark launch i.e. zero traffic will go to this new revision: -``` -kn service update demo --env TARGET=green --revision-name="demo-v2" --traffic demo-v1=100,demo-v2=0 -```{{execute T1}} - -This will result in a new `revision` being created. Verify this by running `kn revision list`{{execute T1}}. - -All these revisions are capable of serving requests. Let's tag the `green` revision, so as to get a custom hostname to be able to access the revision. -``` -kn service update demo --tag demo-v2=v2 -```{{execute T1}} - -You can now test the `green` revision like so: (This hostname can be listed with `kn route describe demo` command). -``` -curl http://$MINIKUBE_IP:$INGRESS_PORT/ -H 'Host: v2-demo.default.example.com' -```{{execute T1}} - -We now need to split our traffic between the two revisions. -``` -kn service update demo --traffic demo-v1=50,@latest=50 -```{{execute T1}} -Then proceed by issuing the curl command multiple times to see that the traffic is split between the two revisions. -``` -curl http://$MINIKUBE_IP:$INGRESS_PORT/ -H 'Host: demo.default.example.com' -```{{execute T1}} - -We can now make all traffic go to the `green` revision: -``` -kn service update demo --traffic @latest=100 -```{{execute T1}} -Then proceed by issuing the curl command multiple times to see that all traffic is routed to `green` revision. -``` -curl http://$MINIKUBE_IP:$INGRESS_PORT/ -H 'Host: demo.default.example.com' -```{{execute T1}} diff --git a/tutorials/katacoda/2-serving-intro-yaml/finish.md b/tutorials/katacoda/2-serving-intro-yaml/finish.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/tutorials/katacoda/2-serving-intro-yaml/index.json b/tutorials/katacoda/2-serving-intro-yaml/index.json deleted file mode 100644 index 85e9fc2e8..000000000 --- a/tutorials/katacoda/2-serving-intro-yaml/index.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "title": "Getting Started with Knative Serving (yaml)", - "description": "Introduction to Knative by installing knative serving and deploy an application", - "difficulty": "Beginner", - "time": "20", - "details": { - "steps": [ - { - "title": "Step 1", - "text": "step1.md" - }, - { - "title": "Step 2", - "text": "step2.md" - }, - { - "title": "Step 3", - "text": "step3.md" - } - ], - "intro": { - "code": "scripts/install-dependencies.sh", - "text": "intro.md" - }, - "finish": { - "text": "finish.md" - } - }, - "environment": { - "uilayout": "terminal" - }, - "backend": { - "imageid": "minikube-running" - } -} diff --git a/tutorials/katacoda/2-serving-intro-yaml/intro.md b/tutorials/katacoda/2-serving-intro-yaml/intro.md deleted file mode 100644 index cc12c134f..000000000 --- a/tutorials/katacoda/2-serving-intro-yaml/intro.md +++ /dev/null @@ -1,7 +0,0 @@ -## What is Knative? -Knative brings the "serverless" experience to kubernetes. It also tries to codify common patterns and best practices for running applications while hiding the complexity of doing so on kubernetes. It does so by providing two components: -- Eventing - Management and delivery of events -- Serving - Request-driven compute that can scale to zero - -## What will we learn in this tutorial? -This tutorial will serve as an introduction to Knative. Here we will install Knative (Serving only), deploy an application, watch Knative's "scale down to zero" feature then deploy a second version of the application and watch traffic split between the two versions. diff --git a/tutorials/katacoda/2-serving-intro-yaml/scripts/install-dependencies.sh b/tutorials/katacoda/2-serving-intro-yaml/scripts/install-dependencies.sh deleted file mode 100755 index 4218b23ba..000000000 --- a/tutorials/katacoda/2-serving-intro-yaml/scripts/install-dependencies.sh +++ /dev/null @@ -1,6 +0,0 @@ -echo "Waiting for Kubernetes to start. This may take a few moments, please wait..." -while [ `minikube status &>/dev/null; echo $?` -ne 0 ]; do sleep 1; done -echo "Kubernetes Started" - -export latest_version=$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/knative/serving/tags?per_page=1 | jq -r .[0].name) -echo "Latest knative version is: ${latest_version}" diff --git a/tutorials/katacoda/2-serving-intro-yaml/step1.md b/tutorials/katacoda/2-serving-intro-yaml/step1.md deleted file mode 100644 index 0afb302e6..000000000 --- a/tutorials/katacoda/2-serving-intro-yaml/step1.md +++ /dev/null @@ -1,20 +0,0 @@ -## Installation -> The startup script running on the right will wait for kubernetes to start. Once you see a prompt, you can click on the commands below at your own pace, and they will be copied and run for you in the terminal on the right. - -1. Install Knative Serving's core components - ``` - kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-crds.yaml - kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-core.yaml - ```{{execute}} -1. Install contour as the networking layer. (Knative also supports Courier, Gloo, Istio and Kourier as options) - ``` - kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/contour.yaml - kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/net-contour.yaml - ```{{execute}} -1. Configure Knative Serving to use Contour by default - ``` - kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' - ```{{execute}} diff --git a/tutorials/katacoda/2-serving-intro-yaml/step2.md b/tutorials/katacoda/2-serving-intro-yaml/step2.md deleted file mode 100644 index 4b3c9606b..000000000 --- a/tutorials/katacoda/2-serving-intro-yaml/step2.md +++ /dev/null @@ -1,43 +0,0 @@ -## Deploy and autoscale application - -We are going to deploy the [Hello world sample application](https://github.com/knative/docs/tree/main/code-samples/serving/hello-world/helloworld-go). This application reads in an env variable TARGET and prints `Hello ${TARGET}!`. If TARGET is not specified, it will use `World` as the TARGET. - -We will now deploy the application by specifying the image location and the `TARGET` env variable. - -Knative defines a `service.serving.knative.dev` CRD to control the lifecycle of the application (not to be confused with kubernetes service). We will create the Knative service using the yaml below: - -``` -cat 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 diff --git a/tutorials/katacoda/3-eventing-intro-channels/assets/1toN.png b/tutorials/katacoda/3-eventing-intro-channels/assets/1toN.png deleted file mode 100644 index 7162f398ff518152d8cc67a35d6bae02d17bf67d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8575 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 diff --git a/tutorials/katacoda/3-eventing-intro-channels/assets/sequence.png b/tutorials/katacoda/3-eventing-intro-channels/assets/sequence.png deleted file mode 100644 index cd8ba1e03bf9653afcdaf48cad541e0a4b864c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5190 zcmb_gWmJ^kw+2CQXrvn?f6_3Nbk_`_lytXr*Zdd+hE`O%yBib`aHJV^=w?8W974L` zj{etO>wdfU!~JsBIcM$tynDZUzwdgU9jB+GPE0^gfQ5xctf`^$919B@j@jEi!o#d< zw4Lo(Sd_$?DvAa{^Lx33?NG zaqW93QA3_2MMml|`DtM7Dp3wkl1re}W2 zPm7C=PFR2g{UJTR``i0FA*Vgv*Y_SvRUNYSkJw(5Dg7_YFsBY7&kt$d2i^Q^DNPc) zM)OJ@Gm#w{zmdg7s%XT6ZmD@0@tC*_RV2!5y(_xEmF3gzTR|#F3HVTz1XpXP4ZrwQ zS2A}$b5fLzBaJUdd|@H$a?dQ}>LSm|;+a{v!?x1tR8JQu{IWB>LcZsM@w7vftAhJO z`biMuSzCd6d*pDGeQO@o{j|dHsB-x?%fcU*o#m5=h?}yGtsnALgr1=mxm`C_1|UJ^ zXJr!`UI)!4yNC)WrK9u@ma(@9*Md27w_~Jr`YFZ{zWp+-rEN{U2R5QG9mW?wT#Ml>Y06Th%7e}&_iBe}3*H-wBAo;0 zYFS*-MIO0Fy`J$=^lDAF2yuVU+}&;mUOAO){|IS zOQg~%7IB<@Y%KGx1zYPMPxm=34EFW6Ism>LcnVA3i>q?h-O3eRV{M{Yc4BTG{@knz z57u;17uZR_H;t@xQu3kgoNA)B$W+T<9Z4i_g^U@6GO=rmL<$-l?oLJrR$%V6UapmV z$CO7ZF<_%@t-o6Ed6J0Y;!D?N>d!+%sfk;24D;c`we@t4(1~=Ji^#V5P1=`AK9t&u zib#A33x^EAS3RoOaA^#xVr2h(==WY}Vo^ofscZjy)srHsKr+d_bF6UPfK z=l9q}D}^Dia`T0nUjGuPddme9Rji+AkFw#+9B=-6O6b31>($aoUiFmj|lf&5Tht72%l5T0#;WhRuUUq|-%Z!m3awrv~Clz+Im-MdN z0fxC}h+XJO3E|@S2)M{eR<0zGV@I<6X0+Q}TR*weVm)W=+zvvBA_D z8WAh~Ry?voo{rD)E`AUjSM2>h&tDnil%6u>DV&7F zq!PuY8HOm$?2o3jDw%Ti^|K8U%U0g@qM<$*NCMU= zjBPtk{|Ao)sF-DqQlcmUjN=0SKEb~5e{MG-0Wrl?6l(c0`-k&3z4D1^hP%Sc{O6HT z0_o#69~U}njoeaJ&sx&oryW#Px&?jw+_Ax}JbqCi0v1Apyg>dIw^38dv0YY-{MS!t zTFgx?=S*iLZP7CW$&fypIN&(03lyjrGROcM*fDBBl(_;y`k=U7F5U;N9 zzR&z;wdpJ~-H>0nqTT#~A!QHZBK z4nLy;XFhgjoH`lK6y3}y`%oh|yP5WnQ|0jPeatt2X^VgL*D(+p695u}pq~}t%ED?T{1TpAU z<*d@bPRS-V_aMF70xD1da{<$CT(fHYkWvSJx+%Oqk=b(Y zV(SNxh>2+v#N5`cy7uBvul)050#MQU$e^fV#FuScT+L?;A2q-=+Iz_%xRHpnTPAH@6+pSZ;HNthea+TeQ@p_xV78c zzNSZ(?(i23aJE2D!!UheS%uVF3OVoH*`9E$X#SDUk|37Kx_UoK(Ia|uZkucJF>D}U z;*@B%mDgi?RLM`bsS!MltAD7{xita}uz_8^8KMBfBi8o(IxIB|31PDPRj<>$V>g)2 z<>zO>nF7Ag$W1M;ZVh*a%HHMcavF2EL1)DyHjAp$2mO+eb9HMBM$2^4%t1O7^}|4w z=C8QMx4-W0&x_yavHFimnR5^FSzH<>uEue_)0%-CCzk73Gs)OWhbT zhf3~bG#T_|HY{Y)d@1YuAwd@IbbiE3M{A*W!&C=rU@|Jv54ZApKj+=sk^p@H^+tD6 z5tEtrV6UroniEc|xs+&Q%bA&Hd%9LUu<90b2e}%2Z)Ld5A^o%>Kcw}sEu-f&Zq z)9sbs8zDU_oqqvOP`Z7C3qQRgvZ|=9{~fKA2}{n2JQq^kdJZBmjTT5>_CxE>_dgPN zPV<}jSR+DVvHlW8dev4a0rzujZ|VpzgSM|~*DjLf^QH?JkuDV}!@u@xL=?$I z`(Q3f#aXt!q-=WZ*#iSlC7%lP#aXY0a*$R|KGEwkIgIzW?#iG+!<%SPj~2ePanMap ziuFx%#>pyk%~nzw^6r@i6WI)^bS}LeKUIL?_q6t0{Zy;4-PgBFc$~#s~VD(OJEIY920+_ zJL!ZspZ)!B%hWDR;)9#G83l4E7Ps{Sa?gbR@wZjfcsrMhp9|Fc)POK!kn(eyJtfi6 zrY&YQKrOrFsFZEgGpz7p?8;@!j#kFx_q#em#v1OVF6%Z#GH+@CO6AU9NZuE73O)&d zv6ZoL4HXWR3i0>p9bs)mwX-GL!md7Jb=kgjrt27Nn)RIIzC9CSNz`k@4<|jz0EF14 zZm%K{W`HjL8YLv}iEAe#J{Y;PoR@>L|g2gI!BA7MPgL08kST9PsCGLSmvCpcQ zWj0LsB#8qWE|~@x0SfC$kyJ2f{3>#q6P&EJ%k?g?g_?doCw_ujx(cG9q&z7Jxuran zK+QJl09Ss$w8cJFwj+7y-5=)DCNMuWXhuH=<3_DfT`I}zcC^-fTG|6_5S(hvh5n+N z87SwlgTmsv)pe{+E-4(Nnb~fK3Cn)U`UwUbesgA}=o1kko=@-iH(2;4hf$tU7f9cj z*geCE!fM=ASkA7KHi*Z?KCnr=n&wLdn08%p@IIMhX@~@oA$H#3#p8+))&Z2hLB>Zc zOf&hBUtGAdp0B=Xen>YDP>UU5_Jle=EOv-NUdW+vRVxm;U_rJ^v+A%mc?!@>61!xX zDZ7msv{ALlr2YfCRfPBud&Mj^bv zoOu})&-jK#jXG0+euKyk?_}gqS%5MbB_a^GBZAzFk+9}P#JfK1MkO2?)fV0k#v$Cs z91a(b=?hWJM=eE0M7#m=ato`|7{EQuF4cZX5JFer8GiTLh+HBZHSI={L=qOO#(*NV zhl=!oCN`;os1wsP|FggYDC6}7Dmh0~@kU`gKSpxwnL>jXJxQc(7L2mip2Nq0%+GA- z6ekB@W62jKK-M0IZBgrkm%+(3dl0pJ_w@_PpkA3(0LHW$na1+82?i2KWd8?|#5{gA zZbkS8-Rd)Do<;-LMv&y64vN*z=ugWgFxZK6Ff7=E^*Y=N*tU({q1h@jMj2Xoo%nAv z8BXH+VxbPBZxkLxijV2N#r5N(crPGVgEMGylJk&j*7I{K9)i2l728`W3TGy=z{MpI zCO{rY`3n!YQ{XUGCl`#!EV|nuYv+qXkEKJ9zM{2lN8eZg0vI? zjV-wK#TZED3AQX-&)19wmT|Y&#_c-X7U@@?`P=D_hmVGaeai5_MZ%F+Y%|3UFP-&H z2rTSa>}4x(o|iX(!g_IzM_yLGx2NY0GeL160j9fW)sEjStmnza$1mMK7;VcB{qlu| znMC|XVkm{oDU<8v);KWW25!*uEp}bX7NnCxTl{G$HdSf~nWis3I^%hACx1MWea%OW z@JOb$t0T9o5nr&xc%dUr%@-tXi7;$h5=#!UlAcg!I_)q`J0wQUJ|lHivJsfP7=mn6 z{x0_KS-9xtx6o`1GXh-?w8t`$%xEPuX<^tA35b$kwY|=z4T{EbR%B?s50v>m>oosz zrM$8&#|26!46o>SU1~m?VK{q%fOKstdWQy-S2_HlwliR|Z{sBMHqCbriJwa6;b{5a z=Z782FT4`JrZJTnIK0ONyFi8cJI%G+P;Qr{;Hp8iyz}cc3=M~e3BlRq@;z0Bo=@f_ z|6I~hfm7DmYf^ma|?6@A)`G(4bMqGaD3EV7BvngRt`M6Zb zLqq?81;Y#BITG+$);^DO5PvY^fImPKW&N)cY%~{`ajTvXIvsp`wy^iZLaj9mlZk|) z5K~f?cD+dmPku`n>Lyy&G9Qxv*0c&zgw5FOWXM@4#k{(xCYE2{6#I8xVRAxEF`~SWM{feTfKqvuH)@ zTwlQ$k}~!mds;<1Z>0u9%Jf*5pjQ*^Z!s>e~C24;J*dfA4&H2=mLF>Vdxw{ zIE5<|^CQBhWkakaEbRwHO^HgwM=d6|R^kWIq1hwDIzm~LVp&0dBs6I1f1Q2(AI4+< fe/dev/null; echo $?` -ne 0 ]; do sleep 1; done -echo "Kubernetes Started." - -export latest_version=$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/knative/serving/tags?per_page=1 | jq -r .[0].name) -echo "Latest knative version is: ${latest_version}" - -echo "Installing Knative Serving..." -kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-crds.yaml -kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-core.yaml -kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/contour.yaml -kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/net-contour.yaml -kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' -echo "Knative Serving Installed." diff --git a/tutorials/katacoda/3-eventing-intro-channels/step1.md b/tutorials/katacoda/3-eventing-intro-channels/step1.md deleted file mode 100644 index ca92ede7a..000000000 --- a/tutorials/katacoda/3-eventing-intro-channels/step1.md +++ /dev/null @@ -1,19 +0,0 @@ -## Installation -> The startup script running on the right will wait for kubernetes to start and knative serving to be installed. (Although Serving is not required for Eventing to work, we install it here for creating consumers succinctly). -> Once you see a prompt, you can click on the commands below at your own pace, and they will be copied and run for you in the terminal on the right. - -1. Install Knative Eventing's core components - ``` - kubectl apply --filename https://github.com/knative/eventing/releases/download/${latest_version}/eventing-crds.yaml - kubectl apply --filename https://github.com/knative/eventing/releases/download/${latest_version}/eventing-core.yaml - ```{{execute}} - -## Event Driven Architecture -In an event driven architecture, microservice and functions execute business logic when they are triggered by an event. -The source that generates the event is called the "Producer" of the event and the microservice/function is the "consumer". -The microservices/functions in an event-driven architecture are constantly reacting to and producing events themselves. - -Producers should send their event data in a specific format, like [Cloud Events](https://cloudevents.io/), to make it easier -for consumers to handle the data. By default, Knative Eventing works with Cloud Events as a standard format for event data. - -In the next section we will look at various eventing topologies. diff --git a/tutorials/katacoda/3-eventing-intro-channels/step2.md b/tutorials/katacoda/3-eventing-intro-channels/step2.md deleted file mode 100644 index 75fb65b36..000000000 --- a/tutorials/katacoda/3-eventing-intro-channels/step2.md +++ /dev/null @@ -1,93 +0,0 @@ -## Event Topologies -We will walk through the simplest to more complicated topologies - -### 1:1 Event Delivery -The most straightforward use case is that whenever events are produced, you want some code to handle that event. - -![1to1](assets/1to1.png) -Looking at the diagram above, we’ll create the components in the reverse order. -Let's create a consumer that will display the events that are sent to it: - -``` -cat < Write programs that do one thing and do it well. Write programs to work together. - -In an event driven architecture too, it is useful to split up functionality into smaller chunks. These chunks can then be implemented as either microservices -or functions. We then need to pass the events from the producer through a series of consumers. This time rather than creating several channels and subscriptions, we -will create a `Sequence` instead. A Sequence lets us define an in-order list of functions that will be invoked. Sequence creates `Channel`s and `Subscription`s under the hood. - -Let's see this in action now. We will create the following topology where the event is passed from Producer to Consumer 1, who transforms the event, and then passes it -along to Consumer 2, which displays the event. - -![seq](assets/sequence.png) - -First, let's create the final consumer: - -``` -cat <z{A6%)_kh^0uK)#j=PQ{ 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%0DYX$qle0^aZus&KllRUo1A+(- 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/dev/null; echo $?` -ne 0 ]; do sleep 1; done -echo "Kubernetes Started." - -export latest_version=$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/knative/serving/tags?per_page=1 | jq -r .[0].name) -echo "Latest knative version is: ${latest_version}" - -echo "Installing Knative Serving..." -kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-crds.yaml -kubectl apply --filename https://github.com/knative/serving/releases/download/${latest_version}/serving-core.yaml -kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/contour.yaml -kubectl apply --filename https://github.com/knative/net-contour/releases/download/${latest_version}/net-contour.yaml -kubectl patch configmap/config-network \ - --namespace knative-serving \ - --type merge \ - --patch '{"data":{"ingress-class":"contour.ingress.networking.knative.dev"}}' -echo "Knative Serving Installed." diff --git a/tutorials/katacoda/4-eventing-intro-broker/step1.md b/tutorials/katacoda/4-eventing-intro-broker/step1.md deleted file mode 100644 index 4bd706105..000000000 --- a/tutorials/katacoda/4-eventing-intro-broker/step1.md +++ /dev/null @@ -1,28 +0,0 @@ -## Installation -> The startup script running on the right will wait for kubernetes to start and knative serving to be installed. (Although Serving is not required for Eventing to work, we install it here for creating consumers succinctly). -> Once you see a prompt, you can click on the commands below at your own pace, and they will be copied and run for you in the terminal on the right. - -1. Install Knative Eventing's core components - ``` - kubectl apply --filename https://github.com/knative/eventing/releases/download/${latest_version}/eventing-crds.yaml - kubectl apply --filename https://github.com/knative/eventing/releases/download/${latest_version}/eventing-core.yaml - ```{{execute}} -1. Install an in-memory channel. (Knative also supports Apache Kafka Channel, Google Cloud Pub/Sub Channel and NATS Channel as options) - ``` - kubectl apply --filename https://github.com/knative/eventing/releases/download/${latest_version}/in-memory-channel.yaml - ```{{execute}} -1. Install a Broker - ``` - kubectl apply --filename https://github.com/knative/eventing/releases/download/${latest_version}/mt-channel-broker.yaml - ```{{execute}} - - -## Event Driven Architecture -In an event driven architecture, microservice and functions execute business logic when they are triggered by an event. -The source that generates the event is called the "Producer" of the event and the microservice/function is the "consumer". -The microservices/functions in an event-driven architecture are constantly reacting to and producing events themselves. - -Producers should send their event data in a specific format, like [Cloud Events](https://cloudevents.io/), to make it easier -for consumers to handle the data. By default, Knative Eventing works with Cloud Events as a standard format for event data. - -In the next section we will look at the broker-trigger model. diff --git a/tutorials/katacoda/4-eventing-intro-broker/step2.md b/tutorials/katacoda/4-eventing-intro-broker/step2.md deleted file mode 100644 index 75675a8ae..000000000 --- a/tutorials/katacoda/4-eventing-intro-broker/step2.md +++ /dev/null @@ -1,111 +0,0 @@ -## Use Case -The broker and trigger model is useful for complex event delivery topologies like N:M:Z, i.e. there are a multitude of Sources sending events, Functions -consuming/transforming which are then processed by even more functions and so on. It can get a bit unwieldy to keep track of which Channel is having which events. Also, sometimes you might only want to -consume specific types of events. You would have to receive all the events, and throw out the ones you’re not interested in. To make these kinds of interactions easier and allow the -user to only focus on declaring which events they are interested in and where to send them is an easier way to reason about them. This is where Broker and Trigger are meant -to provide a straightforward user experience. - -### Broker -Producers POST events to the Broker. Once an Event has entered the Broker, it can be forwarded to event Channels by using Triggers. This event delivery mechanism hides -details of event routing from the event producer and event consumer. - -### Trigger -A Trigger describes a filter on event attributes which should be delivered to Consumers. This allows the consumer to only receive a subset of the events. - -### Example -Suppose we want to implement the following workflow for events -![broker-eg](assets/broker-eg.png) - -We can implement this with Channel and Subscription, but in order for that we’d need 6 Channels and have two instances of Consumer1 (because we would need to have it output -to two different channels to separate Red and Yellow without Consumer2 and Consumer4 having to filter out the events they didn’t want). We would furthermore need to have 6 -Subscription objects. By using the Broker / Trigger we only have to declare that Consumer1 is interested in Blue and Orange events, Consumer2 is interested in Red events and so forth. The new topology now becomes: -![broker](assets/broker.png) - -To see this in action let us first create a Broker: - -``` -kubectl create -f - <