GitOps
Définition
GitOps est un cadre opérationnel qui prend les meilleures pratiques DevOps (contrôle de version, collaboration, audit des modifications, immutabilité) et les applique à l’infrastructure et au déploiement d’applications. Le dépôt Git est la source unique de vérité pour l’état souhaité du système.
Les modifications de l’infrastructure ou des applications sont effectuées en mettant à jour les manifests Git. Un opérateur (contrôleur) réconcilie en continu l’état live avec l’état Git, appliquant ou revertant automatiquement les modifications.
Principes GitOps
- Déclaratif : Infrastructure décrite en code (manifests YAML)
- Contrôle de version : Toutes les modifications suivies dans Git avec historique
- Audit : Chaque modification a un message de commit et un auteur
- Automatisé : Réconciliation automatique de l’état live avec l’état souhaité
- Pull-based : Le cluster tire depuis Git (pas de push par le CI)
Flux GitOps
Développeur → Pull Request → Code Review → Merge → Git
↓
Opérateur GitOps
↓
État du cluster
(auto-réconcilié)
Outils GitOps
|| Outil | Type | Notes | ||——|——|——-| || Argo CD | Kubernetes | Outil GitOps le plus populaire pour K8s | || Flux CD | Kubernetes | Projet CNCF, plus simple qu’Argo CD | || Atlantis | Terraform | GitOps pour l’état Terraform | || Drift Controller | Kubernetes | Détecte et rapporte les dérives | || Weave GitOps | Multi-cluster | Gestion GitOps unifiée |
GitOps vs CI/CD traditionnel
|| Aspect | CI/CD traditionnel | GitOps | ||——–|——————-|——–| || Déclencheur de déploiement | Push du pipeline CI | Modification Git + pull-based | || Source d’état | Serveur CI | Dépôt Git | || Accès au cluster | CI push vers le cluster | Le cluster tire depuis Git | || Détection de dérive | Manuelle | Automatique (continue) | || Rollback | Pipeline manuel | Revert du commit, auto-revert |
Avantages GitOps
- Piste d’audit : Chaque modification a un historique Git
- Rollback : Git revert = rollback instantané
- Détection de dérive : Détection automatique de la dérive de configuration
- Sécurité : Pas d’identifiants de cluster exposés au CI
- Collaboration : Gestion des modifications par PR
- Reprise après sinistre : Reconstruction à partir des manifests Git
Limitations GitOps
- Courbe d’apprentissage : Nécessite une maîtrise de Git et YAML
- Complexité : Pas adapté aux déploiements simples
- Latence : La réconciliation n’est pas instantanée (secondes à minutes)
- Portée : Principalement pour Kubernetes ; les autres plateformes ont un support limité
Termes associés
- Terraform
- Argo CD — outil GitOps de référence pour Kubernetes
- Kubernetes — pipeline de déploiement traditionnel
- Helm — gestionnaire de paquets K8s, souvent utilisé avec GitOps
- Flux — outil GitOps CNCF
Références
- GitOps.tech : https://www.gitops.tech/
- Docs Argo CD : https://argoproj.github.io/cd/
- Docs Flux : https://fluxcd.io/
- Livre blanc CNCF GitOps : https://www.cncf.io/whitepapers/gitops/