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 GitRetenu
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 devstaging (revue requise)
  5. Promotion prod : merge PR stagingprod (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