Een Spring Cloud-gateway bouwen

Voltooid

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 Clienten 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

  1. Ga naar Apps in uw Azure Spring Apps-exemplaar.

    1. 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.
    2. Selecteer todo-gateway voor meer informatie over de microservice.
  2. 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}]