Migrieren von Spring Cloud Gateway für Tanzu zu verwaltetem Gateway für Spring in Azure Container Apps
Hinweis
Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.
Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.
Dieser Artikel gilt für: ❎ Basic/Standard ✅ Enterprise
In diesem Artikel erfahren Sie, wie Sie VMware Spring Cloud Gateway in Azure Spring Apps Enterprise zum verwalteten Gateway für Spring in Azure Container Apps mithilfe der Azure CLI migrieren.
Voraussetzungen
- Eine vorhandene Azure Spring Apps-Instanz mit Enterprise-Plan und aktiviertem Spring Cloud Gateway.
- Eine vorhandene Azure-Container-App. Weitere Informationen finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Container-App über das Azure-Portal.
- Azure-Befehlszeilenschnittstelle.
Bereitstellen eines verwalteten Gateways für Spring
Verwenden Sie den folgenden Befehl, um die Gateway für Spring Java-Komponente in der Azure Container Apps-Umgebung bereitzustellen, die Sie in den Voraussetzungen erstellt haben:
az containerapp env java-component gateway-for-spring create \
--resource-group <resource-group-name> \
--name <gateway-name> \
--environment <azure-container-app-environment-name>
Nach der erfolgreichen Erstellung der Komponente sehen Sie, dass der Bereitstellungsstatus für Spring Cloud Gateway den Wert Erfolgreich hat.
Ressourcenverwaltung
Die Containerressourcenzuordnung für das Gateway für Spring in Azure Container Apps ist auf die folgenden Werte festgelegt:
- CPU: 0,5 vCPU
- Arbeitsspeicher: 1 Gi
Um die Anzahl der Instanzen für Gateway für Spring zu konfigurieren, verwenden Sie die Parameter --min-replicas
und --max-replicas
. Legen Sie beide auf denselben Wert fest. Diese Konfiguration stellt sicher, dass die Anzahl der Instanzen fest bleibt. Das System unterstützt derzeit keine dynamischen automatischen Skalierungskonfigurationen.
Konfigurieren des Gateways für Spring
Nachdem Sie das Gateway bereitgestellt haben, besteht der nächste Schritt darin, es für eine reibungslose Migration zu konfigurieren.
Sie können die Konfiguration und Routen der Gateway für Spring-Komponente mithilfe des Befehls update
aktualisieren, wie im folgenden Beispiel gezeigt:
az containerapp env java-component gateway-for-spring update \
--resource-group <resource-group-name> \
--name <gateway-name> \
--environment <azure-container-app-environment-name> \
--configuration <configuration-key>="<configuration-value>" \
--route-yaml <path-to-route-YAML-file>
CORS-Konfiguration
Um die globale CORS-Konfiguration von VMware Spring Cloud Gateway zu migrieren, müssen Sie Eigenschaften im Format <configuration-key>="<configuration-value>"
zuordnen. Die Mapping-Beziehung ist in der folgenden Tabelle dargestellt:
Eigenschaftsname in VMware Spring Cloud Gateway | Konfiguration in Gateway für Spring |
---|---|
Zulässige Ursprünge | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[<id>] |
Zulässige Ursprungsmuster | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns[<id>] |
Zulässige Methoden | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[<id>] |
Zulässige Header | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders[<id>] |
Maximales Alter | spring.cloud.gateway.globalcors.cors-configurations.[/**].maxAge |
Anmeldeinformationen zulassen | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials |
Verfügbar gemachte Header | spring.cloud.gateway.globalcors.cors-configurations.[/**].exposedHeaders[<id>] |
Wenn Sie beispielsweise über eine Konfiguration wie allowedOrigins:["https://example.com","https://example1.com"]
in VMware Spring Cloud Gateway verfügen, sollten Sie Gateway für Spring mit dem folgenden Parameter aktualisieren:
--configuration spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[0]=https://example.com spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[1]=https://example1.com
Für die CORS-Konfiguration für die Route müssen Sie den "/**" im Konfigurationsschlüssel als Routenpfad ersetzen. Wenn Sie beispielsweise über eine Route mit Pfad /v1/**
verfügen, sollten Sie spring.cloud.gateway.globalcors.cors-configurations.[/v1/**].allowedOrigins[<id>]
konfigurieren.
Routen
Die Komponente für Gateway für Spring unterstützt das Definieren von Routen über die Eigenschaften id
, uri
, predicates
und filters
, wie im folgenden Beispiel gezeigt:
springCloudGatewayRoutes:
- id: "route1"
uri: "https://otherjavacomponent.myenvironment.test.net"
predicates:
- "Path=/v1/{path}"
- "After=2024-01-01T00:00:00.000-00:00[America/Denver]"
filters:
- "SetPath=/{path}"
- id: "route2"
uri: "https://otherjavacomponent.myenvironment.test.net"
predicates:
- "Path=/v2/{path}"
- "After=2024-01-01T00:00:00.000-00:00[America/Denver]"
filters:
- "SetPath=/{path}"
Die folgende Liste beschreibt die Mapping-Beziehung zwischen Routen von VMware Spring Cloud Gateway und Routen von Gateway für Spring:
- Die
name
der Route wirdid
zugeordnet. - Die
appName
undprotocol
werden dem URI der Route zugeordnet, bei dem es sich um den barrierefreien URI für die Azure Container Apps-Instanz handeln sollte. - Prädikate und Filter von Spring Cloud Gateway Prädikaten und Filtern von Gateway für Spring zugeordnet.
Angenommen, die folgende Route config JSON-Datei, die als test-api.json bezeichnet wird, wird für VMware Spring Cloud Gateway erstellt:
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddResponseHeader=X-Response-Red, Blue"
]
}
]
}
Und angenommen, Sie verwenden den folgenden Befehl, um die Regel auf die Azure Spring Apps-App test-app
anzuwenden:
az spring gateway route-config create \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name test-api \
--app-name test-app \
--routes-file test-api.json
Anschließend zeigt das folgende Beispiel die entsprechende Route-YAML-Datei test-api.yml für Gateway für Spring für Azure Container Apps:
springCloudGatewayRoutes:
- id: "test-api"
uri: "<app-fqdn-in-Container-Apps>"
predicates:
- Path=/test/api/healthcheck
- Method=GET
filters:
- AddResponseHeader=X-Response-Red, Blue
Außerdem würden Sie den folgenden Befehl verwenden, um die Container-App zu aktualisieren:
az containerapp env java-component gateway-for-spring update \
--route-yaml test-api.yml
Sie müssen den Eingang für Ihre Azure-Container App-Anwendung aktivieren, um den vollqualifizierten Domänennamen (FQDN) abzurufen. Ersetzen Sie dann <app-FQDN-in-Azure-Container-Apps>
im URI der Route durch den barrierefreien Endpunkt der App. Das URI-Format lautet https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io
.
Es gibt einige kommerziellen Prädikate und kommerzielle Filter, die für Gateway für Spring für Azure Container Apps nicht unterstützt werden.
Antwortcache
Wenn Sie den Antwortcache global aktivieren, können Sie das verwaltete Gateway für Spring mit der folgenden Konfiguration aktualisieren:
spring.cloud.gateway.filter.local-response-cache.enabled=true
spring.cloud.gateway.filter.local-response-cache.time-to-live=<response-cache-ttl>
spring.cloud.gateway.filter.local-response-cache.size=<response-cache-size>
Wenn Sie den Antwortcache für die Route aktivieren, können Sie den Filter LocalResponseCache
in der Routingregelkonfiguration des verwalteten Gateways für Spring als folgende YAML verwenden:
springCloudGatewayRoutes:
- id: "test-api"
uri: "<app-fqdn-in-Container-Apps>"
predicates:
- Path=/v1/**
- Method=GET
filters:
- LocalResponseCache=3m, 1MB
Problembehandlung
Sie können Protokolle des Gateways für Spring in Azure Container Apps über Log Analytics
mithilfe der folgenden Schritte anzeigen:
Navigieren Sie im Azure-Portal zu Ihrer Azure Container Apps-Umgebung.
Wählen Sie im Navigationsbereich Überwachung>Protokolleaus.
Um Protokolle anzuzeigen, fragen Sie die Tabelle
ContainerAppSystemLogs_CL
mithilfe des Abfrage-Editors ab, wie im folgenden Beispiel gezeigt:ContainerAppSystemLogs_CL | where ComponentType_s == "SpringCloudGateway" | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s | take 100
Weitere Informationen zum Abfragen von Protokollen finden Sie unter Einblick von verwalteten Java-Komponenten in Azure Container Apps.
Bekannte Einschränkung
Derzeit unterstützt Gateway für Spring für Azure Container Apps keine bestimmten kommerziellen Funktionen, einschließlich Metadaten, die zum Generieren von OpenAPI-Dokumentation, einmaligem Anmelden (Single Sign-On, SSO) und APM-Integration verwendet werden.
Es gibt ein bekanntes Problem, bei dem das Aktivieren von Gateway für Spring verhindert, dass der Abschnitt Services im Azure-Portal geöffnet wird. Dieses Problem sollte bald behoben werden.