Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Pläne "Basic", "Standard" und "Enterprise" sind am 17. März 2025 in einen Ruhestandszeitraum eingetreten. Weitere Informationen finden Sie in der Ankündigung zur Ausmusterung von Azure Spring Apps.
Dieser Artikel gilt für: ❎ Basic/Standard ✅ Enterprise
In diesem Artikel erfahren Sie, wie Sie ein Spring Cloudgateway für VMWare Tanzu-Projekt, das im Azure Spring Apps Enterprise-Plan ausgeführt wird, zu einem selbstgehosteten Spring Cloudgateway-Projekt (Open Source Software, OSS) migrieren, das als Azure Container Apps-Anwendung ausgeführt wird.
Die auf dieser Seite erwähnte OSS-Version von Spring Cloudgateway ist als Referenzbeispiel bereitgestellt. Sie können je nach Ihren Anforderungen andere Distributionen von Spring Cloudgateway auswählen.
Hinweis
Die Funktionen, die Spring Cloudgateway für VMWare Tanzu bietet, sind umfangreicher als die Funktionen in der OSS-Version. Achten Sie darauf, die Unterschiede zu untersuchen und die Kompatibilität sicherzustellen, bevor Sie zur Produktion übergehen.
Voraussetzungen
- Eine Azure Spring Apps-Instanz mit Enterprise-Plan und aktiviertem Spring Cloudgateway.
- Eine Azure Container Apps-Instanz. Weitere Informationen finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Container-App über das Azure-Portal.
- Azure CLI
- Eine Azure Container Registry-Instanz mit ausreichenden Berechtigungen zum Erstellen und Pushen von Docker-Images. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer privaten Containerregistrierung mit Azure-CLI.
Vorbereiten des Codes der selbstgehosteten Spring Cloudgateway-Anwendung
Führen Sie die folgenden Schritte aus, um den Code der Spring Cloudgateway-Anwendung abzurufen:
- Navigiere zu https://start.spring.io.
- Aktualisieren Sie die Projektmetadaten, indem Sie das Feld Gruppe auf den Namen Ihrer Organisation festlegen. Ändern Sie die Felder Artefakt und Name in Gateway.
- Fügen Sie die Abhängigkeiten Reaktives Gateway und Spring Boot Actuator hinzu.
- Behalten Sie für die anderen Eigenschaften die Standardwerte bei.
- Wählen Sie Generieren aus, um das Projekt herunterzuladen.
- Nachdem das Projekt heruntergeladen wurde, extrahieren Sie es.
Konfigurieren der Spring Cloudgateway-Anwendung
Nachdem Sie die Spring Cloudgateway-Anwendung heruntergeladen haben, konfigurieren Sie sie in den nächsten Abschnitten.
Konfigurieren der die Anwendungseigenschaftsdatei
Führen Sie die folgenden Schritte aus, um die Datei mit den Anwendungseigenschaften zu konfigurieren:
Navigieren Sie zum Verzeichnis gateway/src/main/resources des Projekts.
Benennen Sie die Datei application.properties in application.yml um.
Bearbeiten Sie die application.yml Datei. Die folgende application.yml Datei ist typisch:
spring: application: name: gateway cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOriginPatterns: "*" allowedMethods: - GET - POST - PUT - DELETE allowedHeaders: - "*" allowCredentials: true maxAge: 3600 routes: - id: front uri: http://front-app predicates: - Path=/** - Method=GET order: 1000 filters: - StripPrefix=0 tags: - front
CORS-Konfiguration
Informationen zum Migrieren der CORS-Konfiguration (Cross-Origin Resource Sharing) Ihres Spring Cloudgateway für VMWare Tanzu-Projekts finden Sie unter CORS-Konfiguration für die globale CORS-Konfiguration und Routen-CORS-Konfiguration.
Maßstab
Wenn Sie zu einer Spring Cloudgateway-Anwendung in Azure Container Apps migrieren, sollte das Skalierungsverhalten mit dem Azure Container Apps-Modell übereinstimmen. Die Instanzanzahl von Spring Cloudgateway für VMWare Tanzu wird Azure Container Apps min-replicaundmax-replica in Azure Container Apps zugeordnet. Sie können die automatische Skalierung für die Gatewayanwendung konfigurieren, indem Sie Skalierungsregeln definieren. Weitere Informationen finden Sie unter Festlegen von Skalierungsregeln in Azure Container Apps.
Die in Azure Spring Apps verfügbaren CPU- und Arbeitsspeicherkombinationen unterscheiden sich von den in Azure Container Apps verfügbaren Kombinationen. Stellen Sie beim Zuordnen von Ressourcenzuordnungen sicher, dass die ausgewählten CPU- und Arbeitsspeicherkonfigurationen in Azure Container Apps sowohl Ihren Leistungsanforderungen als auch den unterstützten Optionen entsprechen.
Benutzerdefinierte Domänen & Zertifikate
Azure Container Apps unterstützt benutzerdefinierte Domänen & Zertifikate. Weitere Informationen zum Migrieren von benutzerdefinierten Domänen, die auf Spring Cloudgateway für VMWare Tanzu konfiguriert sind, finden Sie unter Zertifikate in Azure Container Apps.
Routen
Sie können die Routen in Spring Cloudgateway for Tanzu zu Spring Cloudgateway migrieren, wie das application.yml Beispiel zeigt. In der folgenden Liste wird die Zuordnungsbeziehung zwischen den Routen von Spring Cloudgateway für VMWare Tanzu und den Routen von Spring Cloudgateway beschrieben:
- Die
nameEigenschaft der Route wird aufidabgebildet. - Die
appNameundprotocolEigenschaften werden dem URI der Route zugeordnet, bei dem es sich um den barrierefreien URI für die Azure Container Apps-Instanz handeln sollte. Stellen Sie sicher, dass die Azure Container Apps-Anwendungen den Eingang aktivieren. - Prädikate und Filter von Spring Cloudgateway für VMWare Tanzu werden Prädikaten und Filtern von Spring Cloudgateway zugeordnet. Kommerzielle Prädikate und Filter werden nicht unterstützt. Weitere Informationen finden Sie unter Kommerzielle Routenfilter in Spring Cloudgateway für K8s.
Betrachten Sie als Beispiel die folgende JSON-Datei für die Routenkonfiguration, test-api.json, die die test-api Route in Spring Cloudgateway für VMWare Tanzu für die test App definiert:
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
}
Anschließend zeigt die folgende YAML-Datei die entsprechende Routenkonfiguration für die Spring Cloudgateway-Anwendung an:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/test/api/healthcheck
- Method=GET
filters:
- AddRequestHeader=X-Request-red, blue
- StripPrefix=1
Spring Cloudgateway für VMWare Tanzu setzt StripPrefix=1 standardmäßig auf jeder Route fest. Um zu Spring Cloudgateway zu migrieren, müssen Sie StripPrefix=1 in der Filterkonfiguration explizit festlegen.
Damit Ihre Spring Cloudgateway-Anwendung über den App-Namen auf andere Anwendungen zugreifen kann, müssen Sie den Eingang für Ihre Azure Container App-Anwendungen aktivieren. Sie können auch den zugänglichen vollqualifizierten Domänennamen (FQDN) der Azure Container Apps-Anwendung als URI der Route festlegen, indem Sie dem Format https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io folgen.
Hinweis
Es gibt einige kommerzielle Prädikate und kommerzielle Filter, die von Spring Cloudgateway nicht unterstützt werden.
Antwortcache
Wenn Sie den Antwort-Cache global in Spring Cloudgateway für VMWare Tanzu aktivieren, verwenden Sie die folgende Konfiguration in Spring Cloudgateway. Weitere Informationen finden Sie unter Der lokale Antwortcachefilter.
spring:
cloud:
gateway:
filter:
local-response-cache:
enabled: true
time-to-live: <response-cache-ttl>
size: <response-cache-size>
Wenn Sie den Antwortcache für die Route aktivieren, können Sie den LocalResponseCache Filter in der Routingregelkonfiguration des verwalteten Gateways für Spring verwenden, indem Sie das folgende Beispiel verwenden:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Integrieren mit APM
Sie können die Anwendungsleistungsüberwachung (Application Performance Monitoring, APM) für Ihre Spring Cloudgateway-Anwendung aktivieren. Weitere Informationen finden Sie unter Integrieren der Anwendungsleistungsüberwachung in Containerimages.
Bereitstellen von Azure Container Apps
Nachdem die Spring Cloudgateway-Konfiguration bereit ist, erstellen Sie das Image mit Azure Container Registry, und stellen Sie es in Azure Container Apps bereit.
Erstellen und Pushen des Docker-Images
Führen Sie die folgenden Schritte aus, um das Docker-Image zu erstellen und zu pushen:
Erstellen Sie im Spring Cloudgateway-Projektverzeichnis eine Dockerfile mit folgendem Inhalt:
Hinweis
Alternativ können Sie die Dockerfile-Stichprobendatei für den ACME Fitness Store verwenden.
FROM mcr.microsoft.com/openjdk/jdk:17-mariner as build WORKDIR /staging # Install gradle RUN tdnf install -y wget unzip RUN wget https://services.gradle.org/distributions/gradle-8.8-bin.zip && \ unzip -d /opt/gradle gradle-8.8-bin.zip && \ chmod +x /opt/gradle/gradle-8.8/bin/gradle ENV GRADLE_HOME=/opt/gradle/gradle-8.8 ENV PATH=$PATH:$GRADLE_HOME/bin COPY . . # Compile with gradle RUN gradle build -x test FROM mcr.microsoft.com/openjdk/jdk:17-mariner as runtime WORKDIR /app COPY --from=build /staging/build/libs/gateway-0.0.1-SNAPSHOT.jar . ENTRYPOINT ["java", "-jar", "gateway-0.0.1-SNAPSHOT.jar"]Führen Sie die folgenden Befehle zum Erstellen des Images aus:
az acr login --name <azure-container-registry-name> az acr build \ --resource-group <resource-group-name> \ --image gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT \ --registry <azure-container-registry-name> \ --file Dockerfile .Stellen Sie sicher, dass das Gateway-Image erstellt wurde, und rufen Sie das Image-Tag ab, das das folgende Format
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOTverwendet:.
Bereitstellen des Images in Azure Container Apps
Nachdem Ihr Gatewayanwendungsimage bereit ist, stellen Sie es mit dem folgenden Befehl als Azure Container Apps-Anwendung bereit. Ersetzen Sie den <container-image-of-gateway> Platzhalter durch das Image-Tag, das Sie im vorherigen Schritt abgerufen haben.
az containerapp up \
--resource-group <resource-group-name> \
--name gateway \
--environment <azure-container-app-environment-name> \
--image <container-image-of-gateway> \
--target-port 8080 \
--ingress external
Greifen Sie auf den FQDN der Spring Cloudgateway-Anwendung zu, um zu überprüfen, ob sie ausgeführt wird.
Problembehandlung
Wenn beim Ausführen der Spring Cloudgateway-Anwendung Probleme auftreten, können Sie Echtzeit- und Verlaufsprotokolle der gateway Anwendung in Azure Container Apps anzeigen. Weitere Informationen finden Sie unter Anwendungsprotokollierung in Azure-Container-Apps.
Sie können auch die Metriken einer Gateway-Anwendung überwachen. Weitere Informationen finden Sie unter Überwachen von Azure Container Apps-Metriken.
Bekannte Einschränkung
Das OSS Spring Cloudgateway unterstützt die folgenden kommerziellen Funktionen nicht nativ:
- Metadaten, die zum Generieren von OpenAPI-Dokumentation verwendet werden.
- Single Sign-On-Funktionalität (SSO).
Wenn Sie diese Funktionen benötigen, müssen Sie möglicherweise andere kommerzielle Lösungen in Betracht ziehen, z. B. Spring Cloudgateway für VMWare Tanzu.