Nella sua essenza, il modello GitOps utilizza il pattern del controller. Questo è ulteriormente favorito dal pattern operatore da una prospettiva Kubernetes o OpenShift, in cui gli operatori sono estensioni software che utilizzano risorse personalizzate per gestire le applicazioni e i loro componenti.
Sarebbe un errore non menzionare Argo CD, uno strumento GitOps che facilita i workflow GitOps. Argo CD è uno strumento dichiarativo open-source per l'integrazione continua e il deployment continuo (CI/CD) delle applicazioni. Implementato come controller Kubernetes, Argo CD monitora continuamente le definizioni e le configurazioni delle applicazioni in esecuzione, confrontando lo stato attuale e live del cluster con lo stato desiderato definito in un repository Git.
Tuttavia, GitOps non è un singolo prodotto, plug-in o piattaforma. I workflow GitOps aiutano i team a gestire l'infrastruttura IT attraverso i workflow che già utilizzano nello sviluppo dell'applicazione. Prendendo in prestito ciò che è scritto in un blog di GitLab, GitOps richiede tre componenti principali: GitOps =IaC + PRs o mRS + CI/CD
- IaC: Infrastructure as Code (IaC) è la pratica di mantenere tutta la configurazione dell'infrastruttura memorizzata come codice. GitOps utilizza un repository Git come singola fonte affidabile per le definizioni di infrastruttura. Git tiene traccia di tutte le modifiche alla gestione del codice.
- PR o MR: GitOps utilizza una pull request (PR) o una merge request (MR) come meccanismo di modifica per tutti gli aggiornamenti dell'infrastruttura. Qui i team possono collaborare tramite recensioni e commenti e dove avvengono le approvazioni formali.
- CI/CD: GitOps automatizza gli aggiornamenti dell'infrastruttura utilizzando un workflow Git con Integrazione continua (CI) e distribuzione continua (CD). Quando il nuovo codice viene unito, la pipeline CI/CD esegue la modifica nell'ambiente. Qualsiasi deriva di configurazione, come modifiche o errori manuali, viene sovrascritta dall'automazione di GitOps in modo che l'ambiente converga sullo stato desiderato definito in Git, generando così operazioni continue (CO):