Zero-downtime deployments

This lab focuses on ensuring reliable deployment and upgrade, scaling, healing and monitoring of your services. We'll cover several powerful Kubernetes mechanisms that facilitate them as well as explaining how to fit them in the larger picture of a software delivery process.

Agenda

Deep dive into Kubernetes Controllers

Controllers implement a lot of the "magic" of Kubernetes. In this section we'll go through several standard controllers with the focus on the Deployments Controller. We'll be covering mechanisms like initContainers and probes to ensure granular control over your software deployment process.

Implementing a real-world scenario

We'll be using our reference ecommerce system to implement various deployment options and consider their trade-offs. We'll consider recovering from failure scenarios, scaling the deployment up and down and how to ensure zero downtime operations.

Triggering updates and rollbacks

In this section, we'll focus on updating and rolling back different versions of your services. Kubernetes offers several useful mechanisms and we'll cover several real world scenarios and learn how to integrate them with external systems (like a CI/CD delivery pipeline)

Using metrics to scale your application

Kubernetes offers powerful mechanisms with which your system can respond to increases or decreases in load. We'll implement a real-world scenario which will have our application react accordingly, including building custom metrics bespoke to your application.

Blue/green and Canary deployments

Finally, we'll cover gradual releases of your application using several techniques, whose goal is to ensure that your system responds accordingly in complex scenarios. We'll be simulating a CI/CD pipeline triggering updates and monitoring the success and progress of the whole process.

This lab is designed to ensure you are in control of the stateless parts of your architecture. Using the knowledge gained here, you'll be able to implement a reactive and self healing system infrastructure which will automate large parts of your process and ensure the health of your application.