Outils GitOps
Table des matières
1 - Panorama des outils
Outils CNCF
Comparaison rapide
| Outil | Type | CNCF | UI | Popularité |
|---|---|---|---|---|
| ArgoCD | Application | Graduated | ✅ Native | ⭐⭐⭐⭐⭐ |
| Flux | Toolkit | Graduated | ❌ (Weave UI) | ⭐⭐⭐⭐ |
| Jenkins X | CI/CD + GitOps | Incubating | ✅ | ⭐⭐⭐ |
| Fleet | Multi-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 View | Vue des ressources K8s |
| Sync Status | État de synchronisation |
| Health Status | Santé des pods |
| Diff View | Différences Git vs Cluster |
| Resource Tree | Arbre 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
| Composant | Rôle |
|---|---|
| Source Controller | Récupère les sources (Git, Helm, S3) |
| Kustomize Controller | Applique les manifests Kustomize |
| Helm Controller | Gère les releases Helm |
| Notification Controller | Alertes vers Slack, Teams |
| Image Automation | Mise à 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ère | ArgoCD | Flux |
|---|---|---|
| UI Native | ✅ Excellente | ❌ (Weave GitOps) |
| Architecture | Monolithique | Toolkit modulaire |
| Courbe d'apprentissage | Facile | Moyenne |
| Multi-tenancy | Projets, RBAC | Namespaces |
| Image Automation | Via extension | ✅ Native |
| Notifications | Webhook | ✅ Controller dédié |
| CNCF Status | Graduated | Graduated |
| 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é
| Outil | Cas d'usage |
|---|---|
| ArgoCD | GitOps général, UI importante |
| Flux | GitOps CLI-first, image automation |
| Fleet | Multi-cluster à grande échelle |
| Jenkins X | CI/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 →