0% ont trouvé ce document utile (0 vote)
11 vues3 pages

Objectifs: TP8: Microservices Avec API Gateway Dynamique

Ce document présente un projet de déploiement de microservices avec Kong en tant qu'API Gateway dynamique. Il inclut des instructions pour mettre en place deux microservices REST en Node.js, configurer le routage dynamique avec Docker Compose, et effectuer des tests via curl. Les livrables comprennent des fichiers commentés et des captures d'écran des résultats des tests.

Transféré par

asma.belkahla.chaabane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues3 pages

Objectifs: TP8: Microservices Avec API Gateway Dynamique

Ce document présente un projet de déploiement de microservices avec Kong en tant qu'API Gateway dynamique. Il inclut des instructions pour mettre en place deux microservices REST en Node.js, configurer le routage dynamique avec Docker Compose, et effectuer des tests via curl. Les livrables comprennent des fichiers commentés et des captures d'écran des résultats des tests.

Transféré par

asma.belkahla.chaabane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 3

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

Vous aimerez peut-être aussi