Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

🔁 GitOps – Guide complet (Kubernetes / Argo CD / Flux)

GitOps = Git comme source de vérité + réconciliation automatique (drift detection, audit, rollback). Guide IDEO-Lab densifié : archi, workflow, sécurité, multi-env, troubleshooting.

1.1

Définition & promesse

Git = vérité, cluster = cible. Reconciliation + audit + rollback.

GitDriftReconcile
1.2

Les 4 piliers GitOps

Déclaratif, versionné, pull-based, réconciliation continue.

DeclarativePullAudit
1.3

Outils & écosystÚme

Argo CD / Flux, Helm/Kustomize, Terraform, secrets (SOPS).

ArgoCDFluxHelm
2.1

Architecture type

Repo(s), environnements, apps-of-apps, controllers, policies.

Repo layoutAppsPolicies
2.2

Structure Git recommandée

Mono-repo vs multi-repo, overlays env, promotion par PR.

monorepooverlaysPR
2.3

Workflow CI → GitOps CD

CI build/test + image tag, CD via commit manifests + sync.

CICDPromotion

2.4 Drift & auto-heal

DĂ©tection d’écart entre Git et cluster + correction automatique.

DriftAuto-heal
3.1

Rollouts & stratégies

Blue/Green, Canary, progressive delivery, analyse & rollback.

CanaryBlue/GreenArgo Rollouts
3.2

Sécurité & secrets

RBAC, least privilege, signed commits, SOPS/SealedSecrets, OPA.

RBACSOPSPolicy
3.3

Observabilité

Events, health checks, metrics, alerting sur dérives & sync errors.

MetricsAlertsHealth
4.1

Troubleshooting

Sync errors, diff noisy, CRDs, ordering, hooks, drift “fantîme”.

DiffCRDHooks
4.2

Cheat-sheet GitOps

Commandes, checklists, anti-patterns et “golden rules”.

cmdchecklistrules
1.1 GitOps – DĂ©finition, mental model & diagramme global
DĂ©finition “opĂ©rationnelle”

GitOps est une pratique oĂč Git est la source de vĂ©ritĂ© pour dĂ©crire l’état dĂ©sirĂ© (applications + configuration + parfois infrastructure). Un ou plusieurs contrĂŽleurs (dans le cluster) tirent la configuration depuis Git, la comparent Ă  l’état rĂ©el, puis rĂ©concilient.

Source of truth = Git Deploy = commit / PR Reconcile loop Drift detection Rollback = git revert

Ce que GitOps “remplace”
  • Les accĂšs manuels au cluster (ex: kubectl apply en prod).
  • Les scripts ad-hoc de dĂ©ploiement non traçables.
  • Les “modifs de config” hors Git (drift silencieux).
Pourquoi ça marche si bien ?

Parce que Git est dĂ©jĂ  un outil de gouvernance : revue, historisation, diff, signatures, branches, contrĂŽles d’accĂšs, CI, approbations.

PropriétéGitOps apporte
AuditTraçabilité parfaite : qui a changé quoi et quand.
ReproductibilitĂ©Un cluster vide peut ĂȘtre “reconstruit” depuis Git.
SĂ©curitĂ©Moins de secrets “humains” + RBAC + pull-only.
StabilitéLe drift est détecté et corrigé (auto-heal).
Diagramme GitOps (mental model)
Développeur / SRE
   │
   │  (PR / Merge / Tag)
   ▌
[ GIT Repository ]
   │     ├─ manifests (Kustomize/Helm/YAML)
   │     ├─ policies (OPA / Kyverno)
   │     └─ env overlays (dev/stage/prod)
   │
   │  (pull + diff)
   ▌
[ GitOps Controller in Cluster ]
   │   - Argo CD / Flux
   │   - compare desired vs live
   │   - reconcile (apply)
   │   - detect drift + report
   ▌
[ Kubernetes Cluster ]
   │
   ├─ Deployments / Services / Ingress
   ├─ ConfigMaps / Secrets (encrypted or external)
   ├─ CRDs (operators)
   └─ Observability (events/metrics)
        
IdĂ©e IDEO-Lab : mets ce diagramme en “carte mentale” dans une section Overview, puis une modal dĂ©diĂ©e “ArgoCD vs Flux”.
Cas d’usage parfaits
  • Kubernetes multi-environnements (dev/stage/prod) + besoin d’audit.
  • Équipes nombreuses : standardiser, rĂ©duire les accĂšs prod.
  • Infra “immutable” : reconstruire rapidement (DRP / disaster recovery).
  • Besoin de compliance (SOC2/ISO) : preuves = Git + logs.
