É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
Dockerfilepour 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 :
- Qualité du Code (Lint/Syntaxe) : Exécutez un linter pour valider votre code applicatif.
- 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.
- Validation de votre Helm Chart (Lint & Kubeconform) :
- Exécutez
helm lintpour 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 lancezkubeconformen 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.
- Exécutez
- 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. - 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)¶
- 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.
- 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
targetRevisionGit (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: dansvalues.yaml) sur Git. ArgoCD détecte ce commit et applique le changement sur le cluster. - Approche 2 : Via
targetRevisionChart (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 satargetRevisioncible 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).
- Approche 1 : Via
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. |