Slide 1

Slide 1 text

December 12, 2022 The evolution of Flux From Inception to CNCF Graduation Stefan Prodan Principal Engineer at Weaveworks Core maintainer of Flux & Flagger

Slide 2

Slide 2 text

Flux v1 A DevOps tool that automatically ensures that the state of a cluster matches the config in Git. 2016 - 2021 275 contributors 6900 stars

Slide 3

Slide 3 text

CD - Before Flux & GitOps

Slide 4

Slide 4 text

CD - With Flux & GitOps

Slide 5

Slide 5 text

Flux v1 team over the years ● Alexis Richardson (coined GitOps and come up with the Flux name) ● Michael Bridgen ● Peter Bourgon ● Paul Bellamy ● Phil Winder ● Sam Broughton ● Alfonso Acosta ● Stefan Prodan ● Hidde Beydals ● Nick Cabatoff ● Justin Barrick ● And many more ● Matthias Radestock ● Bryan Boreham ● Jordan Pellizzari ● Marc Carré ● Ilya Dmitrichenko ● Aaron Kirkbride ● Adam Harrison ● Elena Morozova

Slide 6

Slide 6 text

Flux v1 Timeline ● 2016 Flux made OSS by Weaveworks ● 2016 Flux adds container image automation ● 2017 General Available release ● 2018 Flux supports verifying commit signatures (OpenPGP) ● 2018 Flux adds native support for Helm (HelmRelease CRD) ● 2019 Weavework donates Flux to CNCF (sandbox) ● 2019 Flux adds support for Kustomize (manifests generation) ● 2019 Flux adds garbage collection ● 2020 Flux adds secret decryption (Mozilla SOPS) ● 2021 Deprecated in favour of Flux v2

Slide 7

Slide 7 text

Flux v1 - GitOps & Deploy Automation

Slide 8

Slide 8 text

Flux v2 A secure multi-tenant Continuous Delivery platform for Kubernetes and beyond. 2020 - present 210 contributors 4200 stars

Slide 9

Slide 9 text

Flux - Multi-Cluster Continuous Delivery

Slide 10

Slide 10 text

Flux - Kubernetes Controllers Source Controller Fetch, verify and cache resources from Git, OCI and S3-compatible storage Kustomize Controller Server-side apply, GC, decryption and dependency management for Kustomize overlays Helm Controller Manage the life cycle of Helm Releases Notification Controller Receive and dispatch events from/to external systems Image Reflector Controller Fetch metadata of OCI artifacts from container registries Image Automation Controller Update Kubernetes YAML in Git when new artifacts are available

Slide 11

Slide 11 text

Flux team (December 2022) Maintainers ● Hidde Beydals ● Stefan Prodan ● Philip Laine ● Aurel Canciu ● Sunny Gogoi ● Somtochi Onyekwere ● Soule Ba ● Paulo Gomes ● Sanskar Jaiswal ● Max Jonas Werner Community & DX ● Tamao Nakahara ● Daniel Holbach ● Stacey Potter ● Scott Rigby ● Kingdon Barrett ● Pinky Ravi ● Vanessa Abankwah ● Juozas Gaigalas

Slide 12

Slide 12 text

Flux v2 timeline ● 2020 Flux v2 kickstart ● 2021 Flux adds bootstrap and auto-update capabilities ● 2021 Flux advances from CNCF sandbox to incubation ● 2021 Flux adds support for S3-compatible storage ● 2021 First Flux extension tf-controller (Weaveworks OSS) ● 2022 Flux adopts server-side apply (drift detection & GC) ● 2022 Flux v2 powers GitOps for AWS, Azure, VMware, D2IQ, DoD ● 2022 Weavework releases Weave GitOps an OSS Flux UI ● 2022 Flux adds support for OCI Artifacts & Cosign verification ● 2022 Flux becomes a CNCF graduated project

Slide 13

Slide 13 text

Flux v2 - Security audit ● 2021 First independent security audit (OSTIF & ADA Logics) ○ We’ve addressed all the security issues found in record time ○ We’ve put in place an RFC process for changes to Flux security posture ○ Started continuous fuzzing for all Flux controllers and packages ● 2022 The Flux team focuses on security hardening ○ We’ve found and addressed a series of multi-tenancy vulnerabilities (locking down kustomize, helm & kubeconfig) ○ We’ve improved fuzzing and the test coverage of sensitive operations ○ Flux ships with signed releases/binaries/images and SBOM ● 2023 Flux is scheduled for a 2nd security audit

Slide 14

Slide 14 text

Flux - Tooling ● Flux CLI is a fully-fledged solution for installing, upgrading, operating and debugging Flux ● Flux Terraform Provider offers an alternative to Flux CLI install/upgrade features ● Flux comes with GitHub Actions for upgrading Flux and driving apps promotions with PRs ● Flux Go client offers programmatic access to Kubernetes API for operating and observing Flux ● Flux comes with Grafana dashboards for monitoring ● Weaveworks offers an OSS Web UI for Flux

Slide 15

Slide 15 text

Flux - Kustomize integration ● Flux Kustomization CRD is the counterpart of Kustomize config ● Flux builds Kustomize overlays in a secure manner ○ No remote bases (Flux sources are cached &subject to policy) ○ No plugins or KRM (shell-execing can’t be multi-tenant) ○ No Helm inflator (Flux has native Helm support) ● Garbage collection for stale Kustomize generated manifests ● Encryption/Decryption for Kustomize secrets generator ● Flux native variable substitutions instead of Kustomize vars ● Dependency management and health checking for overlays

Slide 16

Slide 16 text

Flux - Helm integration ● Declarative helming with HelmRepository & HelmRelease CRDs ● Flux helm-controller is built on top of the Helm Go SDK ● Support for all Helm operations (including tests & pre-post hooks) ● Unlike Helm, Flux manages CRDs upgrades ● Support for Kustomize patches as Helm post-render action ● Automated Helm upgrades based on semver ranges ● Automated rollback based on health checks and test results ● Support for charts stored in container registries as OCI artifacts

Slide 17

Slide 17 text

Flux - Multi-tenancy Mode Flux enables multi-tenancy by allowing platform admins to assign restricted Kubernetes accounts to the tenants’ sources. When Flux reconciles the tenant’s Kubernetes resources, it does so by impersonating the tenant’s account, thus enforcing the isolation boundary as defined by platform admins in their Git repository.

Slide 18

Slide 18 text

Flux - OCI support for Kubernetes configs $ flux push artifact oci://ghcr.io/org/my-app-config:1.0.0 –path ./deploy $ cosign sign ghcr.io/org/my-app-config:1.0.0 –key cosign.key

Slide 19

Slide 19 text

Flux - GA Roadmap ● GitOps GA ○ Generally available release for the Flux GitOps APIs, and the Flux Git bootstrap & webhooks functionalities. ● Helm GA ○ Generally available release for the Flux Helm APIs and the Flux Helm functionalities. ● Notifications GA ○ Generally available release for the Flux Events & Alerting APIs and the Flux CLI notifications functionalities. ● Image Automation (TBA) ● OCI Artifacts (TBA)

Slide 20

Slide 20 text

Confidential do not distribute 2 0 Thank you