Een Spring Cloud-gateway bouwen
In deze module bouwen we een Spring Cloud Gateway en implementeren we deze in Azure Spring Apps.
Gateways worden gebruikt om openbaar HTTP-verkeer naar microservices te routeren:
- Ze verwerken de routeringslogica.
- Ze beveiligen de toegang tot de microservices, die niet openbaar beschikbaar zijn.
- Ze kunnen ook Quality of Service-mogelijkheden (QoS) hebben, zoals het uitvoeren van een limiet voor HTTP-frequenties.
Een Spring Cloud-gateway maken
Om onze gateway te maken, gebruiken https://start.spring.io we deze met de opdrachtregel:
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 -
Notitie
We gebruiken de Cloud Gateway
, Eureka Discovery Client
en de Config Client
onderdelen.
De toepassing configureren
Voeg de volgende eigenschap toe aan het configuratiebestand src/main/resources/application.properties
:
spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
- Het
spring.main.allow-bean-definition-overriding=true
onderdeel is het configureren van Spring Cloud Gateway voor het gebruik van de Spring Cloud Discovery Server-bean die is geconfigureerd in de Azure Spring Apps-clientbibliotheek. - Het onderdeel
spring.cloud.gateway.discovery.locator.enabled=true
is bedoeld om Spring Cloud-gateway te configureren om het Spring Cloud-serviceregister te gebruiken om de beschikbare microservices te ontdekken.
De toepassing maken in Azure Spring Apps
Net als in de vorige module maakt u een specifieke todo-gateway
toepassing in uw Azure Spring Apps-exemplaar. Omdat deze toepassing een gateway is, voegen we de --assign-endpoint
vlag toe zodat deze openbaar wordt weergegeven.
az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint
De toepassing implementeren
U kunt nu uw todo-gatewayproject bouwen en verzenden naar 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 ..
Het project testen in de cloud
Ga naar Apps in uw Azure Spring Apps-exemplaar.
- Controleer of de todo-gateway een registratiestatus heeft met de melding 1/1. Deze informatie laat zien dat deze juist is geregistreerd in het Spring Cloud Service Registry.
- Selecteer todo-gateway voor meer informatie over de microservice.
Kopieer/plak de openbare URL die is opgegeven. Bewaar deze URL voor de volgende secties.
Er is een testeindpunt, zoals voor microservices, maar de gateway wordt rechtstreeks op internet weergegeven, dus we gebruiken de openbare URL.
Omdat de gateway is verbonden met het Spring Cloud-serviceregister, moeten er automatisch routes worden geopend naar de beschikbare microservices, met URL-paden in de vorm van /MICROSERVICE-ID/**
: [De MICROSERVICE-id moet in hoofdletters staan]
Test het todo-service
microservice-eindpunt door het volgende te doen: curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/
(vervang XXXXXXXX door de naam van uw Azure Spring Apps-exemplaar).
Net als in de vorige module moet het resultaat van deze opdracht de drie items zijn die in eerste instantie zijn ingevoegd in de MySQL-database:
[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]