TP8 : Microservices avec API Gateway Dynamique A.U.
: 2024/2025
Matière : SoA et Architecture Microservices
Classe : 4Info
Enseignant : Dr. Salah Gontara
Objectifs
— Découvrir Kong en mode DB-less comme API Gateway dynamique
— Déployer deux microservices REST en Node.js (users et products)
— Configurer le routage dynamique et tester via Docker Compose
— Valider les endpoints et préparer un mini rapport
Prérequis
— Docker et Docker Compose installés
— Node.js v22 et npm
— Outils de test : curl ou Postman
Contenu du projet
Arborescence attendue :
tp-kong/
|-- service-a/
|-- Dockerfile
|-- package.json
|-- index.js
|-- service-b/
|-- Dockerfile
|-- package.json
|-- index.js
|-- kong.yml
|-- docker-compose.yml
1. Mise en place des microservices
Service A (Users)
Fichier index.js :
const express = require(’express’);
const app = express();
const PORT = 3001;
const users = [ { id: 1, name: ’Alice’ }, { id: 2, name: ’Bob’ } ];
app.get(’/’, (req, res) => res.json(users));
app.listen(PORT, () => console.log(‘Service A running on :${PORT}‘));
Service B (Products)
Même structure, port 3002 et endpoint /products avec données factices.
Dockerfile (dans service-a/ et service-b/)
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY index.js ./
EXPOSE 3001 % (3002 pour service-b)
CMD ["node", "index.js"]
2. Configuration de Kong
Fichier kong.yml :
_format_version: "1.1"
services:
- name: service-a
url: http://service-a:3001
routes:
- name: users-route
paths: ["/users"]
- name: service-b
url: http://service-b:3002
routes:
- name: products-route
paths: ["/products"]
3. Docker Compose
Fichier docker-compose.yml :
services:
service-a:
build: ./service-a
networks:
- kong-net
service-b:
build: ./service-b
networks:
- kong-net
kong:
image: kong:latest
environment:
KONG_DATABASE: "off"
KONG_DECLARATIVE_CONFIG: /etc/kong/kong.yml
volumes:
- ./kong.yml:/etc/kong/kong.yml:ro
ports:
- "8000:8000" % Proxy
- "8001:8001" % Admin API
networks:
- kong-net
networks:
kong-net:
driver: bridge
4. Démarrage et tests
1. Lancer les conteneurs :
docker compose up -d –build
2. Vérifier :
docker compose ps
3. Tester via curl :
curl http ://localhost :8000/users
curl http ://localhost :8000/products
4. Admin API Kong :
curl http ://localhost :8001/services
5. À rendre
— Fichiers commentés : Dockerfiles, kong.yml, docker-compose.yml
— Captures d’écran des réponses curl