Cas “OK” mais à cadrer
  • Infra Terraform : GitOps est possible, mais attention aux “plans/apply” et aux verrous d’état.
  • Config runtime trĂšs dynamique : mieux via external config (vault/feature flags), pas en Git pur.
Anti-cas (ou risques)
  • Si l’équipe fait des changements “à chaud” sans les commiter → drift permanent.
  • Si les secrets sont committĂ©s en clair → interdit.
  • Si l’ordre d’application CRDs/operators n’est pas gĂ©rĂ© → sync failures.
Rùgle d’or

Prod ne doit pas ĂȘtre modifiĂ© directement. Tout passe par Git (PR), sinon tu casses la promesse GitOps.

GitOps vs CD “push” classique
PointCD classique (push)GitOps (pull)
DéploiementCI pousse vers le clusterCluster tire depuis Git
AccĂšs prodCredentials dans CICI n’a pas besoin d’accĂšs prod (idĂ©alement)
AuditLogs CI + scriptsGit = audit principal + état désiré
DriftSouvent invisibleDétecté (diff) + corrigé (auto-heal)
RollbackProcédure variablegit revert ou retour de tag
1.2 Les 4 piliers GitOps (avec checklists)
DĂ©claratif : “voici l’état dĂ©sirĂ©â€

Tu dĂ©cris ce que tu veux, pas la procĂ©dure pour y arriver. Exemple : “3 replicas”, “ingress activĂ©â€, “resource limits”.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: app
        image: registry/app:1.4.2
        resources:
          requests: { cpu: "200m", memory: "256Mi" }
          limits:   { cpu: "1",    memory: "512Mi" }
            
Checklist “dĂ©claratif propre”
  • Manifests gĂ©nĂ©rĂ©s (Helm/Kustomize) mais “reviewables”.
  • Pas de valeurs runtime dans Git (tokens, passwords, clĂ©s).
  • Ressources et probes dĂ©finies (readiness/liveness).
  • Namespaces & labels cohĂ©rents (ownership, app, env).
Objectif : que “diff Git vs cluster” soit lisible (sinon GitOps devient bruyant).
Versionné : Git = historique officiel

Chaque changement d’infra/config/app est un commit, idĂ©alement via PR avec revue & CI.

# Exemple: promotion stage -> prod
- PR: bump image tag 1.4.2 -> 1.4.3
- CI: lint manifests + policy checks
- Merge: Argo/Flux sync prod
- Observability: alert if sync fails
            
Checklist “gouvernance”
  • Branches protĂ©gĂ©es + approbations obligatoires.
  • Conventional commits / changelog (optionnel mais utile).
  • CODEOWNERS (SRE owners sur dossiers prod).
  • Signatures commits/tags (si exigences compliance).
Pull-based : le cluster tire, la CI ne pousse pas

Le contrĂŽleur GitOps vit dans le cluster et rĂ©cupĂšre les manifests depuis Git. Cela rĂ©duit l’exposition : plus besoin de donner au CI des droits admin sur prod.

CI (build/test) ✅
- build image
- scan image
- publish image

CD GitOps ✅
- commit manifests (tag image)
- controller pulls + applies
            
Points d’attention
  • AccĂšs Git : token read-only par environnement si possible.
  • Rotation des secrets (repo credentials) + scopes minimaux.
  • Webhooks optionnels : accĂ©lĂšrent la sync, mais le polling suffit.
RĂ©conciliation continue : drift → correction

Le contrĂŽleur compare en boucle desired (Git) vs live (cluster). Si divergence : il applique, alerte, ou bloque selon policy.

Loop:
- fetch Git revision
- render manifests
- diff vs cluster live
- if drift:
    - sync/apply
    - emit events
    - update health status
            
Modes de sync
ModeEffetQuand ?
Manual syncOpérateur déclencheDébut / contrÎle strict
Auto syncDéploiement automatiquePipeline mature
Auto-healCorrige drift liveProd, anti “kubectl drift”
PruneSupprime ressources retirées de GitQuand Git = vérité totale
1.3 Outils GitOps – Argo CD vs Flux + composants
Stack GitOps “standard” en entreprise
- Git provider: GitHub / GitLab
- Registry: GHCR / ECR / GCR / Harbor
- Kubernetes: EKS / GKE / AKS / on-prem
- GitOps controller: Argo CD (GUI) ou Flux (Kubernetes-native)
- Manifests: Helm charts + values / Kustomize overlays
- Secrets: SOPS + KMS (AWS/GCP) ou External Secrets (Vault/SM)
- Policy: Kyverno ou OPA Gatekeeper
- Observability: Prometheus/Grafana + Alertmanager + logs (Loki/ELK)
        
