Coder Social home page Coder Social logo

etaw-knative's Introduction

etaw-knative

Preqrequesites

This tutorial requires you to have an up and running GKE cluster with knative installed.

Build

Make sure you are authorized to access the registry from your namepsace

Adapt destination and git repository if needed in the build.yaml

kubectl create -f build/build.yaml

Serve

Once the image is built, create your knative configuration

kubectl create -f configuration/configuration_v1.yaml

Create a route for you service to make it available for calls

kubectl create -f route/route_v1.yaml

To test if your service is properly running execute the following commands. Retrieve the hostname that your service is deployed with

export SERVICE_HOST=`kubectl get route etaw-knative -n=default --output jsonpath="{.status.domain}"`

If you are running on GKE you can retrieve the public IP of the knative ingress-gateway with the command below

export SERVICE_IP=`kubectl get svc knative-ingressgateway --namespace istio-system \
--output jsonpath="{.status.loadBalancer.ingress[*].ip}"`

If you are running on Minikube retrieve the IP and the NodePort where the ingress-gateway is reachable

export SERVICE_IP=$(kubectl get po --selector knative=ingressgateway --namespace istio-system \
  --output 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc knative-ingressgateway --namespace istio-system \
  --output 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')

Call your service

curl --header "Host:$SERVICE_HOST" http://$SERVICE_IP

Revision v2

Deploy the second configuration of your application, which will create a second revision with different environment variables.

kubectl create -f configuration/configuration_v2

Routes

Staging

Deploy the second route version

kubectl create -f route/route_v2.yaml

That elevates your second revision as stage deployment. Curl will still show Blue (v1) as result

curl --header "Host:$SERVICE_HOST" http://$SERVICE_IP

But with the staging feature you can curl the second revision specifing the version number, the result should show Green

curl --header "Host:v2.$SERVICE_HOST" http://$SERVICE_IP

Canary

Deploy the third route version

kubectl create -f route/route_v3.yaml

Curl should show equally often Green and Blue as result

curl --header "Host:$SERVICE_HOST" http://$SERVICE_IP

Routing to new version

Deploy the fourth route version

kubectl create -f route/route_v4.yaml

The curl result shows only Green as result

curl --header "Host:$SERVICE_HOST" http://$SERVICE_IP

etaw-knative's People

Watchers

James Cloos avatar Sascha avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.