Skip to content

Narutino10/projet-clusterisation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projet Clusterisation de Conteneurs

OUAHABI Ibrahim 5IW3 ESGI Paris

📦 Objectif

Mettre en place une application conteneurisée et orchestrée avec :

  • Backend : NestJS (TypeScript)
  • Frontend : React (JavaScript)
  • Base de données : PostgreSQL

Déployée sur un cluster Kubernetes pour démontrer : ✅ Haute disponibilité
✅ Persistance des données
✅ Sécurité (Secrets)
✅ Exposition via Ingress


📁 Structure du projet

/backend/backend-app        → NestJS backend
/frontend/frontend-app      → React frontend
/k8s                       → Manifests Kubernetes (YAML)

🚀 Étapes d’installation

1️⃣ Démarrer Kubernetes avec Docker Desktop

  • Active Kubernetes dans Docker Desktop
  • Vérifie :
kubectl cluster-info
kubectl get nodes

2️⃣ Construire et pousser les images Docker

Backend :

cd backend/backend-app
docker build -t iouahabi/backend:latest .
docker push iouahabi/backend:latest

Frontend :

cd frontend/frontend-app
docker build -t iouahabi/frontend:latest .
docker push iouahabi/frontend:latest

3️⃣ Configurer le fichier hosts

Ajoute à la fin de C:\Windows\System32\drivers\etc\hosts :

127.0.0.1 app.local

4️⃣ Déployer Kubernetes

kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/postgres.yaml
kubectl apply -f k8s/backend.yaml
kubectl apply -f k8s/frontend.yaml
kubectl apply -f k8s/ingress.yaml
kubectl apply -f k8s/frontend-hpa.yaml  # Bonus HPA

5️⃣ Vérifier les déploiements

kubectl get pods
kubectl get services
kubectl get ingress
kubectl get hpa

6️⃣ Accéder à l’application


🔐 Sécurité

  • Secrets stockés dans k8s/secrets.yaml
  • Variables d’environnement injectées dans les pods

📊 Tests réalisés

  • Suppression d’un pod frontend → Kubernetes recrée automatiquement le pod
  • Scale up/down :
kubectl scale deployment frontend --replicas=5
kubectl scale deployment frontend --replicas=3
  • Autoscaling (HPA) :
kubectl get hpa

📷 Captures

  • kubectl get podsGet pods
  • kubectl get servicesGet services
  • kubectl get ingressGet ingress
  • Backend → Backend
  • Frontend → Frontend
  • HPA → kubectl get hpa
  • Test de résilience → Test de résilience Kubernetes
  • Schéma d’architecture → Schéma Architecture

✅ Bonus réalisés

  • Autoscaling horizontal (HPA)
  • Installation de Metrics Server

✏ Conclusion

Ce projet démontre la capacité à déployer une application complète (frontend, backend, base de données) sur Kubernetes, avec haute disponibilité, ingress, secrets, et autoscaling.
Merci pour votre attention !


💬 Auteur

  • Docker Hub : iouahabi
  • GitHub : [Narutino10]

About

Déploiement d’une application fullstack (React + NestJS + PostgreSQL) sur un cluster Kubernetes. Ce projet met en œuvre la haute disponibilité, l’ingress, la gestion des secrets, la persistance des données et l’autoscaling (HPA). Réalisé à l’ESGI dans le cadre d’un projet d’architecture cloud et conteneurisation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors