đ Argo CD : le GitOps sur k3s, le dĂ©pĂŽt Git comme source de vĂ©ritĂ©
đ Introduction
Ta CI construit et teste lâimage â GitLab CI ou GitHub Actions font ça trĂšs bien. Mais ensuite ? Qui applique les manifestes sur le cluster Kubernetes ? Si la rĂ©ponse est « quelquâun lance kubectl apply depuis son poste », tu as un problĂšme : aucun historique, aucune trace de qui a dĂ©ployĂ© quoi, et un cluster qui dĂ©rive doucement de ce que dĂ©crivent tes fichiers.
Le GitOps rĂ©pond à ça, et Argo CD est son implĂ©mentation la plus rĂ©pandue pour Kubernetes. Câest un projet open source, diplĂŽmĂ© de la CNCF. LâidĂ©e : le dĂ©pĂŽt Git dĂ©crit lâĂ©tat souhaitĂ© du cluster, et Argo CD sâassure en permanence que le cluster y ressemble. On va le poser sur un k3s local.
đ Câest quoi, le GitOps ?
Le GitOps repose sur une inversion simple : au lieu de pousser des changements vers le cluster, on les déclare dans Git, et un agent dans le cluster les tire et les applique. Trois principes :
- DĂ©claratif : tout lâĂ©tat (dĂ©ploiements, services, config) est dĂ©crit en fichiers YAML â Ă©ventuellement gĂ©nĂ©rĂ©s par Helm ou Kustomize.
- Versionné : ces fichiers vivent dans Git. Le dépÎt est la source de vérité unique.
- RĂ©conciliĂ© en continu : Argo CD compare sans arrĂȘt lâĂ©tat rĂ©el du cluster Ă ce que dit Git, et corrige les Ă©carts.
đ Installer Argo CD sur k3s
Lâinstallation officielle tient en deux commandes, plus un accĂšs Ă lâinterface :
kubectl create namespace argocd
kubectl apply -n argocd --server-side --force-conflicts \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# accéder à l'interface web (et à l'API)
kubectl port-forward svc/argocd-server -n argocd 8080:443La version stable au moment oĂč jâĂ©cris est Argo CD 3.4.5. Une fois les pods dĂ©marrĂ©s, lâinterface est disponible sur https://localhost:8080.
đ§± Une Application, câest un pointeur vers Git
Le cĆur dâArgo CD est un objet Kubernetes : la ressource Application. Elle dit « voici un dĂ©pĂŽt, un chemin, et un cluster de destination â garde-les synchronisĂ©s » :
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: mon-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/moi/mon-repo-gitops
targetRevision: main
path: apps/mon-app
destination:
server: https://kubernetes.default.svc
namespace: mon-app
syncPolicy:
automated:
prune: true
selfHeal: trueLes deux options de automated sont les plus parlantes : selfHeal ramĂšne le cluster vers Git sâil dĂ©rive (un kubectl edit sauvage est annulĂ©), et prune supprime ce qui a disparu du dĂ©pĂŽt. Ă partir de lĂ , dĂ©ployer = commiter.
đŻ Pourquoi câest puissant
- Historique et audit gratuits. Lâhistorique Git est lâhistorique des dĂ©ploiements : qui a changĂ© quoi, quand, et pourquoi. Un rollback, câest un
git revert. - SĂ©paration propre CI / CD. La CI construit lâimage et met Ă jour le tag dans le dĂ©pĂŽt GitOps ; Argo CD sâoccupe du dĂ©ploiement. Chacun son rĂŽle.
- SĂ©curitĂ© du modĂšle « pull ». Argo CD tire depuis Git, Ă lâintĂ©rieur du cluster. Nul besoin de confier les identifiants du cluster Ă un pipeline externe.
â ïž Quelques prĂ©cautions
- Git devient critique. Le dépÎt est la source de vérité : on le protÚge (branches, revues) comme le code applicatif.
- Ne commite pas de secrets en clair. Les manifestes sont versionnés : mots de passe et clés passent par des outils dédiés (Sealed Secrets, SOPS, External Secrets), jamais en dur dans le YAML.
- Automatise la mise Ă jour des tags dâimage. Sans mĂ©canisme (bump du manifeste par la CI, ou Argo CD Image Updater), le tag reste figĂ© dans Git et rien ne se redĂ©ploie.
đ Conclusion
Argo CD transforme le dĂ©ploiement en un acte versionnĂ© et rĂ©versible : le cluster suit Git, pas lâhumeur du dernier kubectl apply. Sur un k3s de homelab, câest un excellent terrain pour apprendre le GitOps sans risque : une Application, un dĂ©pĂŽt, et tu regardes Argo CD garder le cluster alignĂ© tout seul. Le jour oĂč quelquâun bidouille la prod Ă la main, le self-heal remet les choses en place â et lâhistorique dira qui a essayĂ©.
đ Liens utiles
/faq
Questions fréquentes
Qu'est-ce que le GitOps ?
+
Le GitOps est une approche oĂč un dĂ©pĂŽt Git dĂ©crit l'Ă©tat souhaitĂ© de l'infrastructure et des dĂ©ploiements, et oĂč un agent rĂ©concilie en continu le systĂšme rĂ©el avec ce que dit Git. Le dĂ©pĂŽt devient la source de vĂ©ritĂ© unique : tout changement passe par un commit, et rien n'est appliquĂ© Ă la main.
Argo CD pousse-t-il ou tire-t-il les changements ?
+
Argo CD fonctionne en mode « pull » : il tourne Ă l'intĂ©rieur du cluster et tire les manifestes depuis Git pour les appliquer. Aucun accĂšs au cluster n'a besoin d'ĂȘtre exposĂ© Ă la CI, ce qui est plus sĂ»r qu'un « push » oĂč un pipeline externe dĂ©tiendrait les identifiants du cluster.
Comment faire un rollback avec Argo CD ?
+
Puisque l'état vécu du cluster suit Git, revenir en arriÚre se fait par un « git revert » du commit fautif : Argo CD détecte le changement et resynchronise le cluster sur l'état précédent. L'historique Git devient l'historique des déploiements.