GitOps come pattern
GitOps — termine coniato da Alexis Richardson (Weaveworks) nel 2017 — è un paradigma di continuous delivery dove:
- Git è la source of truth della configurazione desiderata del sistema
- Un controller nel cluster osserva sia Git sia lo stato reale
- Quando lo stato reale devia dal desiderato, il controller riconcilia
Differenza dal CI/CD tradizionale (push model): il pull dal cluster riduce esposizione di credenziali CI e uniforma rollback/rollforward come commit Git.
Argo CD
Argo CD — sviluppato internamente da Intuit e rilasciato open source nel 2018 — è uno dei due GitOps controller mainstream (insieme a Flux). CNCF Incubating da aprile 2020, Graduated dicembre 2022. Licenza Apache 2.0.
Al luglio 2020 la versione 1.6 consolida la maturità di produzione con sync waves, phases, hooks pre/post sync.
Funzionamento
Argo CD introduce il concetto di Application: custom resource K8s che punta a:
- Git repository + path + revision (branch, tag, commit) come sorgente
- Destination cluster + namespace come target
- Sync policy (manuale, automatico con prune/self-heal)
Argo CD:
- Clona il repo Git
- Renderizza i manifest (helm, kustomize, plain YAML, jsonnet)
- Confronta con lo stato corrente del cluster
- Mostra le differenze in UI e calcola il piano
- Applica le modifiche (sync) manualmente o automaticamente
Architettura multi-cluster
Un’installazione Argo CD può gestire molti cluster da un punto centrale:
- Un cluster di controllo (management)
- N cluster target (staging, production, edge)
Le Application in un cluster di controllo possono targettare cluster remoti via kubeconfig. L’UI web aggrega lo stato di tutti.
App of Apps e ApplicationSets
Per gestire decine/centinaia di applicazioni:
- App of Apps — un’Application che deploy altre Application (ricorsivo)
- ApplicationSet (dalla 2.0, 2021) — template + generator che crea N Application da matrix (es. una per cluster + app)
Scala a migliaia di applicazioni con gestione dichiarativa.
Argo Workflows, Argo Events, Argo Rollouts
Ecosistema Argo Project più ampio:
- Argo Workflows — orchestratore di pipeline in K8s native
- Argo Events — event-driven trigger
- Argo Rollouts — progressive deployments (canary, blue/green) avanzati
Concorrente: Flux
Flux CD (Weaveworks, poi CNCF) è l’alternativa principale:
- Flux v2 (2021) supera la v1 con architettura modulare basata su controller separati
- Più focus su GitOps puro senza UI web built-in
- Più “piccolo” e componibile
Argo CD domina per progetti che vogliono UI ricca, Flux per chi preferisce pura CLI/kubectl.
Nel contesto italiano
Argo CD diventa standard in team K8s italiani tra 2020-2022:
- Banche e assicurazioni con multi-cluster prod/dev
- Telco su Kubernetes managed
- PA che adottano GitOps come pattern di governance
Riferimenti: Argo CD 1.6 (luglio 2020). Intuit (sviluppo originale, 2018). CNCF Incubating (aprile 2020) → Graduated (dicembre 2022). Licenza Apache 2.0. GitOps (Alexis Richardson, Weaveworks, 2017). Argo Project: CD, Workflows, Events, Rollouts.
