Le GitOps peut être considéré comme une évolution de l'IaC (Infrastructure-as-Code) qui utilise Git comme système de contrôle des versions pour les configurations de l'infrastructure. L'IaC respecte généralement une approche déclarative de la gestion de l'infrastructure en définissant l'état souhaité du système et en suivant son état réel.
Avec le GitOps, vous devez aussi déclarer l'état souhaité du système. Vous pouvez en outre contrôler dans Git les versions de l'ensemble du code source et des fichiers de configuration, à l'aide d'outils déclaratifs.
Les pipelines CI/CD sont généralement déclenchés par un événement externe (du code transmis à un référentiel, par exemple). Dans le workflow GitOps, des requêtes « pull » entraînent des changements qui modifient l'état du système dans le référentiel Git.
Le déploiement d'une nouvelle version dans le cadre d'un workflow GitOps s'effectue à l'aide d'une requête « pull » qui vient modifier l'état déclaré du cluster. L'opérateur GitOps, situé entre le pipeline GitOps et le système d'orchestration, détecte la validation (« commit ») et déclare le nouvel état reçu de Git.
Une fois les changements validés et fusionnés, ils sont automatiquement répercutés sur l'infrastructure. Les développeurs peuvent continuer à suivre le workflow standard et les pratiques CI/CD.
L'opérateur utilisé pour le modèle GitOps est souvent un opérateur Kubernetes. L'opérateur compare l'état souhaité qui a été déclaré dans le référentiel avec l'état réel de l'infrastructure déployée, et met à jour l'infrastructure en cas de différence. Il peut également surveiller un référentiel d'images de conteneurs et procéder à des mises à jour selon le même principe afin de déployer de nouvelles images.
L'observabilité, c'est-à-dire la capacité d'un système à pouvoir être observé, est un concept important du GitOps. Elle permet de vérifier que l'état souhaité et l'état observé (ou état réel) correspondent.
Grâce aux requêtes « pull » et à un système de contrôle des versions tel que Git, vous bénéficiez d'une bonne visibilité sur le processus de déploiement. Vous pouvez ainsi voir et suivre les changements apportés au système, accéder à un journal d'audit et restaurer des versions précédentes en cas de problème.
Le workflow GitOps augmente la productivité et accélère le développement et le déploiement, tout en améliorant la stabilité et la fiabilité des systèmes.