Aller au contenu principal

Introduction au GitOps


Table des matières

  1. Qu'est-ce que le GitOps ?
  2. Les 4 principes du GitOps
  3. Pourquoi adopter GitOps ?
  4. Cas d'utilisation
  5. GitOps et Kubernetes
  6. Exercices pratiques

1 - Qu'est-ce que le GitOps ?

Définition

GitOps est une méthodologie de déploiement continu qui utilise Git comme source unique de vérité pour l'infrastructure et les applications déclaratives.

Origine

  • 2017 : Terme inventé par Weaveworks
  • Évolution naturelle de l'Infrastructure as Code (IaC)
  • Popularisé avec l'essor de Kubernetes

En une phrase

GitOps = Infrastructure as Code + Pull Request + Continuous Deployment

🔝 Retour à la table des matières


2 - Les 4 principes du GitOps

Principe 1 : Déclaratif

# L'état désiré est décrit, pas les actions
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3 # Je veux 3 réplicas
# Pas : "scale up de 2 à 3"
ImpératifDéclaratif
kubectl scale --replicas=3replicas: 3 dans YAML
"Fais cette action""Voici l'état souhaité"
Non reproductibleReproductible

Principe 2 : Versionné et Immuable

# Tout dans Git
infrastructure/
├── apps/
│ ├── frontend.yaml
│ └── backend.yaml
├── monitoring/
│ └── prometheus.yaml
└── ingress/
└── nginx.yaml

# Historique complet
git log --oneline
a1b2c3d Update replicas to 5
d4e5f6g Add monitoring stack
g7h8i9j Initial infrastructure

Principe 3 : Récupéré Automatiquement (Pull)

Principe 4 : Réconciliation Continue

ConceptDescription
État désiréCe qui est dans Git
État réelCe qui tourne dans le cluster
DriftÉcart entre les deux
RéconciliationCorrection automatique

🔝 Retour à la table des matières


3 - Pourquoi adopter GitOps ?

Avantages

AvantageDescription
AuditabilitéTout changement est tracé dans Git
Rollback facilegit revert = rollback production
SécuritéPas de kubectl direct en production
ReproductibilitéMême config = même résultat
CollaborationPull Requests pour les changements
Self-healingRéconciliation automatique

Exemple concret

# Avant GitOps
ssh server
kubectl set image deployment/app app=v2
# Qui a fait quoi ? Quand ? Pourquoi ?

# Avec GitOps
git checkout -b feature/update-app-v2
# Modifier deployment.yaml
git commit -m "Update app to v2 - fixes #123"
git push
# Créer Pull Request
# Review par l'équipe
# Merge = déploiement automatique
# Historique complet dans Git

ROI du GitOps

MétriqueAvantAprès GitOps
Temps de déploiement30 min5 min
Temps de rollback1h+2 min
Incidents de configFréquentsRares
Audit trailPartiel100%

🔝 Retour à la table des matières


4 - Cas d'utilisation

Idéal pour

  • ✅ Déploiements Kubernetes
  • ✅ Infrastructure cloud (IaC)
  • ✅ Configuration d'applications
  • ✅ Environnements multi-clusters
  • ✅ Équipes distribuées

Moins adapté pour

  • ⚠️ Applications legacy non-conteneurisées
  • ⚠️ Changements très fréquents (bases de données)
  • ⚠️ Équipes sans culture Git

Exemples d'entreprises

EntrepriseUsage
WeaveworksCréateur du terme, utilise Flux
Intuit2500+ microservices via ArgoCD
AdobeMulti-cloud avec GitOps
Chick-fil-AEdge computing

🔝 Retour à la table des matières


5 - GitOps et Kubernetes

Pourquoi Kubernetes ?

Kubernetes est naturellement compatible avec GitOps car :

  • API déclarative (YAML/JSON)
  • Concept de controllers (réconciliation)
  • État désiré vs état réel intégré

Workflow typique

# 1. Développeur modifie deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 5 # Changement: 3 → 5

# 2. Commit et Push
# git commit -m "Scale my-app to 5 replicas"
# git push

# 3. GitOps operator détecte le changement

# 4. Apply automatique sur le cluster

# 5. Kubernetes réconcilie (crée 2 pods)

Outils GitOps pour Kubernetes

OutilTypeMaintenu par
ArgoCDApplicationCNCF
FluxToolkitCNCF
FleetMulti-clusterRancher
Jenkins XCI/CD + GitOpsJenkins

🔝 Retour à la table des matières


6 - Exercices pratiques

Quiz

Q1. Quel est le principe fondamental de GitOps ?

Réponse

Git comme source unique de vérité (Single Source of Truth) pour l'état désiré de l'infrastructure.

Q2. Quelle est la différence entre Push et Pull model ?

Réponse
  • Push : Le CI/CD pousse les changements vers le cluster
  • Pull : Un agent dans le cluster tire les changements depuis Git

Q3. Pourquoi Kubernetes est-il adapté au GitOps ?

Réponse

Car Kubernetes a une API déclarative native et un système de controllers qui compare constamment l'état désiré à l'état réel.

Exercice : Identifier les avantages

Pour chaque scénario, identifiez l'avantage GitOps :

  1. Un changement non autorisé est fait directement sur le cluster → Self-healing
  2. Besoin de savoir qui a déployé quoi il y a 3 mois → Auditabilité
  3. Un déploiement cause des problèmes → Rollback facile

🔝 Retour à la table des matières


Points clés à retenir

  • GitOps = Git comme source de vérité
  • 4 principes : Déclaratif, Versionné, Pull-based, Réconciliation
  • Avantages : auditabilité, rollback, sécurité, reproductibilité
  • Kubernetes est naturellement compatible avec GitOps
  • ArgoCD et Flux sont les outils les plus populaires

🔝 Retour à la table des matières


Chapitre suivant : GitOps vs CI/CD →