Cloud / DevOps
2026-03-13
8 min
Équipe Blent

ArgoCD : le GitOps sur Kubernetes

Véritable moteur de déploiement continu pour Kubernetes, ArgoCD est un projet open source qui permet de synchroniser automatiquement l'état d'un cluster Kubernetes avec des fichiers de configuration stockés dans un dépôt Git. Cette approche déclarative garantit que l'infrastructure déployée correspond toujours à ce qui est versionné, offrant ainsi une traçabilité complète et une capacité de rollback instantanée. Utilisé par des entreprises comme Intuit, Red Hat ou encore IBM, ArgoCD est devenu un pilier des architectures Kubernetes modernes.

ArgoCD : le GitOps sur Kubernetes

Dans un contexte où les entreprises adoptent massivement Kubernetes pour orchestrer leurs applications conteneurisées, la question du déploiement continu devient centrale. Si des outils comme Jenkins ou GitLab CI/CD ont longtemps dominé le paysage de l'automatisation, une nouvelle approche s'est imposée pour les environnements Cloud natifs : le GitOps. Et parmi les outils qui incarnent cette philosophie, ArgoCD s'est rapidement imposé comme la référence.

Véritable moteur de déploiement continu pour Kubernetes, ArgoCD est un projet open source incubé par la Cloud Native Computing Foundation (CNCF) qui permet de synchroniser automatiquement l'état d'un cluster Kubernetes avec des fichiers de configuration stockés dans un dépôt Git. Cette approche déclarative garantit que l'infrastructure déployée correspond toujours à ce qui est versionné, offrant ainsi une traçabilité complète et une capacité de rollback instantanée. Utilisé par des entreprises comme Intuit, Red Hat ou encore IBM, ArgoCD est devenu un pilier des architectures Kubernetes modernes.

Qu'est-ce qu'ArgoCD ?

ArgoCD est un outil de déploiement continu déclaratif spécialement conçu pour Kubernetes. Contrairement aux outils CI/CD traditionnels qui "poussent" les modifications vers les environnements cibles, ArgoCD adopte une approche "pull" : il surveille en permanence un dépôt Git et synchronise automatiquement l'état du cluster avec les manifestes Kubernetes qui y sont stockés.

Logo ArgoCD

Le principe fondamental d'ArgoCD repose sur la philosophie GitOps, où Git devient la source unique de vérité pour l'infrastructure. Concrètement, cela signifie que :

  • Toute modification de l'infrastructure doit passer par une modification dans Git (commit, merge request).
  • L'état désiré de l'application est décrit dans des fichiers YAML, Helm charts ou manifestes Kustomize stockés dans un dépôt.
  • ArgoCD détecte automatiquement les écarts entre l'état désiré (Git) et l'état réel (cluster Kubernetes).
  • La synchronisation peut être automatique ou manuelle selon la configuration choisie.

Cette approche offre plusieurs avantages majeurs pour les équipes DevOps. La traçabilité est totale puisque chaque déploiement correspond à un commit Git identifiable. Les rollbacks deviennent triviaux : il suffit de revenir à un commit précédent. Les revues de code s'appliquent naturellement aux changements d'infrastructure via les merge requests. Enfin, la réconciliation automatique garantit que personne ne peut modifier l'état du cluster sans passer par Git.

ArgoCD s'installe directement dans le cluster Kubernetes qu'il doit gérer et expose une interface Web intuitive permettant de visualiser l'état des applications, leurs ressources et l'historique des synchronisations. Un CLI complet (argocd) permet également d'interagir avec l'outil en ligne de commande, facilitant son intégration dans des scripts d'automatisation.

Fonctionnalités principales

ArgoCD se distingue par un ensemble de fonctionnalités qui en font bien plus qu'un simple outil de déploiement.

Gestion multi-applications et multi-clusters

