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