• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

Antonella FalboMaggio 27, 2026 5 min di lettura

GitOps: in Git we trust

DevOps
in git we trust
facebooktwitterlinkedinreddit

GitOps è una metodologia per gestire e deployare applicazioni e infrastrutture usando i Git repository come unica fonte di verità. È un approccio particolarmente vicino a chi lavora nel mondo DevOps e cloud-native, che porta le pratiche di IaC e CI/CD a un livello successivo: tutto passa da Git, tutto è tracciabile, tutto è riproducibile.

Dietro questa metodologia esiste una community e il “GitOps Working Group” che definisce principi volutamente agnostici su cui basarsi:

Recommended article
cloud data management
Novembre 4, 2025

The Cloud is drowning but I, I live by the river (and i have a NAS)

Arnaldo Morena

Arnaldo Morena

DevOps
  • Dichiarativo: un sistema gestito da GitOps deve avere il suo stato desiderato espresso in modo dichiarativo: si descrive cosa si vuole, non come ottenerlo passo per passo.
  • Versionato e immutabile: lo stato desiderato deve essere salvato in uno state store che garantisca immutabilità, versionamento e storia completa dei cambiamenti. Git è lo strumento più comune per questo, ma il principio riguarda le proprietà dello store, non lo strumento in sé.
  • Pull automatico: i software agent osservano lo state store e scaricano automaticamente le dichiarazioni dello stato desiderato dalla sorgente. Non è il sistema CI/CD che fa push verso il sistema, è il sistema stesso che fa pull.
  • Riconciliazione continua: i software agent osservano continuamente lo stato reale del sistema e cercano di allinearlo a quello desiderato. Questo “reconcile loop” è l’elemento cardine di GitOps: osserva lo stato corrente, lo compara con quello dichiarato nel repository e, se trova differenze, interviene per correggerle. Non è un’operazione saltuaria, ma un processo continuo che mantiene il sistema allineato nel tempo, scoraggia modifiche manuali e garantisce che qualsiasi deriva venga rilevata e corretta automaticamente.

Quindi possiamo intuire che lavorare con la metodologia GitOps ha caratteristiche ben precise. Lo stato desiderato deve essere espresso in modo dichiarativo, come già visto nei principi: al contrario dell’approccio imperativo, in cui si descrive passo per passo come arrivare al risultato, qui si dichiara cosa si vuole ottenere, rendendo il tutto più facile da capire, modificare e revisionare. Il formato deve essere leggibile per un umano: capire lo stato del sistema e le differenze tra una versione e l’altra deve essere semplice e immediato, il che è fondamentale per fare review efficaci, individuare errori rapidamente e ridurre il rischio che una modifica passi inosservata.

La code review deve essere veloce, con modifiche piccole e flusso fluido. Quando il processo di review è snello, si evita la tentazione di raggruppare troppe modifiche in un unico commit, spesso non correlate tra loro: una scorciatoia apparente che in realtà complica la revisione e aumenta il rischio di errori. Come le AI, anche noi abbiamo un contesto e, spoiler, è decisamente più piccolo di quanto pensiamo. Il codice deve essere versionato: avere una storia completa delle modifiche e un audit trail diventano quasi gratuiti, così come gestire in modo granulare chi ha accesso e chi può apportare cambiamenti.

Infine, le pull devono essere automatiche: è il sistema stesso che si occupa di recuperare lo stato desiderato dalla sorgente, senza intervento manuale, garantendo che il sistema sia sempre allineato a ciò che è dichiarato nel repository.

Questi elementi, tutti insieme e in sinergia, definiscono cosa significa fare GitOps in modo efficace. Ma quando ha senso valutarne l’adozione o meno?

Quando usarlo?

Se hai un cluster Kubernetes, dovresti prendere in considerazione GitOps. Non solo per gestire le applicazioni che ci girano sopra, ma anche per gestire l’infrastruttura stessa: dalla definizione dei namespace, passando per la gestione dei permessi, fino all’installazione di servizi. Se esiste un manifesto Kubernetes, molto probabilmente è già un ottimo segnale.

Quando non usarlo?

