Skapa en Spring Cloud-gateway
I den här modulen ska vi skapa en Spring Cloud Gateway och distribuera den i Azure Spring Apps.
Gatewayer används för att dirigera offentlig HTTP-trafik till mikrotjänster:
- De hanterar dirigeringslogiken.
- De skyddar åtkomsten till mikrotjänsterna, som inte är offentligt tillgängliga.
- De kan även ha QoS-funktioner (Quality of Service), till exempel HTTP-frekvensbegränsning.
Skapa en Spring Cloud-gateway
För att skapa vår gateway använder https://start.spring.io vi med kommandoraden:
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 -
Kommentar
Vi använder komponenterna Cloud Gateway
Config Client
, Eureka Discovery Client
och .
Konfigurera programmet
I konfigurationsfilen src/main/resources/application.properties
lägger du till följande egenskap:
spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
- Delen
spring.main.allow-bean-definition-overriding=true
är att konfigurera Spring Cloud Gateway att använda Spring Cloud Discovery Server-bönan som konfigurerats i Azure Spring Apps-klientbiblioteket. - Delen
spring.cloud.gateway.discovery.locator.enabled=true
handlar om att konfigurera Spring Cloud Gateway till att använda Spring Cloud-tjänstens register för att identifiera de tillgängliga mikrotjänsterna.
Skapa programmet i Azure Spring Apps
Precis som i föregående modul skapar du ett specifikt todo-gateway
program i din Azure Spring Apps-instans. Eftersom det här programmet är en gateway lägger vi till flaggan så att den --assign-endpoint
exponeras offentligt.
az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint
Distribuera programmet
Nu kan du skapa ditt todo-gateway-projekt och skicka det till 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 ..
Testa projektet i molnet
Gå till Appar i din Azure Spring Apps-instans.
- Kontrollera att todo-gateway har en registreringsstatus som säger 1/1. Den här informationen visar att den är korrekt registrerad i Spring Cloud Service Registry.
- Välj todo-gateway för att få mer information om mikrotjänsten.
Kopiera/klistra in den offentliga URL:en som anges. Ha den här URL:en till hands för senaste avsnitt.
Det finns en testslutpunkt, till exempel för mikrotjänster, men gatewayen exponeras direkt på Internet, så vi använder den offentliga URL:en.
Eftersom gatewayen är ansluten till Spring Cloud Service Registry bör den automatiskt öppna vägar till tillgängliga mikrotjänster, med URL-sökvägar i form av /MICROSERVICE-ID/**
: [MICROSERVICE-ID måste vara med versaler]
todo-service
Testa mikrotjänstslutpunkten genom att göra följande: curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/
(ersätt XXXXXXXX med namnet på din Azure Spring Apps-instans).
Som i föregående modul bör resultatet av det här kommandot vara de tre objekt som ursprungligen infogades i MySQL-databasen:
[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]