Argo CD (pattern courant)
  • UI trĂšs pratique (diff, sync status, app tree).
  • Pattern App of Apps pour organiser des centaines d’apps.
  • IntĂ©gration RBAC et multi-clusters.
Flux (pattern courant)
  • TrĂšs “Kubernetes-native” (CRDs : GitRepository, Kustomization
).
  • Composants modulaires, excellent pour GitOps “pur”.
  • Souvent prĂ©fĂ©rĂ© si on veut moins de UI et plus d’infra-as-code.
Table décisionnelle : Argo CD vs Flux
CritĂšreArgo CDFlux
UI / visibilitĂ©âœ… TrĂšs forte➖ (extensions possibles)
ModùleApplications (App CRD)CRDs “K8s-first” (Kustomization
)
OnboardingRapide (GUI + concepts clairs)Plus technique (CRDs, controllers)
Scale multi-appTrĂšs bon (App-of-apps)TrĂšs bon (Kustomizations)
Flux + Helm✅✅ (Helm Controller)
OpinionatedPlutît “App-centric”Plutît “K8s-centric”
Choix simple : Argo CD si tu veux une UI et un modùle “application”. Flux si tu veux un modùle “Kubernetes controllers” ultra IaC.
Helm (templating)

Bon pour packager une app (chart) + paramĂštres par environnement (values).

# values-prod.yaml
replicaCount: 3
image:
  repository: ghcr.io/acme/app
  tag: "1.4.3"
ingress:
  enabled: true
            

Attention : trop de logique Helm rend le diff illisible → rester sobre.

Kustomize (overlays)

Excellent pour overlays env (patches) et composition.

# overlays/prod/kustomization.yaml
resources:
  - ../../base
patches:
  - path: patch-replicas.yaml
  - path: patch-ingress.yaml
            

Astuce : base = commun ; overlays = uniquement deltas (réduit la duplication).

Terraform + GitOps : 2 patterns
Pattern A (classique)

Terraform gùre l’infra (VPC, cluster, IAM, DB), puis GitOps gùre les apps sur le cluster. C’est le plus simple et le plus robuste.

Terraform:
- VPC, EKS/GKE, nodegroups
- ingress controller, cert-manager (option)
GitOps:
- apps + configs + policies
            
Pattern B (Terraform “GitOps”)

Le contrĂŽleur GitOps dĂ©clenche des “apply” Terraform (moins courant). Risques : lock state, ordering, drift infra complexe.

  • OK si “Terraform controllers” matures + states bien gĂ©rĂ©s.
  • Sinon : garde Terraform dans CI dĂ©diĂ©e avec approvals.
2.1 Architecture GitOps – environnements, app-of-apps & policies
Topologie recommandée (lisible & scalable)
Git Repos:
- app-source/         (code + Dockerfile)  -> produit une image
- platform-config/    (manifests GitOps)   -> décrit l'état désiré

Clusters:
- dev cluster
- stage cluster
- prod cluster

Controllers:
- 1 controller GitOps par cluster (souvent)
- ou 1 controller central multi-clusters (selon RBAC)
        
Pourquoi séparer code et config ?
  • Le repo “config” devient le journal de l’état prod.
  • Les droits d’accĂšs sont diffĂ©rents (prod = plus strict).
  • Tu peux promouvoir une image sans toucher au code.
Quand garder un monorepo ?
  • Petite Ă©quipe, peu d’apps.
  • Si tu veux des PR “tout-en-un” (code+deploy).
  • Mais attention : governance prod plus difficile.
Gestion des environnements
ApprochePrincipeAvantageRisque
Branchesdev/stage/prod = branchesSimpleMerge conflicts + drift branch
Dossiers/env/dev /env/prodLisibleGros repo Ă  scaler
Repos séparés1 repo par envRBAC strictDuplication si mal structuré
Recommandation : dossiers env + overlays (Kustomize) ou values (Helm) + PR de promotion.
Policies : empĂȘcher les “mauvaises configs”
Exemples de rĂšgles utiles
  • Interdire :latest en prod (images non immutables).
  • Exiger resources.limits et probes.
  • Interdire privileged: true.
  • Forcer labels (team, env, app).
