GitOps avec Argo CD : automatiser les déploiements Kubernetes
Découvrez comment implémenter le pattern GitOps avec Argo CD pour rendre vos déploiements Kubernetes fiables, traçables et entièrement automatisés.
Introduction au GitOps
Le terme GitOps désigne une approche où le git devient la source unique de vérité pour l’état désiré d’une infrastructure. Chaque modification, qu’il s’agisse d’une mise à jour de configuration ou d’une nouvelle version d’application, est d’abord commitée dans le dépôt Git. Un opérateur dédié synchronise alors cet état avec le cluster Kubernetes.
Cette méthode apporte deux bénéfices majeurs :
- Traçabilité : chaque changement est historisé dans Git, facilitant les revues de code et les audits.
- Déploiement automatisé : le processus de mise à jour du cluster est déclenché par le commit, éliminant les interventions manuelles.
Parmi les outils GitOps, Argo CD se démarque par sa simplicité d’installation, son tableau de bord riche et sa capacité à gérer plusieurs clusters.
Installation d’Argo CD
Argo CD s’installe comme un ensemble de ressources Kubernetes. Voici les étapes essentielles :
# Créez le namespace dédié
timeout 60s kubectl create namespace argocd
# Installez les manifests officiels
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Une fois les pods en état Running, exposez l’interface web (exemple avec port‑forward) :
kubectl port-forward svc/argocd-server -n argocd 8080:443
Le premier compte est admin. Récupérez le mot de passe initial :
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
Déclarer une application GitOps
Une Application Argo CD décrit le lien entre le dépôt Git et le cluster cible. Voici un manifest minimal :
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: guestbook
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps
targetRevision: HEAD
path: guestbook
destination:
server: https://kubernetes.default.svc
namespace: guestbook
syncPolicy:
automated:
prune: true # supprime les ressources orphelines
selfHeal: true # réapplique si le cluster dérive de l’état Git
Appliquez‑le :
kubectl apply -f guestbook-app.yaml
Argo CD détectera le nouveau manifest, le comparera à l’état actuel du cluster et affichera le diff dans le tableau de bord. En activant syncPolicy.automated, le contrôle de conformité devient continu : dès qu’un commit modifie les manifests, Argo CD synchronise automatiquement le cluster.
Gestion des secrets en mode GitOps
Le principe GitOps décourage de placer des secrets en clair dans le dépôt. Deux solutions courantes s’intègrent avec Argo CD :
- Sealed Secrets (Bitnami) : les secrets sont chiffrés avec la clé publique du contrôleur et stockés dans Git. Le contrôleur les déchiffre au moment du déploiement.
- External Secrets Operator : les secrets sont récupérés depuis un coffre (AWS Secrets Manager, HashiCorp Vault, Azure Key Vault) au moment de la synchronisation.
Exemple avec Sealed Secrets :
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: db-credentials
namespace: guestbook
spec:
encryptedData:
username: AgB...==
password: AgC...==
Le fichier SealedSecret est versionné, mais le contenu reste illisible sans la clé du contrôleur.
Bonnes pratiques pour un pipeline GitOps robuste
- Revue de code obligatoire : imposez des PR/MR avant toute modification d’infrastructure.
- Tests de validation : utilisez
kube‑testoukuttldans votre pipeline CI pour vérifier la validité des manifests avant le merge. - Politique de branche : maintenez une branche
main(oumaster) contenant l’état de production, et une branchestagingpour les pré‑productions. - Audit des changements : activez les logs d’Argo CD et configurez des notifications (Slack, Teams) sur les événements de synchronisation.
- Gestion des droits : limitez les accès Git et Argo CD aux équipes concernées, et utilisez des rôles RBAC pour restreindre les actions possibles sur le cluster.
Conclusion
Argo CD rend le concept GitOps concret et opérationnel. En centralisant la définition de l’infrastructure dans Git, vous gagnez en visibilité, en reproductibilité et en sécurité. Couplé à des solutions de gestion de secrets et à une chaîne CI rigoureuse, le workflow devient entièrement automatisé, du commit à la mise en production. Cette approche répond aux exigences des certifications DevOps modernes : maitrise du versioning, automatisation fiable et conformité auditable.
Envie d’aller plus loin avec CertifApp ?
Découvrir CertifApp