GitOps: Git come source of truth
Il termine GitOps è coniato da Alexis Richardson (Weaveworks) nel 2017. Principio: ogni stato del cluster deve esistere in Git, e un agente nel cluster fa continuous reconciliation. Flux è il primo strumento a implementare questo modello (2017).
Da Flux 1 a Flux 2
Flux v1 (2017) era un single-purpose binary monolitico. Weaveworks e la community collaborano con Microsoft sulla GitOps Toolkit (2020), risultando in Flux v2: un set di controller Kubernetes modulari.
Flux 2.0 GA è rilasciato il 30 giugno 2021. Licenza Apache 2.0. Scritto in Go. Donato alla CNCF, graduated il 30 novembre 2022 (ArgoCD ha ottenuto lo stesso status il 6 dicembre 2022).
Architettura modulare
I controller di Flux 2:
- source-controller — fetch sorgenti (Git, Helm repo, OCI, S3, bucket)
- kustomize-controller — applica Kustomize build
- helm-controller — installa e upgrade Helm release
- notification-controller — webhook eventi
- image-reflector-controller — policy su tag immagine
- image-automation-controller — auto-commit su nuovi tag
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 | |
|---|---|---|
| Filosofia | Controller modulari | Applicazione unica + UI |
| UI | Nessuna ufficiale (Weave GitOps, Capacitor) | Ricca, built-in |
| Multi-tenancy | Namespace-based | Project-based |
| Helm | helm-controller nativo | helm template |
| Image automation | Built-in | Image Updater (separate) |
| DX | CLI-first | UI-first |
Molti team usano entrambi: ArgoCD per dev experience UI, Flux per automation di basso livello.
Feature
- OCI artifacts — manifest pubblicati come OCI, non solo Git
- Multi-tenancy isolato — namespace + RBAC
- Image automation — bump tag in Git su nuovo push registry
- Notifications — Slack, Teams, Discord, GitHub status
- Progressive delivery — integrazione con Flagger (canary, blue/green)
- Sops integrazione per secrets encrypted in Git
Nel contesto italiano
Flux CD è usato in:
- PA digitale — progetti con multi-tenant GitOps
- Banche — dove modularità e composizione sono valore
- MSP — gestione multi-cluster cliente
- Team platform engineering che integrano CI + GitOps
- Ambienti con Weaveworks (Weave GitOps Enterprise)
Dopo la chiusura di Weaveworks (febbraio 2024), il progetto è passato completamente alla community CNCF, con ControlPlane come sponsor principale.
Riferimenti: Flux CD 2.0 GA (30 giugno 2021). Weaveworks. Riscrittura come GitOps Toolkit. Licenza Apache 2.0. Scritto in Go. CNCF graduated (30 novembre 2022; ArgoCD graduated 6 dicembre 2022). Controller modulari: source, kustomize, helm, notification, image automation.
