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
Voor het maken van onze gateway gebruiken https://start.spring.io/ we 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=2.6.4.RELEASE -d javaVersion=11 | tar -xzvf -
Notitie
We gebruiken de onderdelen Cloud Gateway
, Eureka Discovery Client
en Config Client
.
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 gemaakt.
az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_11 --assign-endpoint
De toepassing implementeren
U kunt nu uw 'todo-gateway'-project maken en dit 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 todo-gateway de registratiestatus 1/1 heeft. Uit deze informatie blijkt dat het correct is geregistreerd in het Spring Cloud-serviceregister.
- 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 is rechtstreeks beschikbaar op internet. Daarom gebruiken we de openbare URL.
Omdat de gateway is verbonden met het Spring Cloud-serviceregister, moet deze automatisch geopende routes hebben naar de beschikbare microservices, met URL-paden in de vorm van /MICROSERVICE-ID/**
: [De MICROSERVICE-ID moet in hoofdletters zijn]
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}]
Hulp nodig? Raadpleeg onze gids voor probleemoplossing of geef specifieke feedback door een probleem te melden.