ArgoCD excelle dans la gestion d'environnements complexes. Une seule instance peut gérer des centaines d'applications déployées sur plusieurs clusters Kubernetes simultanément. Le concept d'Application dans ArgoCD représente le lien entre un dépôt Git (source) et un namespace Kubernetes (destination). Pour les architectures à grande échelle, ArgoCD propose également les ApplicationSets, qui permettent de générer dynamiquement des applications à partir de templates, idéal pour les déploiements multi-environnements (dev, staging, production) ou multi-tenants.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: mon-application
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/mon-org/mon-app.git
    targetRevision: main
    path: kubernetes/
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

yaml

Synchronisation et réconciliation

Le cœur d'ArgoCD réside dans sa capacité à détecter et corriger les dérives entre l'état désiré et l'état réel. Plusieurs modes de synchronisation sont disponibles :

  • Synchronisation manuelle : l'opérateur décide quand appliquer les changements, utile pour les environnements de production sensibles.
  • Synchronisation automatique : ArgoCD applique automatiquement tout changement détecté dans Git.
  • Self-healing : si quelqu'un modifie manuellement une ressource dans le cluster, ArgoCD la remet automatiquement dans l'état défini dans Git.
  • Pruning : suppression automatique des ressources qui n'existent plus dans Git.

Support de multiples formats

ArgoCD ne se limite pas aux manifestes Kubernetes bruts. Il supporte nativement plusieurs outils de templating et de packaging :

  • Helm : déploiement de charts Helm avec gestion des values personnalisées.
  • Kustomize : overlays et patches pour adapter les manifestes selon les environnements.
  • Jsonnet : génération programmatique de manifestes.
  • Répertoires de manifestes YAML/JSON : approche la plus simple pour les petits projets.

Cette flexibilité permet aux équipes d'adopter ArgoCD sans changer leurs pratiques existantes de gestion des configurations Kubernetes.

À lire : découvrez notre formation DevOps Engineer

ArgoCD vs Jenkins et GitLab CI/CD

La comparaison entre ArgoCD et les outils CI/CD traditionnels comme Jenkins ou GitLab CI/CD révèle des philosophies fondamentalement différentes, chacune adaptée à des cas d'usage spécifiques.

CritèreArgoCDJenkins / GitLab CI/CD
ApprochePull (GitOps)Push (impératif)
SpécialisationDéploiement Kubernetes uniquementCI/CD généraliste
Gestion des secretsIntégration avec Vault, Sealed SecretsVariables d'environnement, credentials
Détection de driftNative et continueNon native
RollbackGit revert = rollback automatiqueScripts personnalisés
Courbe d'apprentissageModérée (concepts GitOps)Variable selon l'outil
VisibilitéInterface dédiée KubernetesLogs de pipeline

Jenkins et GitLab CI/CD excellent dans l'intégration continue : compilation, tests, analyse de code, création d'artefacts. Ils offrent une grande flexibilité grâce à leurs systèmes de plugins et peuvent automatiser pratiquement n'importe quelle tâche. Cependant, pour le déploiement sur Kubernetes, ils adoptent une approche "push" où le pipeline exécute des commandes kubectl apply ou helm upgrade. Cette approche présente plusieurs limitations : pas de détection de drift, rollback complexe, et nécessité de stocker des credentials Kubernetes dans le système CI.

ArgoCD se concentre exclusivement sur le déploiement continu vers Kubernetes. Il ne remplace pas Jenkins ou GitLab CI/CD mais les complète. L'approche recommandée consiste à utiliser un outil CI classique pour construire les images Docker et mettre à jour les manifestes dans Git, puis laisser ArgoCD gérer la synchronisation vers le cluster.

En pratique, de nombreuses organisations adoptent une architecture où GitLab CI/CD gère la partie CI (build, test, push d'image vers un registre comme Harbor) et ArgoCD gère la partie CD (déploiement sur Kubernetes). Cette séparation des responsabilités offre le meilleur des deux mondes : la puissance d'un outil CI mature et la robustesse d'un déploiement GitOps.

Mise en place et cas d'usage

L'installation d'ArgoCD dans un cluster Kubernetes est relativement simple et peut se faire en quelques commandes :

# Création du namespace
kubectl create namespace argocd

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

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

bash

Une fois installé, ArgoCD expose une interface Web accessible via un port-forward ou un Ingress, permettant de visualiser et gérer l'ensemble des applications déployées.

Environnements multi-stages : ArgoCD brille particulièrement lorsqu'il faut gérer plusieurs environnements (développement, staging, production) avec des configurations légèrement différentes. Grâce à Kustomize ou aux values Helm, les équipes peuvent maintenir une base commune tout en personnalisant chaque environnement. Les ApplicationSets permettent même de générer automatiquement une application par branche Git, facilitant les environnements de preview.

Déploiements progressifs : ArgoCD s'intègre avec des outils comme Argo Rollouts pour implémenter des stratégies de déploiement avancées : canary releases, blue-green deployments, ou analyse automatique des métriques pour décider de poursuivre ou rollback un déploiement.

Conformité et audit : pour les secteurs réglementés, ArgoCD offre une traçabilité complète. Chaque déploiement est lié à un commit Git, lui-même associé à une merge request avec ses approbations. Les logs de synchronisation et l'historique des applications fournissent une piste d'audit détaillée.

À découvrir : notre formation DevOps Engineer

Conclusion

ArgoCD s'est imposé comme la référence du déploiement GitOps sur Kubernetes, offrant une approche déclarative et auditable qui répond aux exigences des architectures Cloud natives modernes. En faisant de Git la source unique de vérité pour l'état de l'infrastructure, il apporte une rigueur et une traçabilité que les approches traditionnelles peinent à égaler.

Plutôt que de remplacer des outils comme Jenkins ou GitLab CI/CD, ArgoCD les complète en se spécialisant sur ce qu'il fait le mieux : la synchronisation continue entre Git et Kubernetes. Cette séparation des responsabilités permet aux équipes de construire des pipelines robustes où chaque outil excelle dans son domaine. Pour les organisations ayant adopté Kubernetes, ArgoCD représente une évolution naturelle vers des pratiques DevOps plus matures, où l'infrastructure devient véritablement du code versionné, reviewé et déployé de manière automatisée.

Articles similaires

OpenTelemetry : tout comprendre sur le tracing distribué
Cloud / DevOps
2026-04-24
8 min

OpenTelemetry : tout comprendre sur le tracing distribué

Dans les architectures microservices modernes, une simple requête utilisateur peut traverser des dizaines de services avant de retourner une réponse. Lorsqu'un problème de performance survient ou qu'une erreur se produit, comment identifier rapidement le service responsable ? Comment comprendre le cheminement exact d'une requête à travers l'ensemble de l'infrastructure ? Ces questions, familières à toute équipe opérant des systèmes distribués, ont donné naissance à une discipline essentielle : le tracing distribué.

Lire l'article
CoreDNS : le DNS dans Kubernetes
Cloud / DevOps
2026-04-15
7 min

CoreDNS : le DNS dans Kubernetes

Véritable colonne vertébrale de la découverte de services dans Kubernetes, CoreDNS est le serveur DNS par défaut des clusters Kubernetes depuis la version 1.13. Ce projet open source, gradué au sein de la Cloud Native Computing Foundation (CNCF), assure la résolution des noms de services et permet aux applications de communiquer entre elles sans avoir à connaître les adresses IP, par nature éphémères dans un environnement conteneurisé. Flexible, extensible et performant, CoreDNS s'est imposé comme un composant indispensable que tout ingénieur DevOps ou administrateur Kubernetes se doit de maîtriser.

Lire l'article
Helm : gestion de packages sur Kubernetes
Cloud / DevOps
2026-04-03
7 min

Helm : gestion de packages sur Kubernetes

Véritable gestionnaire de packages pour Kubernetes, Helm permet de définir, installer et mettre à jour des applications complexes sous forme de "charts", des packages réutilisables et paramétrables. Projet gradué de la Cloud Native Computing Foundation (CNCF), Helm est aujourd'hui utilisé par la grande majorité des organisations qui opèrent Kubernetes en production. Des entreprises comme Microsoft, Google ou encore Bitnami maintiennent des catalogues entiers de charts, facilitant le déploiement d'applications aussi diverses que PostgreSQL, Prometheus ou WordPress en quelques commandes.

Lire l'article