Outils
  • Kyverno : policies YAML “K8s friendly”.
  • OPA Gatekeeper : policies Rego (puissant).
  • CI lint : kubeconform, kubeval, helm lint.
Pattern “App-of-Apps” (Argo CD)
root-app (Argo CD Application)
└── apps/
    ├── monitoring.yaml   (Prometheus, Grafana)
    ├── ingress.yaml      (Ingress controller)
    ├── app1.yaml         (Business app #1)
    └── app2.yaml         (Business app #2)

Avantages:
- 1 point d'entrée (root-app)
- onboarding simple: ajouter un fichier appX.yaml
- scale: des centaines d'apps gérables
        
2.2 Structure Git – monorepo vs multi-repo + templates
Layout “propre” pour platform-config
platform-config/
├── clusters/
│   ├── dev/        # ce cluster suit env/dev
│   ├── stage/
│   └── prod/
├── env/
│   ├── base/       # manifests communs
│   ├── dev/        # overlays dev
│   ├── stage/
│   └── prod/
├── apps/
│   ├── app-web/
│   ├── app-api/
│   └── app-worker/
└── policies/
    ├── kyverno/
    └── opa/
        

Objectif : sĂ©parer “oĂč ça tourne” (clusters) de “ce qui tourne” (apps).

Mono-repo vs multi-repo (décision rapide)
OptionQuand+ / -
Monorepopetite Ă©quipe, peu d’apps✅ simple / ❌ gouvernance prod difficile
Repo config dĂ©diĂ©moyen/grand SI✅ audit & RBAC / ❌ 2 repos Ă  gĂ©rer
1 repo par envcompliance forte✅ cloisonnement / ❌ duplication si mal gĂ©rĂ©
Promotion (dev → stage → prod)
Pattern simple
  1. CI build + push image app:1.4.3.
  2. PR sur env/dev (ou dev overlay) pour mettre le tag.
  3. Validation (tests, policies) → merge.
  4. PR de promotion vers stage puis prod.
Anti-pattern
  • Écraser le tag prod directement sans passer par stage.
  • Modifier live cluster “pour dĂ©panner” puis oublier de commiter.
  • Utiliser :latest (rollback impossible, drift non maĂźtrisĂ©).
Exemples de fichiers (templates)
Kustomize base
# env/base/kustomization.yaml
resources:
  - deployment.yaml
  - service.yaml
  - ingress.yaml
            
Overlay prod
# env/prod/kustomization.yaml
resources:
  - ../base
patches:
  - path: patch-prod.yaml
images:
  - name: ghcr.io/acme/app
    newTag: "1.4.3"
            
2.3 Workflow CI → GitOps CD (de bout en bout)
Pipeline “golden path”
(1) Dev pushes code
(2) CI:
    - tests
    - build image
    - scan (SCA/SAST)
    - publish image (tag immutable)
(3) CI (ou bot) ouvre PR sur repo config:
    - bump image tag + config changes
(4) Merge PR
(5) GitOps Controller:
    - detect new commit
    - render manifests
    - sync
(6) Observability:
    - health checks
    - alert if sync error / degraded
        
CI : ce que tu veux absolument
  • Tests unitaires + intĂ©gration.
  • Build image reproductible (Dockerfile propre).
  • Scan dĂ©pendances + image (vulnĂ©rabilitĂ©s).
  • Publish image immuable (tag version, digest).
# Exemple de tags
app:1.4.3
app:1.4.3+build.21
app@sha256:abcdef...
            
Deux options “update manifests”
OptionPrincipeNote
Bot commitCI commit direct dans repo configRapide mais attention gouvernance
PR autoCI ouvre PR, humain valideLe plus “enterprise-friendly”
CD GitOps : ce que fait le contrĂŽleur
  1. RécupÚre la derniÚre révision Git (poll/webhook).
  2. Render Helm/Kustomize.
  3. Calcule diff.
  4. Sync (apply) selon la policy.
  5. Surveille health (degraded, progressing
)
Desired (Git) vs Live (cluster)
- if OutOfSync: apply
- if Degraded: alert + maybe rollback
            
Contrîle du “blast radius”
  • DĂ©ployer par namespaces (ownership clair).
  • Limiter permissions du controller (RBAC).
  • Approvals sur dossiers prod (CODEOWNERS).
  • Progressive delivery (canary) pour changements risquĂ©s.
Guardrails (filtres anti-cata)
CoucheContrĂŽleExemples
GitApprovals & protectionsbranch protection, CODEOWNERS
CILint & policy checkskubeconform, helm lint, kyverno test
ClusterAdmission policiesOPA/Kyverno bloque configs non conformes
RuntimeObservability & SLOalerts, rollback automatique
2.4 Drift & auto-heal – comprendre les Ă©carts et les “diffs bruyants”
Définition

Le drift apparaĂźt quand l’état rĂ©el du cluster diverge de l’état dĂ©sirĂ© stockĂ© dans Git. Exemple : quelqu’un fait un kubectl edit en prod, ou un operator modifie un champ.

Git says: replicas=3
Cluster live: replicas=5
=> OutOfSync / drift
        
Causes humaines
  • Hotfix “juste pour dĂ©panner” → non committĂ©.
  • AccĂšs prod trop large (beaucoup d’admins).
  • Absence de process PR / approbations.
Causes techniques
  • Operators/CRDs qui “mutent” des champs.
  • Defaulting API server (valeurs injectĂ©es).
  • Controllers qui ajoutent annotations/labels dynamiques.
Auto-heal : la “vraie” valeur GitOps
  • Auto-heal ON : le controller remet le cluster comme Git le dĂ©crit.
  • Auto-heal OFF : drift dĂ©tectĂ©, mais correction manuelle (ou PR) requise.
Stratégie recommandée
  • Dev/stage : auto-heal ON (itĂ©rations rapides)
  • Prod : auto-heal ON + RBAC strict + policy checks
Si tu dois hotfix en prod
  1. Faire la modif (si urgence).
  2. CrĂ©er immĂ©diatement PR “align Git avec live”.
  3. Une fois PR mergée : re-sync GitOps.
Réduire le bruit de diff
  • Éviter champs “auto” dans Git (timestamps, status fields).
  • Configurer “ignore differences” sur champs mutĂ©s (selon outil).
  • Standardiser labels/annotations.
  • Limiter la logique Helm (diff plus stable).
3.1 Rollouts – Blue/Green, Canary, progressive delivery & rollback
Stratégies de déploiement
StratégiePrincipeQuand
Rolling updateRemplacement progressif podsPar défaut, changements simples
Blue/GreenDeux versions, switch trafficQuand tu veux un cutover net
CanaryTrafic progressif vers nouvelle versionQuand risque élevé / perf
Canary mental model:
- 5% traffic -> observe
- 25% traffic -> observe
- 50% traffic -> observe
- 100% -> promote
If errors -> abort / rollback
        
Argo Rollouts (exemple “conceptuel”)
kind: Rollout
spec:
  strategy:
    canary:
      steps:
      - setWeight: 10
      - pause: { duration: 2m }
      - setWeight: 25
      - pause: { duration: 5m }
      - setWeight: 50
      - pause: { duration: 10m }
        

L’idĂ©e : ton GitOps dĂ©ploie un objet Rollout (dĂ©claratif), puis la stratĂ©gie fait le reste.

Quality gates
  • Gates metrics : taux d’erreur HTTP, latence P95, saturation CPU/mem.
  • Gates logs : spikes d’exceptions, timeouts DB.
  • Gates fonctionnels : smoke tests sur endpoints critiques.
“Progressive delivery” = GitOps + mĂ©triques + dĂ©cisions automatiques.
Rollback : 3 niveaux
  1. Rollback Git : git revert du commit manifests (le plus propre).
  2. Rollback rollout : abort canary / promote ancienne version.
  3. Rollback infra : plus rare, via Terraform + approvals.
# RĂšgle pratique:
Rollback = revenir à un état Git connu "green"
        
3.2 SĂ©curitĂ© GitOps – RBAC, secrets, signatures, policies
Principe : least privilege
  • Le controller GitOps a des droits limitĂ©s (namespaces ciblĂ©s).
  • Les humains n’ont pas besoin d’ĂȘtre admins prod.
  • Le repo prod est protĂ©gĂ© (CODEOWNERS + approvals).
RBAC quick rules:
- 1 namespace = 1 équipe (idéal)
- interdire cluster-admin au controller
- limiter verbs: get/list/watch/apply sur ressources nécessaires
            
Git Access
  • Token repo read-only (si possible) cĂŽtĂ© controller.
  • Rotation pĂ©riodique.
  • Scopes minimaux (pas “admin repo”).
Secrets : ce qu’il faut faire
Option A : SOPS (recommandé GitOps)

Secrets chiffrés dans Git, déchiffrés dans le cluster via KMS.

secret.enc.yaml (in Git)  ✅ encrypted
controller decrypts with KMS (AWS/GCP)
applies Secret to cluster
            
Option B : External Secrets

Git ne contient pas le secret, seulement une référence (Vault/Secret Manager).

Git: ExternalSecret manifest
Runtime: operator fetches value from Vault/SM
            
Interdit : committer des secrets en clair (mĂȘme “temporairement”).
Supply chain security
  • Signatures images (cosign) + vĂ©rification en admission.
  • SBOM (cyclonedx/spdx) gĂ©nĂ©rĂ© en CI.
  • Scan vulnĂ©rabilitĂ©s (deps + images).
  • Pin par digest (@sha256) pour immutabilitĂ© stricte.
Golden rule:
- image tags = ok
- digests = best (immutable)
- "latest" = never in prod
        
Policies (admission control)

But : rendre impossible un dĂ©ploiement dangereux, mĂȘme si quelqu’un pousse un mauvais manifest.

RĂšgleExemple
Interdire containers privilegedsecurityContext.privileged != true
Forcer limitsresources.limits obligatoires
Interdire latestimage != *:latest
Forcer labelsteam/env/app requis
3.3 ObservabilitĂ© GitOps – health, events, metrics & alerting
Ce que tu dois monitorer
  • Sync status : in sync / out of sync
  • Health : healthy / degraded / progressing
  • Latency de sync : temps entre commit et dĂ©ploiement
  • Erreurs rĂ©pĂ©tĂ©es : retry loops, hooks failing
Alerts recommandées:
- app OutOfSync > X min
- app Degraded
- sync failures spikes
- drift frequency high (symptĂŽme d'accĂšs manuel)
          
Signal vs bruit

Si tes dashboards sont rouges tout le temps, l’équipe les ignore. Fixe le “diff noise” (champs dynamiques), standardise les manifests, et dĂ©finis des SLO simples.

Quick SLO (exemples)
  • 95% des dĂ©ploiements “Healthy” en < 10 minutes
  • 0 dĂ©ploiement prod via accĂšs manuel (objectif)
4.1 Troubleshooting GitOps – erreurs frĂ©quentes & solutions
Sync errors : pattern de diagnostic
  1. Lire l’erreur exacte (resource + message).
  2. Valider que la ressource existe (namespace, CRD, API version).
  3. Vérifier permissions (RBAC du controller).
  4. Vérifier rendus Helm/Kustomize (templating).
Cas typiques:
- "namespace not found" -> créer namespace en amont
- "forbidden" -> RBAC du controller
- "no matches for kind X" -> CRD manquante
        
CRDs : le piÚge n°1

Si tu appliques un objet custom avant sa CRD, ça échoue.

Ordre recommandé:
1) CRDs
2) Operators/controllers
3) Custom resources (CRs)
        

