Skip to content

sdaschner/zero-downtime-kubernetes

Repository files navigation

Zero-downtime rolling update deployments with Istio

Running the example

Note
To run the deployment scripts, kontemplate is required.
  • Build the project via Maven (mvn clean package).

  • Build and push a Docker image to a registry of your choice.

  • Change some behavior and re-build the project and Docker image with another Docker tag and re-push the image.

  • Change the image definition in deployment/coffee-shop/deployment.tpl.yaml (the part before the version variable)

  • Change the IP address definition in deployment/coffee-shop/service-entry.yaml to the public IP address of your ingress gateway.

  • Run deployment/deploy-v1.sh

  • Test the running version

  • Run deployment/exec-zero-downtime.sh <old-version> <new-version> <new-image> to perform a deployment using version subsets (v1, v2, …​). Example: deployment/exec-zero-downtime.sh v1 v2 2

  • Run kubectl port-forward <fortio-pod> 8080:8080, and run ./curl-test.sh or ./load-test.sh to test your application

  • Browse http://localhost:8080/fortio/browse to see the load test results.

  • Perform a deployment during a load test and see what happens