Freigeben über


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

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 wird id zugeordnet.
  • Die appName und protocol 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:

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure Container Apps-Umgebung.

  2. Wählen Sie im Navigationsbereich Überwachung>Protokolleaus.

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