Erstellen eines Spring Cloud-Gateways

Abgeschlossen

In diesem Modul erstellen Sie ein Spring Cloud-Gateway und stellen es in Azure Spring Apps bereit.

Gateways werden zum Weiterleiten von öffentlichem HTTP-Datenverkehr an Microservices verwendet:

  • Sie verarbeiten die Routinglogik.
  • Sie sichern den Zugriff auf nicht öffentlich verfügbare Microservices.
  • Sie können auch über QoS-Funktionen (Quality of Service) verfügen (z. B. HTTP-Ratenbegrenzung).

Erstellen eines Spring Cloud-Gateways

Wir verwenden https://start.spring.io in der Befehlszeile, um unser Gateway zu erstellen:

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 -

Hinweis

Wir verwenden die Komponenten Cloud Gateway, Eureka Discovery Client und Config Client.

Konfigurieren der Anwendung

Fügen Sie in der src/main/resources/application.properties-Konfigurationsdatei die folgende Eigenschaft hinzu:

spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
  • Der Teil spring.main.allow-bean-definition-overriding=true ist konzipiert, um das Spring Cloud-Gateway so zu konfigurieren, um die in der Azure Apps Cloud-Clientbibliothek konfigurierte Spring Cloud Discovery-Bean zu verwenden.
  • Der Teil spring.cloud.gateway.discovery.locator.enabled=true wird verwendet, um das Spring Cloud-Gateway so zu konfigurieren, dass die Spring Cloud-Dienstregistrierung verwendet wird, um die verfügbaren Microservices zu ermitteln.

Erstellen der Anwendung in Azure Spring Apps

Erstellen Sie wie im vorherigen Modul eine bestimmte todo-gateway-Anwendung in Ihrer Azure Spring Apps-Instanz. Da es sich bei dieser Anwendung um ein Gateway handelt, fügen Sie das Flag --assign-endpoint hinzu, damit sie öffentlich verfügbar gemacht wird.

az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint

Bereitstellen der Anwendung

Sie können jetzt Ihr todo-gateway-Projekt erstellen und an Azure Spring Apps senden:

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

Testen des Projekts in der Cloud

  1. Navigieren Sie in Ihrer Azure Spring Apps-Instanz zu Apps.

    1. Überprüfen Sie, ob todo-gateway einen Registrierungsstatus von 1/1 aufweist. Diese Informationen zeigt, dass die Instanz ordnungsgemäß in der Spring Cloud-Dienstregistrierung registriert ist.
    2. Wählen Sie todo-gateway aus, um mehr Informationen zum Microservice zu erhalten.
  2. Kopieren Sie die öffentliche URL, die bereitgestellt wird, und fügen Sie sie ein. Kopieren Sie diese URL für nachfolgende Abschnitte.

    Es gibt einen Testendpunkt ( z. B. für Microservices), aber das Gateway wird direkt im Internet verfügbar gemacht, daher verwenden Sie die öffentliche URL.

Da das Gateway mit der Spring Cloud-Dienstregistrierung verbunden ist, sollte es automatisch Routen zu den verfügbaren Microservices mit URL-Pfaden in der Form /MICROSERVICE-ID/** öffnen [die MICROSERVICE-ID muss in Großbuchstaben geschrieben werden].

Testen Sie den todo-service-Endpunkt des Microservice, indem Sie Folgendes ausführen: curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/ (Ersetzen Sie XXXXXXXX durch den Namen Ihrer Azure Spring Apps-Instanz).

Wie im vorherigen Modul sollten die drei Elemente, die zuvor in die MySQL-Datenbank eingefügt wurden, das Ergebnis dieses Befehls sein:

[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]