Progressive Delivery with Flux & Flagger

A presentation at Kubernetes and Cloud Native Virtual Summit in April 2020 in by Max Körbächer

Slide 1

Slide 1

Progressive Delivery with Flux & Flagger Max Körbächer - Kubernetes & Cloud Native Advocate

Slide 2

Slide 2

Speaker Max Körbächer Kubernetes & Cloud Native Advocate Working @ Storm Reply K8s Release Team Comms Shadow Get connected: ● ● ● Linkedin /maxkoerbaecher Twitter /mkoerbi Github /mkorbi

Slide 3

Slide 3

Where are we now? CI/CD, DevOps, Agile and Co. icons by Eucaly/happy Agile CI/CD DevOps focused on process focused on software life-cycle focused on culture highlighting change highlighting tools highlighting roles accelerating delivery accelerating automation accelerating responsiveness

Slide 4

Slide 4

The complexity of full/high automation

Slide 5

Slide 5

The complexity of full/high automation Where we want to focus on

Slide 6

Slide 6

The complexity of full/high automation Where we have an impact on

Slide 7

Slide 7

The complexity of full/high automation Where we have an impact on

Slide 8

Slide 8

The complexity of full/high automation The blast radius

Slide 9

Slide 9

What is the problem? Rolling Updates 1 The de facto standard of release strategies. Gives you no/less control of the rollout speed. No way back Once started, a rollout is hard to stop and even harder to rollback. This requires in nearly all cases several major manual steps. 2 Liveness/Readiness Probes 3 Liveness and readiness probes are best practice to use and helpful for the lifecycle management from K8s perspective. But they don’t deliver deep insights or can use external metrics.

Slide 10

Slide 10

“Progressive delivery is continuous delivery with fine-grained control over the blast radius.” — James Governor, RedMonk Photo by Jeremy Perkins on Unsplash

Slide 11

Slide 11

Progressive Delivery The next level of deployments Progressive delivery requires high automation and rollback capabilities Key element, and mostly identified with traffic shifting between different versions of the same application It utilizes controlled methods like canary or blue/green deployment Most powerful way to use: feature toggling - enable, disable or hide features

Slide 12

Slide 12

Progressive Delivery The next level of deployments Progressive deliver is often called “advanced deployment”, as it requires high automation Service Meshes - Key element, and mostly identified with traffic shifting between different versions of the same application Actively managing the traffic within a K8s cluster, allows isolation, tracing and shifting traffic mainly implemented by It utilizes controlled methods like canary or blue/green deployment Observability - Most powerful way to use: feature toggling - enable, disable or hide features Combining logs, metrics and tracing for deep insights of an application, function or component

Slide 13

Slide 13

In other words

Slide 14

Slide 14

In other words images

Slide 15

Slide 15

In other words images Progressive Delivery! X

Slide 16

Slide 16

What can I do with with PD? And how does it effect me? I “pay” for: ● ● ● ● auto. rollbacks with failing updates be precises when an update is failing and when it is successful utilize extern, in depth metrics using different versions or configurations of an application

Slide 17

Slide 17

What can I do with with PD? And how does it affect me? I “pay” for: ● ● ● ● auto. rollbacks with failing updates be precises when an update is failing and when it is successful utilize extern, in depth metrics using different versions or configurations of an application I get: ● ● ● ● end-to-end deployment of an application (and this time truly!) reducing/eliminating blast radius GitOps in heart, no pipeline dependencies Pure control based on metrics and configurations

Slide 18

Slide 18

Flux & Flagger GitOps - Progressive Delivery Flux Declarative description in Git Automate Deployment from a cluster not a pipeline Push and sync code

Slide 19

Slide 19

Flux & Flagger GitOps - Progressive Delivery Flux Declarative description in Git Flagger Implements deployment strategy for automatic release process Automate Deployment from a cluster not a pipeline Can query metrics to gather feedback Push and sync code Run tests for conformance

Slide 20

Slide 20

How a Progressive Delivery can looks like % 10 90 %

Slide 21

Slide 21

How a Progressive Delivery can looks like GitOps % 10 90 Progressive Delivery %

Slide 22

Slide 22

How a Progressive Delivery can looks like % 50 50 %

Slide 23

Slide 23

How a Progressive Delivery can looks like 0% 10 0%

Slide 24

Slide 24

Enough slides, let’s have a look!

Slide 25

Slide 25

Simple Release

Slide 26

Slide 26

Progressive Delivery Release

Slide 27

Slide 27

Let’s stay in touch! maxkoerbaecher mkorbi mkoerbi icons by Freepik