GitOps avec Argo CD
Le cours GitHub Actions s'arrêtait à un commit : le pipeline écrivait l'étiquette de la nouvelle image dans un fichier de valeurs, et « Argo CD déploie ». Ce cours ouvre cette boîte. Il s'adresse aux personnes qui exploitent des applications sur Kubernetes, ou qui vont devoir le faire, et suppose les objets de base de Kubernetes (Deployment, Service, namespace) et le cours CI/CD : les principes.
L'approche
Tout se fait sur votre poste, dans un laboratoire monté par un script : un cluster Kubernetes local (kind), Argo CD 3.5, et une forge Git, Forgejo, qui tourne dans le cluster. Pas de compte chez un fournisseur, pas de dépôt public : la forge de l'équipe, le cluster et l'outil de déploiement vivent sur votre machine. Les sorties montrées dans les leçons 1 à 7 ont été capturées dans ce laboratoire ; les leçons 8 à 10 (secrets, sécurité, exploitation) s'appuient sur la documentation, le code source d'Argo CD et l'expérience de production de Lyneko, et ne présentent pas de sortie de commande.
L'application qui sert d'exemple est Signalements, la petite API Flask et PostgreSQL des cours précédents. Le cours s'appuie aussi sur l'expérience réelle de Lyneko, qui déploie ses applications avec Argo CD sur Kapsule, le Kubernetes managé de Scaleway, y compris sur les incidents qui ont appris quelque chose.
Ce qu'il faut installer
- Docker,
kubectl1.36,git,jqetopenssl. - kind 0.33 et la ligne de commande
argocd3.5, deux binaires à télécharger (leçon 1). - Environ 4 Go de mémoire libre et 10 Go de disque pour le cluster local.
- Pour la leçon 7, un second cluster kind : prévoyez 2 Go de mémoire de plus. Sous Linux, deux clusters kind dépassent souvent la limite
fs.inotify.max_user_instances(128 par défaut sur de nombreuses distributions) ; le symptôme est unkube-proxyqui redémarre en boucle avectoo many open files. La documentation de kind recommande de relever cette limite (sudo sysctl fs.inotify.max_user_instances=512).
Les leçons
- Les principes du GitOps : la boucle de réconciliation, écrite à la main avant de la confier à un outil.
- Installer Argo CD et déployer une application
- L'Application en détail : synchronisation automatique, auto-réparation, élagage, différences ignorées.
- Structurer les dépôts et promouvoir : valeurs par environnement, application racine, promotion par demande de fusion.
- Synchronisation avancée : vagues, hooks, migration de base de données.
- ApplicationSet : générateurs, environnements d'aperçu, protections.
- Plusieurs clusters : enregistrement limité, générateur de clusters, fenêtres de synchronisation.
- Les secrets : Sealed Secrets, External Secrets Operator et Scaleway Secret Manager.
- Sécuriser Argo CD : projets, RBAC, SSO Google.
- Exploiter Argo CD : adoption de Helm, notifications, métriques, mises à jour.
Pour valider : le quiz (niveau 100) et le lab (niveau 200).
Plan du cours
- GitOps : les principes et le modèle tiré
200 Pratiquer
Ce que recouvre réellement le GitOps : les quatre principes d'OpenGitOps, la boucle de réconciliation, l'écart entre état voulu et état réel, et ce que change le modèle tiré, montré en écrivant un agent de réconciliation de vingt lignes avant de passer à Argo CD. - Installer Argo CD et déployer une application
200 Pratiquer
Les composants d'Argo CD et leur rôle, les variantes d'installation, la première connexion et le compte d'administration, puis une première Application : écart, différence, synchronisation, santé, historique et retour arrière, et pourquoi ce retour arrière n'est pas du GitOps. - L'Application en détail
200 Pratiquer
Les sources d'une Application (manifestes, Helm, Kustomize), la synchronisation automatique, l'auto-réparation et l'élagage, avec leurs comportements réels et parfois surprenants, les champs ignorés, le suivi des ressources et la suppression d'une application avec ou sans cascade. - Structurer les dépôts et promouvoir
300 Concevoir
Où ranger la configuration de déploiement, comment décrire plusieurs environnements sans dupliquer, comment promouvoir une version de la recette à la production par une demande de fusion, et comment amorcer toutes les applications à partir d'une seule, l'application racine. - Ordonner un déploiement : vagues, hooks et options
300 Concevoir
Faire passer une base de données avant l'application et une migration entre les deux : phases et vagues de synchronisation, hooks PreSync, Sync, PostSync et SyncFail, politiques de suppression, réessais par défaut, options de synchronisation, et ce qui se passe réellement quand une migration échoue. - ApplicationSet : des applications en série
300 Concevoir
Générer des Applications à partir d'un modèle : générateurs de répertoires Git, de listes, de matrices et de demandes de fusion, environnements d'aperçu éphémères, migration sans redémarrage, et les protections indispensables contre la suppression en cascade d'un environnement. - Plusieurs clusters
300 Concevoir
Piloter un second cluster depuis Argo CD : ce que fait vraiment argocd cluster add, un enregistrement déclaratif limité à un namespace, le générateur de clusters, le déplacement d'une application entre clusters et les fenêtres de synchronisation. - Les secrets
300 Concevoir
Où mettre les mots de passe quand tout est dans Git : pourquoi Argo CD recommande de résoudre les secrets dans le cluster de destination, Sealed Secrets, External Secrets Operator avec Scaleway Secret Manager, les secrets d'Argo CD lui-même, et la rotation. - Sécuriser Argo CD
300 Concevoir
Argo CD détient les clés de vos clusters : restreindre le projet default, cloisonner par AppProject, écrire une politique RBAC sans droits par défaut, se connecter par SSO Google, désactiver le compte admin, limiter les fonctions risquées et suivre les vulnérabilités. - Exploiter Argo CD
300 Concevoir
Vivre avec Argo CD en production : adopter une release Helm existante sans rien casser, être prévenu des échecs, surveiller les bonnes métriques, dimensionner, mettre à jour, sauvegarder, automatiser la mise à jour des images, et situer Flux. Avec deux incidents réels chez Lyneko.