Aller au contenu principal

Outils GitOps


Table des matières

  1. Panorama des outils
  2. ArgoCD
  3. Flux
  4. Comparaison ArgoCD vs Flux
  5. Autres outils
  6. Exercices pratiques

1 - Panorama des outils

Outils CNCF

Comparaison rapide

OutilTypeCNCFUIPopularité
ArgoCDApplicationGraduated✅ Native⭐⭐⭐⭐⭐
FluxToolkitGraduated❌ (Weave UI)⭐⭐⭐⭐
Jenkins XCI/CD + GitOpsIncubating⭐⭐⭐
FleetMulti-cluster-⭐⭐⭐

🔝 Retour à la table des matières


2 - ArgoCD

Présentation

  • Développé par Intuit puis donné à la CNCF
  • UI web native et puissante
  • Supporte Helm, Kustomize, Jsonnet, YAML
  • CNCF Graduated (maturité maximale)

Installation

# Créer le namespace
kubectl create namespace argocd

# Installer ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Récupérer le mot de passe admin
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

# Accéder à l'UI
kubectl port-forward svc/argocd-server -n argocd 8080:443
# https://localhost:8080

Créer une Application

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default

source:
repoURL: https://github.com/org/gitops-repo.git
targetRevision: HEAD
path: apps/my-app

destination:
server: https://kubernetes.default.svc
namespace: default

syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

CLI ArgoCD

# Login
argocd login localhost:8080

# Lister les applications
argocd app list

# Sync manuel
argocd app sync my-app

# Voir l'état
argocd app get my-app

# Historique
argocd app history my-app

# Rollback
argocd app rollback my-app 1

Interface Web

FonctionnalitéDescription
Application ViewVue des ressources K8s
Sync StatusÉtat de synchronisation
Health StatusSanté des pods
Diff ViewDifférences Git vs Cluster
Resource TreeArbre des dépendances

🔝 Retour à la table des matières


3 - Flux

Présentation

  • Développé par Weaveworks
  • Toolkit modulaire (composants séparés)
  • Pas d'UI native (Weave GitOps UI disponible)
  • CNCF Graduated

Composants Flux

ComposantRôle
Source ControllerRécupère les sources (Git, Helm, S3)
Kustomize ControllerApplique les manifests Kustomize
Helm ControllerGère les releases Helm
Notification ControllerAlertes vers Slack, Teams
Image AutomationMise à jour auto des images

Installation

# Installer Flux CLI
curl -s https://fluxcd.io/install.sh | sudo bash

# Bootstrap avec GitHub
flux bootstrap github \
--owner=my-org \
--repository=gitops-repo \
--path=clusters/my-cluster \
--personal

GitRepository et Kustomization

# Définir la source Git
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: my-repo
namespace: flux-system
spec:
interval: 1m
url: https://github.com/org/gitops-repo
ref:
branch: main
---
# Appliquer les manifests
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: my-app
namespace: flux-system
spec:
interval: 5m
path: ./apps/my-app
prune: true
sourceRef:
kind: GitRepository
name: my-repo

CLI Flux

# État du système
flux check

# Lister les sources
flux get sources git

# Lister les kustomizations
flux get kustomizations

# Réconcilier manuellement
flux reconcile kustomization my-app

# Suspendre/Reprendre
flux suspend kustomization my-app
flux resume kustomization my-app

🔝 Retour à la table des matières


4 - Comparaison ArgoCD vs Flux

Tableau comparatif

CritèreArgoCDFlux
UI Native✅ Excellente❌ (Weave GitOps)
ArchitectureMonolithiqueToolkit modulaire
Courbe d'apprentissageFacileMoyenne
Multi-tenancyProjets, RBACNamespaces
Image AutomationVia extension✅ Native
NotificationsWebhook✅ Controller dédié
CNCF StatusGraduatedGraduated
GitHub Stars~15k~5k

Quand choisir ArgoCD ?

  • ✅ Besoin d'une UI puissante
  • ✅ Équipe débutante en GitOps
  • ✅ Préférence pour une solution tout-en-un
  • ✅ Multi-cluster centralisé

Quand choisir Flux ?

  • ✅ Préférence CLI/GitOps natif
  • ✅ Besoin d'image automation native
  • ✅ Architecture modulaire souhaitée
  • ✅ Intégration étroite avec GitHub/GitLab

Peuvent coexister

# ArgoCD pour les applications
# Flux pour l'infrastructure

# Ou différents clusters
# Cluster A: ArgoCD
# Cluster B: Flux

🔝 Retour à la table des matières


5 - Autres outils

Fleet (Rancher)

# Idéal pour multi-cluster à grande échelle
# Gère des centaines de clusters edge
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: my-app
spec:
repo: https://github.com/org/gitops-repo
paths:
- apps/my-app
targets:
- clusterSelector:
matchLabels:
env: production

Jenkins X

# CI/CD + GitOps intégré
# Génère automatiquement les pipelines
jx create quickstart

Spinnaker

  • Outil de CD multi-cloud mature
  • Pipelines visuels
  • Moins "GitOps native"

Résumé

OutilCas d'usage
ArgoCDGitOps général, UI importante
FluxGitOps CLI-first, image automation
FleetMulti-cluster à grande échelle
Jenkins XCI/CD + GitOps tout-en-un

🔝 Retour à la table des matières


6 - Exercices pratiques

Quiz

Q1. Quel outil GitOps a une UI native ?

Réponse

ArgoCD a une interface web native très complète. Flux nécessite Weave GitOps UI séparément.

Q2. Quel outil a l'image automation native ?

Réponse

Flux avec son Image Automation Controller peut détecter de nouvelles images et mettre à jour automatiquement les manifests Git.

Exercice : Choix d'outil

Votre équipe évalue ArgoCD et Flux. Critères :

  • UI importante pour les développeurs
  • 5 clusters à gérer
  • Équipe de 20 personnes
Recommandation

ArgoCD serait recommandé car :

  • UI native importante pour les développeurs
  • Gestion multi-cluster centralisée
  • Courbe d'apprentissage plus facile pour une équipe de 20 personnes
  • L'adoption sera plus rapide

🔝 Retour à la table des matières


Points clés à retenir

  • ArgoCD : UI excellente, tout-en-un, facile à adopter
  • Flux : Toolkit modulaire, CLI-first, image automation native
  • Les deux sont CNCF Graduated (maturité)
  • Choisir selon les besoins : UI vs CLI, monolithique vs modulaire
  • Peuvent coexister dans différents contextes

🔝 Retour à la table des matières


← Chapitre précédent | Chapitre suivant : Structure des repos →