Créer une passerelle Spring Cloud

Effectué

Dans ce module, nous allons créer une passerelle Spring Cloud et la déployer sur Azure Spring Apps.

Les passerelles sont utilisées pour router le trafic HTTP public vers les microservices :

  • Elles gèrent la logique de routage.
  • Elles sécurisent l’accès aux microservices, qui ne seront pas disponibles publiquement.
  • Elles peuvent également avoir des fonctionnalités de qualité de service (QoS), comme la limitation du débit HTTP.

Créer une passerelle Spring Cloud

Pour créer notre passerelle, nous utilisons https://start.spring.io avec la ligne de commande :

curl https://start.spring.io/starter.tgz -d type=maven-project -d dependencies=cloud-gateway,cloud-eureka,cloud-config-client -d baseDir=todo-gateway -d bootVersion=3.1.5.RELEASE -d javaVersion=17 | tar -xzvf -

Remarque

Nous utilisons les composants Cloud Gateway, Eureka Discovery Client et Config Client.

Configurer l’application

Dans le fichier de configuration src/main/resources/application.properties, ajoutez la propriété suivante :

spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
  • La partie spring.main.allow-bean-definition-overriding=true consiste à configurer Spring Cloud Gateway pour utiliser le bean Spring Cloud Discovery Server qui est configuré dans la bibliothèque de client Azure Spring Apps.
  • La partie spring.cloud.gateway.discovery.locator.enabled=true consiste à configurer une passerelle Spring Cloud pour utiliser le Registre du service Spring Cloud afin de découvrir les microservices disponibles.

Créer l’application sur Azure Spring Apps

Comme dans le module précédent, créez une application todo-gateway spécifique dans votre instance Azure Spring Apps. Étant donné que cette application est une passerelle, nous ajoutons l’indicateur --assign-endpoint pour qu’elle soit exposée publiquement.

az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint

Déployer l’application

Vous pouvez maintenant créer votre projet todo-gateway et l’envoyer à Azure Spring Apps :

cd todo-gateway
./mvnw clean package -DskipTests
az spring app deploy --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --artifact-path target/demo-0.0.1-SNAPSHOT.jar
cd ..

Tester le projet dans le cloud

  1. Accédez à Applications dans votre instance Azure Spring Apps.

    1. Vérifiez que todo-gateway a un état d’inscription indiquant 1/1. Ces informations indiquent qu’elle est correctement inscrite au Registre du service Spring Cloud.
    2. Sélectionnez todo-gateway pour obtenir plus d’informations sur le microservice.
  2. Copiez/collez l’URL publique fournie. Gardez cette URL à portée de main pour les sections suivantes.

    Il existe un point de terminaison de test, comme pour les microservices, mais la passerelle est directement exposée sur Internet. Nous allons donc utiliser l’URL publique.

Étant donné que la passerelle est connectée au Registre du service Spring Cloud, elle doit ouvrir automatiquement les routes vers les microservices disponibles, avec des chemins d’URL sous la forme /MICROSERVICE-ID/**: [Le MICROSERVICE-ID doit être en lettres majuscules]

Testez le point de terminaison du microservice todo-service en procédant de la façon suivante : curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/ (en remplaçant XXXXXXXX par le nom de votre instance Azure Spring Apps).

Comme dans le module précédent, le résultat de cette commande doit correspondre aux trois éléments qui ont été initialement insérés dans la base de données MySQL :

[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]