GitOps, ovviamente, non è la risposta a tutte le situazioni. Se il team è piccolo e l’infrastruttura semplice, potrebbe risultare un overhead elevato impostare il workflow e seguirlo correttamente, almeno all’inizio. Può diventare complicato anche in ambienti dove la quantità di commit è alta e, di conseguenza, anche le PR review: il rischio è che diventi un collo di bottiglia. Soprattutto se la code review, come detto sopra, non è veloce.

Può essere controproducente anche quando la metodologia non è ancora stata assimilata davvero: si finisce per avere metà delle cose gestite tramite Git e metà a mano, il che è peggio di non usarlo affatto. Il segnale che GitOps sta funzionando è quando, di fronte a un problema in produzione, il primo istinto è risolverlo passando dal repository e non intervenendo direttamente sul cluster.

Chi fa il lavoro sporco?

Esistono diversi tool che implementano il pattern, ma i nomi più gettonati e da cui consiglierei di partire sono ArgoCD e Flux. Entrambi sono progetti Graduated della CNCF, quindi entrambi hanno un ottimo biglietto da visita.

  • ArgoCD, probabilmente il più diffuso e mio preferito: la UI è chiara e permette di visualizzare lo stato dei cluster e le differenze tra stato desiderato e attuale.
  • Flux, da prendere in considerazione perché incarna maggiormente la filosofia GitOps nella sua forma più pura, con una curva di apprendimento, a mio parere, leggermente più alta rispetto ad ArgoCD.

GitOps oltre la gestione applicativa

Una delle cose che mi piace di più è che GitOps non si limita a gestire le applicazioni che girano sul cluster: può gestire anche l’infrastruttura stessa. Namespace, permessi, CRD, componenti di sistema.

Chi ha provato a gestire un Helm chart con Terraform sa cosa vuol dire: installare il provider, configurarlo, definire la risorsa helm_release, gestire i values. Funziona, ma con GitOps lo risolvi con un semplice manifest yaml, dove le diff sono leggibili e chiare, cosa che con Terraform e Helm non è sempre garantita.

Con GitOps dichiari lo stato desiderato, punti al chart, definisci i values inline o in un file dedicato, e il tool si occupa del resto. Se qualcuno modifica manualmente una risorsa sul cluster, intenzionalmente o meno, il sistema la riporta allo stato dichiarato su Git. Con Terraform, quel drift non lo vedi finché non esegui un terraform plan, o finché non hai una pipeline dedicata che lo controlla per te.

Non significa che non uso più Terraform: per provisioning di infrastruttura cloud, reti, database, è ancora lo strumento giusto. Ad ogni tool il suo utilizzo migliore. Per tutto quello che vive dentro il cluster Kubernetes, GitOps è una soluzione più naturale e più leggibile.

Guardando GitOps attraverso la lente del framework CAMS, il quadro diventa ancora più chiaro. Automatizza i processi di deploy e riconciliazione, rende ogni cambiamento tracciabile e misurabile attraverso la storia del repository, favorisce la collaborazione e la trasparenza grazie a un formato leggibile e condiviso e, non da ultimo, spinge verso una cultura in cui le modifiche passano da un processo strutturato invece che da interventi manuali. Adottarlo porta a un miglioramento concreto della produttività, stabilità, affidabilità e sicurezza: non come effetto collaterale, ma come conseguenza naturale di un approccio ben assimilato.

Bonus: vuoi provare?

Ho preparato un playground locale che avvia un cluster Kubernetes con kind e installa ArgoCD tramite Terraform. Troverete qualche esempio, per cominciare e per vedere il reconcile loop in azione.

Link

https://opengitops.dev
https://github.com/falbocodes/gitops-playground
Codemotion Collection Background
Il meglio della settimana
Selezionati per te

Vuoi scoprire più articoli come questo? Dai un’occhiata alla collection Il meglio della settimana dove troverai sempre nuovi contenuti selezionati dal nostro team.

Share on:facebooktwitterlinkedinreddit
Antonella Falbo
Google I/O 2026: Le novità su Gemini Spark, i nuovi modelli e il futuro di workspace
Previous Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions