GitOps

Installer et configurer ArgoCD (approche industrialisee)

ArgoCD · Une mise en place reproductible, versionnee et prete pour la production

GitOps — illustration
Illustration — GitOps
Base OSRuntimeDépendancesConfigService
Stack d’installationArgoCD
40%Lead time70%Manuel60%Bugs prod70%MTTR85%Couverture80%Visibilite
Impact mesure (en %) — chiffres constates sur les projets du CV (sources : ALTEN/Worldline, VISEO/Rocher, Sylob, HPS).
4212Sprint 1Sprint 12
Lead time du pipeline (min) sur 12 sprints
85%Couverture tests
90%Flux automatises
98%SLA respecte
Couverture & automatisation

Cet article detaille l'installation et la configuration de ArgoCD selon une approche industrialisee : reproductible, versionnee et prete pour la production des le depart.

Role : que fait ArgoCD ?

Argo CD est le controleur GitOps declaratif de reference pour Kubernetes. Il surveille en continu un depot Git contenant l'etat desire (manifests, Helm, Kustomize) et reconcilie le cluster pour qu'il converge vers cet etat. Git devient l'unique source de verite : tout changement est un commit revu, audite et reversible par git revert. ArgoCD apporte la visualisation temps reel de l'arborescence des ressources, le drift detection, les sync waves, les rollouts progressifs et la gestion multi-clusters — pilier d'une approche GitOps end-to-end pour des environnements bancaires.

Cet article fait partie d'une serie de cinq consacree a ArgoCD, abordant successivement les fondamentaux, l'installation, l'integration CI/CD, la production et le depannage. Chaque volet est autonome et orienté pratique d'ingenierie.

Installation et configuration

Une installation 'qui marche' ne suffit pas : viser des le depart une mise en place reproductible, versionnee et conforme aux contraintes de production.

Installer via manifests officiels ou Helm dans le namespace argocd ; exposer le serveur via Ingress + SSO (OIDC). Bien maitrise, cet aspect reduit les interventions manuelles et securise les cycles de deploiement, ce qui est precisement l'objectif d'une demarche DevOps mature. La regle pratique est de rendre l'operation deterministe : memes entrees, meme resultat, quel que soit l'environnement. Neglige, ce point cree un point de defaillance unique et une dependance a la connaissance tacite d'un individu. On documente la decision et son contexte afin qu'un nouvel arrivant puisse la comprendre sans solliciter l'auteur. C'est precisement ce qui distingue une automatisation robuste d'un assemblage fragile de scripts difficilement maintenable. Il doit rester observable : expose en metriques et en alerting pour ne jamais sortir du champ de controle.

Declarer depots et clusters de facon declarative (Secrets labelises) plutot qu'en CLI imperative. Ignore, il devient une source recurrente d'incidents difficiles a tracer, car la cause racine est souvent loin du symptome observe. Le bon reflexe est de separer clairement configuration et code, et d'externaliser tout ce qui varie par environnement. L'absence de maitrise ici se paie en incidents de production et en perte de confiance dans la chaine de livraison. En mise en oeuvre, on commence par le formaliser dans un environnement de recette avant toute promotion vers la production. A l'echelle de dizaines d'applications, cet ecart de rigueur se traduit en jours d'exploitation economises chaque mois. Il gagne a etre standardise via un template, un role ou une bibliotheque partagee pour passer a l'echelle sans duplication.

Structurer un repo GitOps : environnements (dev/staging/prod) en overlays Kustomize ou values Helm distinctes. C'est l'un des leviers les plus rentables pour fiabiliser des environnements multi-equipes ou la moindre divergence de configuration coute cher. Il convient d'appliquer le moindre privilege : n'accorder que les droits strictement necessaires a l'execution. Le danger est d'introduire une faille de securite ou une non-conformite qui ne sera detectee qu'a l'audit. La regle d'or est de valider ce comportement par un test automatise qui echoue explicitement en cas de regression. C'est aussi un facteur de serenite pour les equipes d'astreinte, qui passent moins de nuits sur des incidents evitables. Il se documente et s'accompagne d'un runbook : la connaissance operationnelle ne doit pas dependre d'une seule personne.

Mettre en place l'App of Apps racine geree elle-meme par Argo CD (bootstrap declaratif du cluster). Dans un contexte reglemente (bancaire / PCI DSS), c'est aussi une exigence d'auditabilite : ce qui n'est pas tracable n'est pas conforme. L'approche saine consiste a echouer vite et explicitement plutot qu'a masquer une erreur qui resurgira plus tard. Le risque, sinon, est une derive silencieuse de configuration entre environnements (le fameux 'ca marche chez moi'). Concretement, on l'inscrit dans la revue de code et dans la definition of done de l'equipe, pas dans une procedure orale. L'impact se mesure directement sur les indicateurs DORA : lead time, frequence de deploiement, taux d'echec des changements et MTTR. Cet element s'integre naturellement dans un pipeline industrialise, revu en code et versionne avec l'application.

Activer notifications (Slack/Teams/email) sur evenements sync/health pour la tracabilite operationnelle. Ce point fait souvent la difference entre une plateforme que l'on subit et une plateforme que l'on pilote. Sur le plan operationnel, la mise en oeuvre doit etre idempotente : pouvoir etre rejouee sans effet de bord ni divergence d'etat. A defaut, on s'expose a des deploiements non reproductibles, impossibles a rejouer a l'identique en cas d'incident. On le rend mesurable : un indicateur dedie dans le tableau de bord permet d'en suivre l'evolution dans le temps. L'effet est tangible sur le temps de mise en production et sur la qualite percue par les equipes de developpement. Il se traite comme du code : versionne, teste, et promu a l'identique d'un environnement a l'autre, sans reconstruction.

Concepts et architecture

Avant toute mise en oeuvre, il faut un modele mental correct de ArgoCD. Les points suivants constituent la base sans laquelle l'outil reste une boite noire fragile.

Le modele : etat desire en Git, etat live dans le cluster ; le controleur reconcilie en continu et expose un status Synced/OutOfSync + Healthy. Le negliger revient a accumuler une dette technique invisible jusqu'au jour ou elle bloque une livraison critique. Le principe directeur reste l'immuabilite : on remplace plutot qu'on modifie en place, ce qui rend chaque etat reproductible. Sans cette discipline, le rollback devient incertain, ce qui allonge dangereusement le temps de reprise en cas de panne. Le bon niveau d'automatisation consiste a ce qu'aucune action manuelle non tracee ne soit necessaire pour le garantir. Le retour sur investissement apparait des les premiers cycles de livraison automatises, puis se compose dans la duree. Il s'inscrit dans une demarche GitOps/DevSecOps de bout en bout, ou Git reste l'unique source de verite.

L'Application CRD reference un depot, un chemin/revision et une destination (cluster + namespace) ; tout est declaratif et versionne. Concretement, ce point conditionne la fiabilite et la reproductibilite de toute la chaine de livraison : un ecart ici se propage a l'ensemble des environnements. La regle pratique est de rendre l'operation deterministe : memes entrees, meme resultat, quel que soit l'environnement. Neglige, ce point cree un point de defaillance unique et une dependance a la connaissance tacite d'un individu. On documente la decision et son contexte afin qu'un nouvel arrivant puisse la comprendre sans solliciter l'auteur. La consequence est une plateforme plus previsible, plus sure et nettement moins couteuse a operer au quotidien. Il doit rester observable : expose en metriques et en alerting pour ne jamais sortir du champ de controle.

