Questo è il secondo articolo della nostra serie di articoli su Caravan, la piattaforma cloud native di Bitrock basata sullo stack di HashiCorp. Cliccate qui per la prima parte.
Cos’è GitOps
GitOps è “un paradigma o un insieme di pratiche che consente agli sviluppatori di svolgere compiti che di solito rientrano nella sfera di competenza delle operazioni IT”. GitOps richiede di descrivere e osservare i sistemi con specifiche dichiarative che alla fine costituiscono la base di tutto ciò che è continuo” (fonte: Cloudbees).
GitOps sostiene il principio che Git è l’unica fonte di verità. GitOps richiede che lo stato desiderato del sistema sia memorizzato nel controllo di versione, in modo che chiunque possa visualizzare l’intero audit trail delle modifiche. Tutte le modifiche allo stato desiderato sono commit completamente tracciabili, associati alle informazioni sul committer, agli ID dei commit e alle marche temporali.
Insieme a Terraform, GitOps consente di creare un’infrastruttura immutabile come codice. Quando abbiamo bisogno di aggiungere o eseguire un aggiornamento, dobbiamo modificare il nostro codice e creare una Merge/Pull Request per consentire ai nostri colleghi di esaminare le nostre modifiche. Dopo aver convalidato le nostre modifiche, effettuiamo il merge nel ramo principale e lasciamo che le nostre pipeline CI/CD applichino le modifiche ai nostri ambienti infrastrutturali.
Un altro approccio in GitOps evita di attivare una pipeline CI/CD dopo l’unione di una nuova modifica. Invece, il sistema estrae automaticamente le nuove modifiche dal codice sorgente ed esegue le azioni necessarie per allineare lo stato attuale del sistema al nuovo stato desiderato dichiarato nel codice sorgente.
Come GitOps ci ha aiutati a costruire Caravan
GitOps ci fornisce la capacità e la struttura per automatizzare il provisioning di Caravan. In pratica, GitOps si ottiene combinando IAC, repository Git, MR/PR e pipeline CI/CD.
Innanzitutto definiamo le nostre risorse infrastrutturali come codice. Ogni livello dello stack di Caravan è costruito secondo i principi di GitOps, e il primo è ovviamente il livello Infrastruttura, che consente di dichiarare i blocchi necessari per i principali cloud provider. Le reti, le risorse di calcolo e le regole di sicurezza sono tutte monitorate nel repository Git.
Il livello successivo è quello della Piattaforma, dove vengono messi online i componenti necessari con la configurazione richiesta. Infine, dichiariamo i componenti di supporto alle applicazioni distribuiti sulla piattaforma.
Attualmente, le applicazioni vengono distribuite con un approccio più semplice, sfruttando i file standard di Terraform che abbiamo chiamato “carrelli”. Nomad stesso può estrarre i file di configurazione dal repository git, ma manca una soluzione come ArgoCD per estrarre automaticamente tutti i descrittori di lavoro di Nomad da git.
Vuoi saperne di più su Caravan? Visita il sito dedicato , dai un’occhiata alla GitHub repository ed esplora la nostra documentazione.
Authors: Matteo Gazzetta, DevOps Engineer @ Bitrock – Simone Ripamonti, DevOps Engineer @ Bitrock