Aller au contenu

Évaluation & Fiche de Notation : TP CI/CD

Votre objectif dans ce TP (3 jours) est de concevoir, d'automatiser et de présenter une chaîne de CI/CD complète pour déployer et mettre à jour votre application web de manière transparente.

Étape 1 : Votre Architecture Applicative & Packaging (Préparation)

  • Votre Application Web : Codez un microservice très simple (ex: NodeJS, Python, Go) exposant une page d'accueil ou une API simple (avec une route de santé /healthz).
  • Votre Conteneurisation (Docker) : Écrivez un Dockerfile pour empaqueter votre application. Vous devez concevoir un conteneur optimisé et sécurisé (choix d'une image de base légère, utilisateur non-root).
  • Votre Configuration de Déploiement : Rédigez une configuration simple (ex: Helm Chart) permettant de paramétrer le déploiement de votre conteneur (définition de l'image, des tags, et du port d'écoute).

Étape 2 : Votre Pipeline d'Intégration Continue (CI)

Votre pipeline (qui doit s'exécuter automatiquement lors d'un merge sur votre branche master ou main) doit valider et publier votre application :

  1. Qualité du Code (Lint/Syntaxe) : Exécutez un linter pour valider votre code applicatif.
  2. Sécurité (Scan) : Exécutez un outil d'audit ou de scan de vulnérabilités (ex: Trivy) sur votre code ou votre image Docker.
  3. Validation de votre Helm Chart (Lint & Kubeconform) :
    • Exécutez helm lint pour vous assurer que la structure et la syntaxe de votre chart sont valides.
    • Générez vos manifestes YAML de test (via helm template) et lancez kubeconform en spécifiant la version Kubernetes exacte de votre cluster Minikube local (ex: kubeconform -kubernetes-version 1.31.0) afin de vous assurer de la compatibilité de vos APIs.
  4. Versioning & Tagging Automatique : Générez automatiquement un numéro de version sémantique unique (ex: incrément de patch 1.0.1, 1.0.2) à chaque merge.
  5. Publication (Registry) : Buildez votre image Docker avec ce tag de version et poussez-la sur votre registre d'images (Docker Hub, GitHub Registry, etc.).

Étape 3 : Votre Workflow de Déploiement Continu (CD)

  1. Configuration de votre Outil de CD (ArgoCD) :
    • Connectez le dépôt Git de votre projet dans l'interface d'ArgoCD (en ClickOps).
    • Créez votre application pour qu'elle pointe vers vos configurations de déploiement.
  2. Les 3 Stratégies de GitOps pour l'Automatisation de vos Mises à jour : Vous devez comprendre et être capables de présenter comment l'une des 3 approches GitOps suivantes a été configurée pour synchroniser votre environnement local Minikube :
    • Approche 1 : Via targetRevision Git (Suivi du dépôt Git) : Votre application ArgoCD pointe directement sur une branche ou un tag Git. Pour mettre à jour l'application, votre CI (ou vous-même) doit commiter le nouveau tag de l'image (ex: dans values.yaml) sur Git. ArgoCD détecte ce commit et applique le changement sur le cluster.
    • Approche 2 : Via targetRevision Chart (Suivi d'un registre Helm) : Votre Helm chart est packagé et poussé sur un registre de charts Helm (ex: OCI, ChartMuseum). Votre application ArgoCD est configurée pour pointer vers ce registre de charts, et sa targetRevision cible une contrainte de version (ex: 1.0.x). Dès qu'un nouveau chart est publié, ArgoCD applique la mise à jour.
    • Approche 3 : Via Argo CD Image Updater (Suivi du registre d'images) : Votre application ArgoCD pointe vers Git, mais l'extension Argo CD Image Updater surveille directement votre registre de conteneurs (Docker Hub, etc.). Dès qu'une nouvelle image valide (ex: respectant une regex ou un SemVer 1.0.x) est poussée sur le registre par la CI, l'Image Updater détecte le tag et met à jour l'application (soit par surcharge temporaire en mémoire de la valeur de l'image, soit en poussant automatiquement un commit sur votre Git).

Grille de Notation (Sur 20 Points)

Votre évaluation est divisée en deux phases : votre réalisation technique en direct (12 points) et votre entretien questions-réponses avec l'examinateur (8 points).

A. Réalisation Technique & Démonstration (12 Points)

Critères d'Évaluation Bareme Description / Indicateurs de réussite
Pipeline de CI (Lint, Scans, Validation Helm) / 4 pts Clarté de votre pipeline. Votre linter, vos scans de sécurité (Trivy) et la validation du Helm Chart (helm lint + kubeconform avec version K8s cible) s'exécutent avec succès.
Gestion du Versioning (Auto-Tag & Push) / 3 pts Votre image Docker est buildée avec un numéro de version sémantique incrémenté automatiquement lors du merge, puis poussée proprement sur le registre.
Configuration du Déploiement (CD) / 3 pts Connexion réussie du dépôt Git et déploiement initial de votre application dans ArgoCD via l'interface web (ClickOps).
Mise à jour automatique (Workflow CD) / 2 pts Détection automatique de votre nouvelle image par ArgoCD/Image Updater, déclenchant le déploiement de votre mise à jour sans action manuelle.

B. Session Questions-Réponses & Choix Techniques (8 Points)

Critères d'Évaluation Bareme Description / Indicateurs de réussite
Compréhension du Cycle de Vie CI/CD / 3 pts Capacité à expliquer le rôle de chaque étape de votre chaîne (Lint, Test, Build, Registry, CD). Compréhension de la séparation entre intégration et déploiement.
Maîtrise du Versioning & des Déclencheurs / 3 pts Justifier l'usage de numéros de version uniques (SemVer) plutôt que d'un tag fixe (latest). Expliquer le principe de détection automatique des mises à jour.
Clarté de la Démonstration & Démarche de Debug / 2 pts Capacité à décrire votre architecture de façon simple, structure de pensée logique face à un bug survenu durant le live.