Au cœur du modèle GitOps se trouve l’utilisation du modèle de contrôleur. Cela est en outre facilité par le patron opérateur d’un point de vue Kubernetes ou OpenShift, où les opérateurs sont des extensions logicielles utilisant des ressources personnalisées pour gérer des applications et leurs composants.
Il serait regrettable de ne pas mentionner Argo CD, un outil GitOps qui facilite les workflows GitOps. Argo CD est un outil déclaratif open source pour l’ intégration continue et le déploiement continu (CI/CD) des applications. En tant que contrôleur Kubernetes, Argo CD supervise en permanence les définitions et configurations des applications actives, comparant leur état réel sur le cluster à l’état souhaité tel que défini dans un dépôt Git.
Mais GitOps n’est pas un produit, un plugin ou une plateforme unique. Les workflows GitOps aident les équipes à gérer l’infrastructure informatique via des processus qu’elles utilisent déjà dans l’application. Selon un blog GitLab, GitOps nécessite trois composants principaux : GitOps = IaC + PRs ou MRs + CI/CD
- IaC: Infrastructure as Code (IaC) repose sur la pratique consistant à stocker la totalité des configurations d’infrastructure sous forme de code. GitOps utilise un dépôt Git comme source d’information unique pour les définitions d'infrastructure. Git assure le suivi de toutes les modifications apportées à la gestion du code.
- PR ou MR : GitOps utilise les pull requests (PR) ou les merge requests (MR) comme mécanisme de changement pour toutes les mises à jour de l’infrastructure. Cet espace permet aux équipes de collaborer via des avis et des commentaires, et constitue le point central des approbations formelles.
- CI/CD : GitOps automatise les mises à jour de l’infrastructure à l’aide d’un workflow Git avec intégration continue (CI) et livraison continue (CD). Lorsque du nouveau code est fusionné, le pipeline CI/CD exécute la modification dans l’environnement. Toute dérive de configuration, telle que les modifications manuelles ou les erreurs, est remplacée par l’automatisation GitOps, ce qui permet à l’environnement de converger vers l’état souhaité défini dans Git, assurant ainsi des opérations continues (CO) :