Aller au contenu principal

ADR-007 : GitOps avec Argo CD pour le déploiement continu de STOA

Métadonnées​

ChampValeur
Statut✅ Accepté
Date15 janvier 2026
LinearCAB-483

Contexte​

La plateforme STOA nécessite une stratégie de déploiement continu (CD) adaptée à son architecture cloud-native Kubernetes. Le pipeline CI actuel (GitLab CI) gère efficacement les builds, les tests, la génération de SBOM et la signature d'images (Cosign).

Contraintes identifiées​

ContrainteImpact
Conformité enterpriseLes clients cibles (banques, assurances, logistique) exigent une piste d'audit complète
Éligibilité CIRBesoin d'une traçabilité fine des activités R&D (qui/quoi/quand)
Multi-environnementDev → Staging → Prod avec configurations différenciées
Sécurité de la chaîne d'approvisionnementSBOM, attestations SLSA, images signées
Petite équipeMinimiser la charge opérationnelle

Décision​

Option retenue : GitOps avec Argo CD (pull-based)

Séparation CI (GitLab) / CD (Argo CD). Le cluster « tire » l'état désiré depuis un dépôt Git dédié.

Options envisagées​

OptionDescriptionVerdict
GitLab CI bout en boutPush-based, runners CI avec accès cluster❌ Surface d'attaque élevée
GitOps avec Argo CDPull-based, le cluster tire depuis Git✅ Retenu
GitOps avec Flux CDPull-based, plus léger mais sans interface❌ Visibilité insuffisante pour les démos

Justification​

  1. Alignement sécurité STOA : le modèle pull-based renforce le message « security-first »
  2. CIR : chaque déploiement génère automatiquement une preuve horodatée dans Git
  3. Démos MVP : l'interface Argo CD permet de visualiser l'état des déploiements
  4. Écosystème : standard de facto dans l'écosystème CNCF/Kubernetes

Architecture​

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ GitLab CI │ │ Registre de │ │ Dépôt Git │
│ (CI seulement)│────▶│ Conteneurs │ │ stoa-envs │
│ │ │ (GitLab/OCI) │ │ (état désiré) │
└─────────────────┘ └─────────────────┘ └────────┬────────┘
│
┌───────────────────────────┘
│ pull (boucle de réconciliation)
▼
┌─────────────────┐
│ Argo CD │
│ (in-cluster) │
└────────┬────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Dev │ │ Staging │ │ Prod │
│ Cluster │ │ Cluster │ │ Cluster │
└───────────┘ └───────────┘ └───────────┘

Workflow de promotion​

  1. Merge vers main (stoa-platform) → Build GitLab CI → Image taguée + signée → Registre
  2. PR automatique sur stoa-envs : bump de version d'image dans envs/dev/
  3. Sync Argo CD : déploiement dev automatique
  4. Promotion staging : merge PR dev → staging (revue requise)
  5. Promotion prod : merge PR staging → prod (approbation + tests de fumée)

Structure du dépôt stoa-envs​

stoa-envs/
├── base/ # Ressources communes
│ ├── kustomization.yaml
│ ├── stoa-gateway/
│ ├── stoa-control-plane/
│ └── observability/
├── components/ # Composants optionnels
│ ├── vault-injection/
│ ├── istio-sidecar/
│ └── debug-mode/
├── envs/ # Overlays par environnement
│ ├── dev/
│ ├── staging/
│ └── prod/
└── argocd/ # Configuration Argo CD
├── projects/
├── applications/
└── applicationsets/

Feuille de route GitOps​

Phase 1 : Fondations GitOps ✅​

LivrableDescription
Argo CDInstallation + SSO Keycloak
Dépôt stoa-envsStructure Kustomize base/overlays
ApplicationsDev (auto-sync), Staging (auto-sync), Prod (manuel)
External SecretsIntégration Vault

Phase 2 : Livraison progressive​

LivrableDescription
Argo RolloutsDéploiements canary (20% → 50% → 100%)
AnalysisTemplateRollback automatique basé sur les métriques Prometheus
ApplicationSetGénération dynamique d'applications par tenant

Phase 3 : Durcissement entreprise​

LivrableDescription
Gatekeeper/OPAPolicies de sécurité
Drift DetectionAlertes automatiques
Dashboard KPIsGrafana avec métriques GitOps

KPIs GitOps​

KPIDescriptionCible
Lead time tenantCommit → Prod< 15 min
Taux de rollback réussiRollbacks automatiques sans intervention> 95%
MTTRTemps moyen de récupération< 5 min
Résolution de dériveDétection et correction de dérive< 1 min
Déploiements traçablesCommits Git avec auteur/date100%

Conséquences​

Positives​

  • ✅ Piste d'audit complète et automatique (valeur CIR)
  • ✅ Rollback instantané via Git
  • ✅ Détection et correction automatique de dérive
  • ✅ Surface d'attaque réduite (CI sans accès prod)
  • ✅ Visualisation de l'état des déploiements pour les démos

Négatives (avec atténuations)​

  • ⚠️ Secrets : External Secrets Operator intégré dès le départ
  • ⚠️ Formation : Documentation du workflow Kustomize
  • ⚠️ Complexité : Structure de dépôt bien conçue

Références​