Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Progressive Delivery Techniques with Flagger

Progressive Delivery Techniques with Flagger

An overview of the Progressive Delivery features of Flagger from KubeCon North America 2020

Stefan Prodan

December 02, 2020
Tweet

More Decks by Stefan Prodan

Other Decks in Technology

Transcript

  1. CICD - challenges Traceability • What app version is running

    on the cluster? • What happens if multiple builds run in parallel? Security • How to manage cluster auth? What if 2FA is required? • How to target multiple clusters? Configuration Drift & Rollback • How to deal with infra dependencies? • Rollback an app means rebuilding the image? • How to manage shared resources between apps?
  2. CD - challenges • What if my app misbehaves after

    begin deployed? • How can I run conformance tests after a deployment? • Can I bundle Kubernetes configuration changes with an app version? • How to rollback automatically? • Can I run multiple versions of an app in parallel? • How to A/B test between versions?
  3. Flagger Flagger is a progressive delivery tool that automates the

    release process for applications running on Kubernetes. It reduces the risk of introducing a new software version in production by gradually shifting traffic to the new version while measuring metrics and running conformance tests. Flagger comes with a declarative model for decoupling the deployment of apps on Kubernetes from the release process.
  4. Flagger - Traffic Management • Service Mesh ◦ Istio ◦

    Linkerd ◦ App Mesh • Ingress Controllers ◦ Contour ◦ Gloo ◦ NGINX ◦ Skipper
  5. Deployment Strategies • Canary Release (progressive traffic shifting) ◦ Applications

    that expose HTTP or gRPC APIs • A/B Testing (HTTP headers and cookies traffic routing) ◦ User-facing applications that need session affinity • Blue/Green (traffic mirroring) ◦ Idempotent APIs • Blue/Green (traffic switch) ◦ Stateful applications ◦ Legacy applications
  6. Links Flagger Repo https://github.com/weaveworks/flagger Flagger Docs https://docs.flagger.app Linkerd + Contour

    Demo https://github.com/stefanprodan/gitops-linkerd Istio Demo https://github.com/stefanprodan/gitops-istio