Spring Config Server avec 3 Microservices
implémenter Spring Cloud Config Server avec des microservices A, B et C
Introduction
Qu'est-ce que Spring Cloud Config Server ?
Spring Cloud Config Server est un service qui centralise la gestion de la configuration de tous vos microservices. Imaginez-le comme une bibliothèque où chaque microservice vient chercher ses paramètres de configuration au démarrage.
Avantages principaux :
- Centralisation : Toutes les configurations au même endroit
- Séparation : Code et configuration séparés
- Environnements : Configurations différentes pour dev, test, prod
- Sécurité : Secrets chiffrés et sécurisés
Architecture Globale Détaillée
Cas d'Utilisation 1 : Configuration Locale avec .properties
1 Créer le projet Config Server
Utilisez Spring Initializr (https://start.spring.io) pour créer le projet :
- Project : Maven Project
- Language : Java
- Spring Boot : 2.7.x ou supérieur
- Dependencies : Spring Web, Config Server,actuator,devtools
- Artifact : config-server
Fichier pom.xml du Config Server :
2 Configuration du Config Server avec .properties
Fichier application.properties du Config Server :
Structure du dépôt config-repo
Explication détaillée des propriétés :
server.port=8888: Le port 8888 est conventionnel pour Config Serverspring.profiles.active=native: Mode local (pas de Git)spring.cloud.config.server.native.searchLocations: Où trouver les fichierslogging.level.org.springframework.cloud=DEBUG: Logs détaillés pour débogage
3 Classe principale du Config Server
Comprendre les annotations
@SpringBootApplication: Combine plusieurs annotations Spring importantes@EnableConfigServer: Transforme l'application en Config ServerSpringApplication.run(): Démarre l'application Spring Boot
4 Créer les fichiers de configuration .properties
Créez le répertoire src/main/resources/config-repo et ajoutez les fichiers suivants :
Fichier application.properties (configuration commune à tous les services) :
Fichier service-a.properties :
Fichier service-b.properties :
5 Créer les microservices avec .properties
Pour chaque microservice (A, B, C), créez un projet Spring Boot avec les dépendances :
- Spring Web : Pour les endpoints REST
- Config Client : Pour consommer la configuration
- Actuator : Pour le monitoring
Add Dependencies to pom.xml commun pour les microservices :
6 Configuration des microservices
Le fichier application.properties.
Il contient les informations pour se connecter au Config Server.
Fichier application.properties pour Service A :
Différence entre bootstrap.properties et application.properties
bootstrap.properties: Chargé en premier, pour la configuration du Config Clientapplication.properties: Chargé après, pour la configuration de l'application elle-même
Fichiers similaires pour Service B et Service C avec :
- Service B :
spring.application.name=service-b - Service C :
spring.application.name=service-c
7 Classes principales des microservices
Service A (ServiceAApplication.java) :
Comprendre l'injection de configuration
@Value("${property.name}"): Injecte une valeur de configuration#{'${list.property}'.split(',')}: Convertit une chaîne en liste- Les propriétés sont chargées depuis le Config Server
8 Tester la configuration locale
Suivez ces étapes pour tester votre configuration :
Ordre de démarrage important :
- Config Server : Doit démarrer en premier
- Microservices : Peuvent démarrer ensuite
Étape 1 : Démarrer le Config Server
Étape 2 : Vérifier l'accès aux configurations
Exemple de réponse du Config Server :
Étape 3 : Démarrer les microservices
Étape 4 : Tester les endpoints des microservices
Cas d'Utilisation 2 : Configuration Git avec .properties
1 Créer un dépôt Git pour les configurations
Git est un système de contrôle de version qui permet de suivre les changements dans les fichiers de configuration.
Structure du dépôt Git
Votre dépôt Git devrait ressembler à cela :
2 Modifier la configuration du Config Server pour Git
Mettre à jour application.properties du Config Server :
Explication des propriétés Git :
spring.cloud.config.server.git.uri: URL du dépôt Gitspring.cloud.config.server.git.default-label: Branche principalespring.cloud.config.server.git.clone-on-start: Clone au démarragespring.cloud.config.server.git.force-pull: Force la mise à jour
3 Configuration avancée Git avec authentification
Pour des dépôts privés, ajoutez l'authentification :
4 Structure avancée du dépôt Git
Exemple de fichier shared/database.properties :
Exemple de fichier shared/security.properties :
5 Configuration avec profils .properties
Vous pouvez créer des fichiers de configuration spécifiques aux profils :
Comprendre les profils Spring :
Les profils permettent d'avoir différentes configurations selon l'environnement :
default: Profil par défautdev: Développementtest: Testprod: Production
Fichiers de configuration par profil :
service-a.properties- Configuration par défautservice-a-dev.properties- Configuration développementservice-a-prod.properties- Configuration production
Exemple service-a-dev.properties :
Exemple service-a-prod.properties :
Variables d'environnement
${DB_USERNAME} et ${DB_PASSWORD} sont des variables d'environnement :
Meilleures Pratiques et Améliorations
1 Structure de configuration optimale
Exemple de features.properties :