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.
Application e-commerce
Conception et mise en production d'une boutique complète sur cluster Kubernetes
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.
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.
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.
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.
Pipeline CI/CD & Infrastructure as Code
Automatisation complète du cycle de vie - du commit au déploiement en production
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.
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.
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