Solution : séparer en apps (infra) et apps (workloads), ou utiliser sync waves/hooks.

Diff “bruyant”
  • Champs mutĂ©s par operators → ignorer certains champs.
  • Annotations dynamiques (ex: checksum config) → standardiser.
  • Helm trop “smart” → rĂ©duire logique.
Recovery playbook (rapide)
  1. Stop the bleeding : pause auto-sync si nécessaire.
  2. Rollback : revert commit / revenir au dernier état green.
  3. Fix root cause : CRD ordering / RBAC / policy.
  4. Re-enable : auto-sync + monitor health.
4.2 Cheat-sheet GitOps – rùgles d’or, checklists, commandes
Rùgles d’or
1) Git = source de vérité (prod ne se modifie pas à la main)
2) Secrets jamais en clair
3) Images immutables (tag version / digest) — jamais :latest
4) Policy checks avant merge (lint + admission)
5) Observabilité: alerte sur OutOfSync/Degraded
          
Checklist “PR prod”
  • Diff lisible (pas de bruit)
  • Resource limits + probes
  • Rollback plan simple
  • Change log / description claire
  • App health check ok
Commandes (conceptuelles)
# Workflow
git checkout -b feat/bump-app-1.4.3
# modifier image tag / values / overlay
git commit -am "chore(prod): bump app to 1.4.3"
git push

# Rollback
git revert 
git push
          
Anti-patterns
  • “kubectl apply” en prod sans PR
  • Config runtime (secrets) dans Git en clair
  • Helm chart illisible (trop de logique)
  • Pas de policies → drift + dĂ©ploiements dangereux
Si tu veux, je peux te gĂ©nĂ©rer une modal “Argo CD install + config de base” (RBAC, repo credentials, apps-of-apps) exactement au mĂȘme style.