Ce projet reprend un ancien projet de quiz dévelopé à l'ESIEE dans le cadre du cours développement frontend. Le quiz est séparé avec une API back en Django et le front est en Vue, chacun avec leur image docker respective. Pour les faire fonctionner avec kubernetes il a fallu modifier notamment le backend suite à une migration de sqlite vers Postgresql.
Plus de détails sur les déploiements Kubernetes et le code sont disponible dans le rapport. Les quelques images de l'application sont disponibles dans le rapport.
graph LR;
subgraph "Internet"
internet((Internet))
end
subgraph "Kubernetes Cluster"
ingressGateway[Traefik \n Ingress Gateway] -->|/| frontend[Quiz-ui \n Frontend Service]
ingressGateway -->|/api| middleware_strip_api[Traefik Middleware \n strips /api]
middleware_strip_api --> backend[Quiz-api \nBackend Service]
backend --> database[PGSQL \n Database Service]
database[PGSQL Database Service] --- persistentVolume[Persistent \n Volume]
subgraph "Quiz app"
frontend
backend
database
end
end
internet -->|*| ingressGateway
Avant de commencer, assurez-vous d'avoir installé les outils suivants :
Pour construire les images Docker, exécutez les commandes suivantes :
docker build -t my-quiz-api ./quiz-api
docker build -t my-quiz-ui ./quiz-ui
Pour publier les images sur Docker Hub, utilisez les commandes suivantes :
docker tag my-quiz-api adham999/my-quiz-api
docker push adham999/my-quiz-api
docker tag my-quiz-ui adham999/my-quiz-ui
docker push adham999/my-quiz-ui
minikube start
Pour utiliser Traefik, installez-le avec Helm :
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik
./deploy.sh
ou
kubectl apply -f my-quiz-namespace.yaml
kubectl apply -f my-quiz-ui-deployment.yaml
kubectl apply -f my-quiz-api-deployment.yaml
kubectl apply -f my-quiz-ui-service.yaml
kubectl apply -f my-quiz-api-service.yaml
kubectl apply -f my-quiz-ingress.yaml
kubectl apply -f my-quiz-postgres-pv.yaml
kubectl apply -f my-quiz-postgres-pvc.yaml
kubectl apply -f my-quiz-postgres.yaml
kubectl apply -f my-quiz-postgres-service.yaml
Pour accéder au service, exécutez la commande suivante :
minikube service traefik
Exemple de sortie :
|-----------|---------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|---------|-------------|------------------------|
| default | traefik | | http://127.0.0.1:49585 |
| | | | http://127.0.0.1:49586 |
|-----------|---------|-------------|------------------------|
Il suffit alors d'ouvrir l'un des deux URLs dans un navigateur, le premier est en HTTP et le second en HTTPS.