Skapa en Spring Cloud-gateway

Slutförd

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 GatewayConfig Client , Eureka Discovery Clientoch .

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

  1. Gå till Appar i din Azure Spring Apps-instans.

    1. 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.
    2. Välj todo-gateway för att få mer information om mikrotjänsten.
  2. 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}]