Deployment strategies with Kubernetes and how to prepare your micro-service for them
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.rst

Zero deployment of Micro-services with Kubernetes

Do you need to implement a zero-downtime deployment for your product? Did you consider Kubernetes? Check whether my slides, demos of different deployment strategies, and an example of a micro-service can help you get started. The demos, you can run easily on minikube. The implementation, currently in Golang, shows how to prepare your service to not lose requests on upgrade.

The demos cover recreate, rolling updates, blue-green, and canary deployment strategies. In future, I will add other deployment approaches - see TBD below.

So far, I presented this material at: Pizza&Tech meetup in Wroclaw and -- the shorter version -- on Golang Warsaw Meetup.

Slides for 1.5h:

Slides for 40 minutes:

Demos:

Helpful? Please give a LIKE to the most recent LinkedIn post about this talk or a STAR to this github repo.

How to build your component

livenessProbe and readinessProbe

  • livenessProbe:

    livenessProbe:
      httpGet:
        path: /model
        port: 8000
        httpHeaders:
          - name: X-Custom-Header
            value: Awesome
      initialDelaySeconds: 600
      periodSeconds: 5
      timeoutSeconds: 18
      successThreshold: 1
      failureThreshold: 3
    
  • readinessProbe:

    readinessProbe:
      exec:
        command:
        - cat
         - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    

Graceful shutdown

  • handling SIGTERM
  • health and ready implementation

Check demo.

Looking for a Java implementation, check Mateusz Dyminski talk.

TBD

To Be Added before the next talk:

  1. cover: what happening is during a k8s upgrade
  2. cover: anti-affinity
  3. conver pod's disruption budget
  4. shadow deployment with (most probably) Istio
  5. feature switch with Golang
  6. A/B deployment with Golang
  7. Weight-based routing of requests with Traefik
  8. Python example.

Related Work