self-heal annule automatiquement les changements manuels sur le cluster (drift) pour revenir a l'etat Git. En pratique, c'est un facteur direct de stabilite en production et de reduction du temps de diagnostic lorsqu'un incident survient. Le bon reflexe est de separer clairement configuration et code, et d'externaliser tout ce qui varie par environnement. L'absence de maitrise ici se paie en incidents de production et en perte de confiance dans la chaine de livraison. En mise en oeuvre, on commence par le formaliser dans un environnement de recette avant toute promotion vers la production. C'est precisement ce qui distingue une automatisation robuste d'un assemblage fragile de scripts difficilement maintenable. Il gagne a etre standardise via un template, un role ou une bibliotheque partagee pour passer a l'echelle sans duplication.

Le pattern App of Apps et les ApplicationSet generent et gerent des dizaines d'applications/clusters depuis une definition unique. Bien maitrise, cet aspect reduit les interventions manuelles et securise les cycles de deploiement, ce qui est precisement l'objectif d'une demarche DevOps mature. Il convient d'appliquer le moindre privilege : n'accorder que les droits strictement necessaires a l'execution. Le danger est d'introduire une faille de securite ou une non-conformite qui ne sera detectee qu'a l'audit. La regle d'or est de valider ce comportement par un test automatise qui echoue explicitement en cas de regression. A l'echelle de dizaines d'applications, cet ecart de rigueur se traduit en jours d'exploitation economises chaque mois. Il se documente et s'accompagne d'un runbook : la connaissance operationnelle ne doit pas dependre d'une seule personne.

Resume des commandes essentielles

Aide-memoire operationnel des commandes et configurations les plus utilisees au quotidien. Chaque entree indique la commande puis son role.

argocd login HOST --ssoS'authentifier sur le serveur Argo CD
argocd app create app --repo URL --path k8s --dest-namespace ns --dest-server URLCreer une Application
argocd app sync appForcer la synchronisation vers l'etat Git
argocd app get appEtat de sante et de sync d'une application
argocd app diff appComparer l'etat live et l'etat Git
argocd app history appHistorique des deploiements
argocd app rollback app 12Revenir a une revision anterieure
argocd app set app --sync-policy automated --self-healActiver la reconciliation automatique
argocd app wait app --healthBloquer jusqu'a etat Healthy
argocd cluster add CONTEXTEnregistrer un cluster cible
argocd repo add URL --username u --password pDeclarer un depot Git
kubectl apply -f application.yamlCreer une App via CRD (App of Apps)
argocd appset create applicationset.yamlGenerer des apps en masse (ApplicationSet)
argocd app set app -p image.tag=$SHASurcharger un parametre Helm

Cas concret (contexte projet)

Sur la plateforme GitOps multi-clusters Kubernetes, cette approche a fait de Git l'unique source de verite : promotion par Pull Request revue, reconciliation continue et rollback par git revert, pour une conformite continue en environnement bancaire. Le retour sur investissement apparait des les premiers cycles de livraison automatises, puis se compose dans la duree.

Synthese : bonnes pratiques

  • Git unique source de verite ; aucune modification kubectl manuelle en production (self-heal actif).
  • Repo GitOps separe du code applicatif, structure par environnement et par equipe.
  • Secrets toujours chiffres (SOPS/Sealed Secrets/External Secrets).
  • Promotion par PR revue : tracabilite et reversibilite natives.
  • Sante et drift exposes en metriques/alerting pour une conformite continue.

Conclusion

Maitriser ArgoCD ne se limite pas a connaitre des commandes : il s'agit de l'integrer dans une demarche d'ingenierie reproductible, observable et securisee. Applique avec rigueur, ArgoCD devient un levier mesurable de fiabilite et de velocite des cycles de livraison.

Local → GitHub → CI/CD → VPS

Local

Dev, tests unitaires, Docker, lint

GitHub

Push, Pull Request, revue de code, versionnement

CI/CD

Build, tests, scan securite, image Docker

VPS

Deploiement Docker/K8s, Cloudflare, monitoring

Installer et configurer ArgoCD (approche industrialisee) | Idriss Kriouile