Retour aux projets

DevOps Kubernetes CI/CD BUT3

Site E-commerce conteneurisé

Boutique e-commerce complète composée de microservices et déployée sur un cluster de 3 serveurs. Une pipeline Gitlab CI/CD automatisé de bout en bout - du commit à la mise en production en moins de 10 minutes.

Mes objectifs

Déployer une vraie application avec une équipe de 6 personnes sur un cluster Kubernetes et construire un pipeline CI/CD complet - de l’écriture du code à la supervision en production.

Partie 1 · PROJET

Application e-commerce

Conception et mise en production d'une boutique complète sur cluster Kubernetes

Page d'accueil de la boutique e-commerce avec catalogue de produits
1

Une boutique en ligne complète

L'application comprend un catalogue de produits, un panier persistant et un tunnel de paiement par carte bancaire. Elle est découpée en 11 services indépendants - chaque service fait une seule chose (gérer le panier, traiter un paiement, envoyer un e-mail…). Si l'un redémarre, les autres continuent de fonctionner normalement.

Panier avec articles ajoutés et prix total
2

Du panier à la confirmation en une seconde

Quand un client valide sa commande, cinq opérations s'enchaînent : lecture du panier, vérification du compte client, récupération des prix produits, traitement du paiement, puis déclenchement automatique de l'expédition et de l'e-mail de confirmation. Le panier est ensuite vidé automatiquement. Tout ça en moins d'une seconde.

Comment les services se parlent entre eux

L'application utilise deux modes de communication selon les besoins :

  • Appels HTTP directs - pour les opérations qui nécessitent une réponse immédiate : vérifier que le produit est en stock, valider le paiement, récupérer les infos client.
  • Messages asynchrones via NATS - une fois la commande validée, un événement est publié sur un canal. Les services d'expédition et d'e-mail s'y abonnent et réagissent indépendamment, sans bloquer la réponse au client.

Ce découplage est la clé de la résilience : si le service d'envoi d'e-mail tombe, la commande est quand même enregistrée et l'expédition part normalement.

Architecture microservices - parcours d'une commande
Le CheckoutService orchestre l'ensemble : il appelle en séquence le panier, les clients, les produits et le paiement - puis publie un événement NATS que le service d'expédition et le service d'e-mail reçoivent chacun de leur côté.
Dashboard Grafana - santé du cluster K3s en temps réel
3

Supervision en temps réel

Chaque service remonte ses métriques - nombre de requêtes, taux d'erreur, temps de réponse - vers Prometheus. Les dashboards Grafana affichent l'état du cluster en direct : consommation CPU, mémoire, nombre de pods actifs sur chaque nœud. En cas d'anomalie, une alerte est déclenchée automatiquement.

kubectl get hpa - réplicas actifs lors d'un test de charge
4

Mise à l'échelle automatique sous charge

Sous forte charge (exemple : Black Friday), le cluster multiplie automatiquement le nombre d'instances actives - jusqu'à 10 réplicas par service - sans aucune intervention humaine. Dès que la charge redescend, les ressources sont libérées. Le stockage des données est répliqué sur les trois serveurs grâce à Longhorn pour ne jamais perdre d'information.

Interface Longhorn - volumes persistants répliqués sur les nœuds
Longhorn - les données (paniers, produits) sont répliquées sur les trois serveurs pour résister à une panne
Partie 2 · PROJET

Pipeline CI/CD & Infrastructure as Code

Automatisation complète du cycle de vie - du commit au déploiement en production

Harbor registry - images Docker de chaque microservice
5

Zéro déploiement manuel

Dès qu'un développeur pousse du code, 9 vérifications automatiques s'enchaînent : qualité du code, tests unitaires, tests d'intégration, détection de fuites de secrets, génération de documentation, construction des images Docker, audit de sécurité, scan de vulnérabilités des conteneurs et du cluster. Si tout est vert, le déploiement se déclenche seul.

Les 9 étapes du pipeline, de A à Z

Chaque push déclenche automatiquement la séquence suivante - aucune étape ne peut être sautée :

  • Qualité & Tests - analyse statique du code (Flake8, Pylint), tests unitaires avec mocks (pytest), puis tests d'intégration avec de vraies bases de données Redis et PostgreSQL fournies par GitLab.
  • Sécurité - détection de secrets dans l'historique Git (Betterleaks), audit des dépendances Python (pip-audit), scan de vulnérabilités des images Docker (Trivy) et analyse de qualité du code (SonarQube).
  • Build & Publication - génération automatique de la documentation (Sphinx), construction des images Docker sans démon (Buildah) et publication dans le registre privé Harbor au format OCI.
  • Déploiement GitOps - les charts Helm sont poussés dans Harbor, puis ArgoCD détecte le changement et synchronise le cluster K3s automatiquement.

Si une seule étape échoue, le pipeline s'arrête et le code n'est jamais déployé. En production, aucune image non validée ne peut atteindre le cluster.

Pipeline CI/CD GitLab avec 9 stages et déploiement ArgoCD
Les 9 stages du pipeline GitLab CI - les étapes en violet concernent la qualité et les tests, en rouge la sécurité, en bleu le build et la documentation, en vert la livraison et le déploiement via ArgoCD.
Dashboard ArgoCD - applications déployées Synced et Healthy
6

Infrastructure reproductible en quelques minutes

L'environnement DevOps complet (GitLab, Harbor, ArgoCD) est provisionné automatiquement via Terraform : trois serveurs créés sur le cloud, configurés par Ansible, opérationnels en minutes. ArgoCD surveille le dépôt Git en permanence et synchronise l'état réel du cluster avec le code - la source de vérité est toujours le dépôt, jamais une intervention manuelle.

Le résultat

Application en production sur 3 serveurs - scaling automatique ×10 sous charge, déploiement bloquant en moins de 10 min après chaque commit. Aucune image non validée ne peut atteindre le cluster.

3 compétences acquises

Orchestration Kubernetes

K3s, Helm, HPA, Longhorn - cluster multi-serveurs avec scaling automatique et stockage répliqué.

Pipeline CI/CD complet

GitLab, Buildah, Harbor, ArgoCD - du commit au déploiement GitOps en 9 étapes automatisées.

Sécurité applicative

Trivy, SonarQube, audit dépendances - aucune image non validée ne peut atteindre le cluster.

Mikaël Bazzaro — Site E-commerce conteneurisé · K3s · GitLab CI · ArgoCD · Terraform · BUT3