GitOps è noto come un framework operativo che prende le best practice del DevOps, come CI/CD, version control e collaborazione, e le applica all'automazione dell'infrastruttura. GitOps è un insieme di pratiche basate sul codice che utilizzano Git, un sistema di version control open-source, per gestire le configurazioni di infrastruttura e applicazioni. Git è l'unica fonte di verità, e le pull request vengono usate per verificare e gestire/distribuire automaticamente le modifiche all'infrastruttura. Proprio come gli sviluppatori usano il codice sorgente delle applicazioni, i team operativi che praticano GitOps usano l'infrastruttura come codice (file di configurazione archiviati come codice) per generare lo stesso ambiente infrastrutturale ad ogni deploy. In breve, GitOps utilizza processi e strumenti simili a quelli dello sviluppo software per gestire l'infrastruttura, garantendo l'automazione di cui i team hanno bisogno.
Come funziona GitOps?
Poiché GitOps coinvolge Git come sistema di version control, può essere considerato un avanzamento dell'Infrastructure as Code (IaC). In GitOps, le modifiche vengono attivate tramite pull request che cambiano lo stato nel repository Git.
Un workflow GitOps per aggiornare o creare una nuova funzionalità è il seguente:
Aprire una pull request per la nuova funzionalità su Git
Revisionare il codice e fare il merge su Git
Git attiverà automaticamente pipeline CI e di build, eseguirà i test, applicherà le modifiche all'infrastruttura e creerà — in un ambiente basato su container — una nuova immagine che viene poi caricata nel registry
Nello specifico per le applicazioni, si possono usare strumenti di deployment per aggiornare automaticamente la versione in esecuzione su, ad esempio, un cluster Kubernetes o un altro prodotto serverless
I workflow di GitOps sono pensati per migliorare la produttività e la velocità di sviluppo e deploy, garantendo al contempo che i sistemi rimangano stabili e affidabili!
Pro e Contro di GitOps
Di seguito i principali pro e contro associati a GitOps:
Pro
Aumenta la produttività del team DevOps, che può distribuire istantaneamente nuove configurazioni dell'infrastruttura. Se le modifiche non funzionano come previsto, la cronologia di Git consente al team di tornare facilmente a uno stato stabile
Garantisce un deploy più rapido, poiché il team non deve passare da uno strumento all'altro per distribuire l'applicazione (le modifiche all'applicazione e all'infrastruttura possono essere distribuite con gli stessi strumenti)
Porta una standardizzazione end-to-end al workflow
Può scalare su centinaia di cluster Kubernetes
Poiché Git viene utilizzato per archiviare le informazioni complete dell'infrastruttura distribuita, le modifiche possono essere facilmente tracciate e si incoraggia una cultura di condivisione della conoscenza nei team
Con l'automazione nella definizione e nel testing dell'infrastruttura, molto lavoro manuale scompare. Il team diventa più produttivo, mentre i tempi di inattività si riducono grazie alla capacità di rollback/revert. GitOps può ridurre significativamente i costi!
Contro
GitOps incoraggia la collaborazione, ma a volte diventa anche un lavoro lungo e tedioso. Ad esempio, il processo di approvazione in GitOps comprende molte fasi, come la creazione di una merge request, l'approvazione delle modifiche e il loro deploy. Gli ingegneri abituati a fare modifiche manuali e rapide potrebbero trovare l'intero processo dispendioso in termini di tempo.
La cultura collaborativa richiede anche disciplina da parte di tutti i membri per garantire l'impegno nel processo. Inoltre, i team devono scrivere e formalizzare tutto affinché GitOps funzioni correttamente.
Riepilogo
GitOps è un framework potente per gestire l'infrastruttura moderna con un focus sull'esperienza dello sviluppatore. Permette di gestire l'infrastruttura dallo stesso sistema di version control usato per lo sviluppo delle applicazioni, mettendo i team nelle condizioni di avere un ambiente collaborativo centralizzato con maggiore affidabilità e stabilità del sistema.
lucavallin

