Introduction
GitOps transforme la gestion des infrastructures en plaçant Git au centre des opérations. Avec ArgoCD, les changements de code déclenchent automatiquement des déploiements sur Kubernetes. Cette approche garantit traçabilité, reproductibilité et rollback instantané. En 2026, les équipes DevOps adoptent massivement GitOps pour réduire les erreurs manuelles et améliorer la sécurité. Ce tutoriel vous guide pas à pas vers une implémentation intermédiaire solide.
Prérequis
- Kubernetes 1.28+ avec cluster configuré
- kubectl et helm installés
- Accès à un dépôt Git (GitHub ou GitLab)
- Connaissances de base des manifests Kubernetes
Installation d'ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'Cette commande crée le namespace et déploie ArgoCD. Le patch expose le service via LoadBalancer pour un accès initial. Attendez que tous les pods soient prêts avant de continuer.
Récupération du mot de passe admin
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dArgoCD génère un mot de passe initial stocké dans un secret. Cette commande le récupère pour la première connexion via l'interface web.
Création du dépôt GitOps
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/votre-org/gitops-repo.git
targetRevision: HEAD
path: manifests
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: trueCe manifest déclare une Application ArgoCD qui synchronise automatiquement le dossier manifests du dépôt Git vers le namespace production.
Déploiement d'une application exemple
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80Ce fichier Deployment est versionné dans Git. ArgoCD le détecte et le déploie automatiquement sur le cluster.
Configuration du Service
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: production
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: ClusterIPLe Service expose le Deployment à l'intérieur du cluster. Il est synchronisé en même temps que le Deployment via la même Application ArgoCD.
Bonnes pratiques
- Toujours activer prune et selfHeal dans la syncPolicy
- Utiliser des branches protégées et des pull requests pour les changements
- Séparer les environnements par dossiers (dev, staging, prod)
- Ajouter des health checks personnalisés dans les Applications
- Versionner les charts Helm plutôt que les valeurs inline
Erreurs courantes à éviter
- Oublier de configurer le webhook Git pour déclencher les syncs
- Laisser des secrets en clair dans le dépôt Git
- Ne pas activer le mode automated sur les environnements de production critiques
- Ignorer les conflits de merge lors de mises à jour simultanées
Pour aller plus loin
Découvrez nos formations avancées sur GitOps et ArgoCD : https://learni-group.com/formations