Logo comoweb.fr
comoweb.fr EPITA ING 1
Retour aux articles
GitOps

Automatisation GitOps avec ArgoCD et GitLab CI

De l'Infrastructure-as-Code (Terraform & Ansible) au déploiement continu des applications dans Kubernetes sans action manuelle.

Pourquoi le GitOps transforme la gestion d'un Homelab ?

Avant l'adoption du GitOps, administrer un homelab consistait souvent à exécuter des kubectl apply -f, des scripts bash éparpillés, ou à bidouiller des interfaces web sans historique. Le résultat inévitable : le jour où il faut reconstruire un service ou réinstaller un nœud, personne ne sait exactement quelle version tournait ni avec quelles variables d'environnement.

Avec ArgoCD, le dépôt Git devient l'unique source de vérité (Single Source of Truth).

La chaîne de livraison automatisée

Le flux de déploiement de comoweb.fr suit un schéma strict :

  1. IaC (Terraform & Ansible) :
    • Terraform provisionne les VMs sous Proxmox et les réseaux VLAN associés.
    • Ansible configure les clés, la préparation des disques et les configurations de base.
  2. CI applicative (GitLab CI) :
    • Chaque git push sur un projet déclenche le linting, le build de l'image conteneur (ex: Dockerfile multi-stage) et le push vers le registre privé GitLab.
  3. Réconciliation continue (ArgoCD) :
    • ArgoCD surveille le dépôt de manifestes K8s (Helm / Kustomize).
    • Dès qu'une modification survient sur la branche main (ou qu'une nouvelle version d'image est détectée), ArgoCD compare l'état désiré dans Git avec l'état réel du cluster et synchronise les ressources (Sync).
YAML
# Application ArgoCD pour comoweb
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: site-vitrine-comoweb
  namespace: argocd
spec:
  project: default
  source:
    repoURL: 'https://gitlab.comoweb.fr/comoweb/k8s-manifests.git'
    targetRevision: HEAD
    path: apps/site-vitrine
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: web
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Auto-healing et sérénité

Si une ressource est modifiée par mégarde en CLI directement sur le cluster, le flag selfHeal: true d'ArgoCD détecte la dérive en quelques secondes et rétablit automatiquement la configuration exacte déclarée dans Git.