GitOps: Git as source of truth
The term GitOps is coined by Alexis Richardson (Weaveworks) in 2017. Principle: every cluster state must exist in Git, and an agent in the cluster does continuous reconciliation. Flux is the first tool to implement this model (2017).
From Flux 1 to Flux 2
Flux v1 (2017) was a monolithic single-purpose binary. Weaveworks and the community collaborate with Microsoft on the GitOps Toolkit (2020), resulting in Flux v2: a set of modular Kubernetes controllers.
Flux 2.0 GA is released on 30 June 2021. Apache 2.0 licence. Written in Go. Donated to CNCF, graduated on 30 November 2022 (ArgoCD reached the same status on 6 December 2022).
Modular architecture
Flux 2 controllers:
- source-controller — fetch sources (Git, Helm repo, OCI, S3, bucket)
- kustomize-controller — applies Kustomize build
- helm-controller — installs and upgrades Helm releases
- notification-controller — event webhooks
- image-reflector-controller — image tag policies
- image-automation-controller — auto-commit on new tags
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata: { name: my-app, namespace: flux-system }
spec:
interval: 1m
url: https://github.com/org/gitops-repo
ref: { branch: main }
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata: { name: my-app }
spec:
interval: 10m
path: ./apps/prod
sourceRef: { kind: GitRepository, name: my-app }
prune: true
Flux vs ArgoCD
| Flux CD | ArgoCD | |
|---|---|---|
| Philosophy | Modular controllers | Single app + UI |
| UI | No official (Weave GitOps, Capacitor) | Rich, built-in |
| Multi-tenancy | Namespace-based | Project-based |
| Helm | Native helm-controller | helm template |
| Image automation | Built-in | Image Updater (separate) |
| DX | CLI-first | UI-first |
Many teams use both: ArgoCD for UI DX, Flux for low-level automation.
Features
- OCI artifacts — manifests published as OCI, not just Git
- Isolated multi-tenancy — namespace + RBAC
- Image automation — bump tag in Git on new registry push
- Notifications — Slack, Teams, Discord, GitHub status
- Progressive delivery — integration with Flagger (canary, blue/green)
- Sops integration for encrypted secrets in Git
In the Italian context
Flux CD is used in:
- Digital PA — multi-tenant GitOps projects
- Banks — where modularity and composition are value
- MSPs — client multi-cluster management
- Platform engineering teams integrating CI + GitOps
- Environments with Weaveworks (Weave GitOps Enterprise)
After the closure of Weaveworks (February 2024), the project passed completely to the CNCF community, with ControlPlane as main sponsor.
References: Flux CD 2.0 GA (30 June 2021). Weaveworks. Rewrite as GitOps Toolkit. Apache 2.0 licence. Written in Go. CNCF graduated (30 November 2022; ArgoCD graduated 6 December 2022). Modular controllers: source, kustomize, helm, notification, image automation.
