دورة

Kubernetes en production : GitOps, observabilité, GKE

Déployer un service IA par Argo CD depuis Git, le livrer en canary avec analyse Prometheus automatique, l'observer avec kube-prometheus-stack, puis décrire le même déploiement sur GKE Autopilot en Terraform avec Workload Identity vers Vertex AI, sans aucune clé.

خبير 6 دروس 8h
ابدأ الدورة
التقدّم 0% · 0/6

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Trois mois après la mise en service de l'assistant interne de Ferrand Médical sur Kubernetes, l'équipe plateforme fait le bilan des incidents. Une version qui répondait 200 mais renvoyait des réponses vides est passée en production : les sondes étaient vertes, le rolling update l'a déployée sur tous les pods en 40 secondes. Un collègue a corrigé une variable « en urgence » avec kubectl edit ; personne ne s'en souvenait au déploiement suivant, qui l'a écrasée. Et la clé d'API Gemini, copiée dans trois Secrets de trois namespaces, n'a jamais été changée depuis sa création.

Ce projet traite ces trois causes avec les outils que les équipes plateforme utilisent réellement : Git comme seule source de ce qui tourne, une livraison progressive qui s'arrête seule quand les métriques se dégradent, et une identité de pod qui rend la clé inutile.

Argo CD : l'application assistant synchronisée sur le commit de revert, Rollout sain, historique des ReplicaSets des versions précédentes (capture réelle du 2026-10-16)

Ce que vous livrez

  • Une plateforme GitOps locale sur kind : Argo CD 3.5, Argo Rollouts 1.10, kube-prometheus-stack 92.9, un serveur Git dans le cluster.
  • Un dépôt de déploiement : le chart et les valeurs par environnement, versionnés dans gitops-source/ et transformés en dépôt git local (gitops-repo/) par make gitops-init. Déployer, revenir en arrière et corriger se font par commit.
  • Une livraison canary avec analyse Prometheus : 34 % puis 67 % du trafic, taux de succès mesuré sur les seuls pods canary, annulation automatique sous 95 %.
  • Un tableau de bord Grafana, deux alertes d'astreinte (PrometheusRule) et les requêtes PromQL qui servent au diagnostic.
  • Un module Terraform GKE Autopilot (réseau privé, Artifact Registry, compte de nœuds dédié, Workload Identity vers Vertex AI) validé et planifié, et la preuve que l'application fonctionne en mode Vertex AI sans clé.

Architecture

flowchart LR
  DEV["Équipe (commit)"] -->|"git push"| GIT["Serveur Git (dans le cluster)"]
  subgraph KIND["Cluster kind lab-k8s-gitops"]
    GIT -->|"lecture toutes les 3 min ou sur refresh"| ACD["Argo CD"]
    ACD -->|"helm template + apply, prune, selfHeal"| RO["Rollout inference (canary)"]
    ARO["Argo Rollouts"] --> RO
    ARO -->|"AnalysisRun : taux de succès du canary"| PROM["Prometheus"]
    PROM -->|"ServiceMonitor, toutes les 15 s"| RO
    GRAF["Grafana"] --> PROM
    ING["Ingress NGINX"] --> RO
  end
  RO -.->|"mode simulé par défaut ; clé d'API en option"| GEM["API Gemini"]
  subgraph GKE["GKE Autopilot (Terraform, plan seulement)"]
    POD["Pod inference (KSA assistant/inference)"] -->|"Workload Identity, aucun secret"| VX["Vertex AI europe-west1"]
  end

Stack

CoucheChoixPourquoi
DéploiementArgo CD v3.5.5réconciliation continue, interface lisible par l'astreinte, rendu Helm natif
Livraison progressiveArgo Rollouts v1.10.1canary avec analyse Prometheus sans maillage de services
Observabilitékube-prometheus-stack 92.9.0 (Prometheus, Grafana)standard de fait ; sur GKE, Managed Service for Prometheus prend le relais
SecretsExternal Secrets Operator + Secret Manager (expliqué), Workload Identity (testé en mode ADC)la meilleure clé est celle qui n'existe pas
CloudGKE Autopilot, Terraform, provider google 8.7facturation au pod, nœuds gérés par Google

Coût et durée

PosteCoût
Cluster kind avec toute la plateforme0 € ; 4,1 Go de RAM mesurés (leçon 1)
make e2e0 appel modèle : le cluster tourne en mode simulé (backend fake)
make e2e-vertex1 appel Vertex AI Gemini 2.5 Flash, hors cluster
Démonstrations canary0 appel modèle
make tf-plan0 € : rien n'est créé
GKE Autopilot si vous l'appliquez0,10 /hdecluster(couvertparlecreˊditgratuitGKEpourunpremiercluster)+0,041/h de cluster (couvert par le crédit gratuit GKE pour un premier cluster) + 0,041 /h pour 3 pods, détail en leçon 6

Durée : 8 heures.

Prérequis

  • Le projet Déployer un service IA sur Kubernetes avec Helm, ou une pratique équivalente des charts, sondes et HPA.
  • Docker avec 6 Go de RAM libres, kind, kubectl, helm 3.8+, git, Terraform 1.9+, Python 3.10+.
  • Pour la partie GKE et l'appel réel : gcloud et des identifiants ADC sur un projet avec Vertex AI activé. Une clé Gemini est facultative (sans elle, le cluster répond en mode simulé).

Programme

LeçonCe qui avanceCommande qui marche à la fin
1. La plateforme GitOps sur kindArgo CD, Rollouts, Prometheus, serveur Git, application déclaréemake up puis make status : Synced, Healthy
2. Synchroniser, corriger la dérive, revenir en arrièredéploiement par commit, self-heal mesuré, git revertmake gitops-revert
3. Livraison progressive avec Argo Rolloutscanary 34/67/100, analyse Prometheus, annulation automatiquecanary défaillant annulé seul
4. Observer le service avec Prometheus et GrafanaServiceMonitor, PromQL d'astreinte, tableau de bordmake e2e vert
5. Secrets et identité : External Secrets, Workload IdentitySecret Manager, ESO, Vertex AI sans clémake e2e-vertex
6. GKE Autopilot en Terraform, et ce que ça coûteréseau privé, cluster, IAM, coûts, nettoyagemake tf-plan, make cloud-down, make down

Le dépôt complet est dans files/.

الموارد

تنزيل الكل (.zip)

المراجع