Dela via


Migrera Spring Cloud Gateway för Tanzu till hanterad gateway för Spring i Azure Container Apps

Kommentar

Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.

Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.

Den här artikeln gäller för: ❎ Basic/Standard ✅ Enterprise

Den här artikeln visar hur du migrerar VMware Spring Cloud Gateway i Azure Spring Apps Enterprise-plan till hanterad gateway för Spring i Azure Container Apps med hjälp av Azure CLI.

Förutsättningar

Etablera hanterad gateway för Spring

Använd följande kommando för att etablera Gateway for Spring Java-komponenten i Azure Container Apps-miljön som du skapade i förutsättningarna:

az containerapp env java-component gateway-for-spring create \
    --resource-group <resource-group-name> \
    --name <gateway-name> \
    --environment <azure-container-app-environment-name>

När du har skapat komponenten kan du se att etableringstillståndsvärdet för Spring Cloud Gateway har slutförts.

Resurshantering

Resursallokeringen för containern för Gateway for Spring i Azure Container Apps har korrigerats till följande värden:

  • CPU: 0,5 vCPU
  • Minne: 1 gi

Om du vill konfigurera instansantalet för Gateway för Spring använder du parametrarna --min-replicas och --max-replicas, och anger båda till samma värde. Den här konfigurationen säkerställer att instansantalet förblir fast. Systemet stöder för närvarande inte konfigurationer för dynamisk autoskalning.

Konfigurera gateway för Spring

När du har etablerat gatewayen är nästa steg att konfigurera den för smidig migrering.

Du kan uppdatera konfigurationen och vägarna för gatewayen för Spring-komponenten update med hjälp av kommandot enligt följande exempel:

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

Om du vill migrera den globala CORS-konfigurationen (Cross-Origin Resource Sharing) för VMware Spring Cloud Gateway måste du mappa egenskaper till formatet <configuration-key>="<configuration-value>". Mappningsrelationen visas i följande tabell:

Egenskapsnamn i VMware Spring Cloud Gateway Konfiguration i Gateway för Spring
Tillåtna ursprung spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[<id>]
Tillåtna ursprungsmönster spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns[<id>]
Tillåtna metoder spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[<id>]
Tillåtna rubriker spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders[<id>]
Max ålder spring.cloud.gateway.globalcors.cors-configurations.[/**].maxAge
Tillåt autentiseringsuppgifter spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials
Exponerade rubriker spring.cloud.gateway.globalcors.cors-configurations.[/**].exposedHeaders[<id>]

Om du till exempel har en konfiguration som allowedOrigins:["https://example.com","https://example1.com"] i VMware Spring Cloud Gateway bör du uppdatera Gateway for Spring med följande parameter:

--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 CORS-konfiguration per väg måste du ersätta "/**" i konfigurationsnyckeln som vägsökväg. Om du till exempel har en väg med sökvägen /v1/**bör du konfigurera spring.cloud.gateway.globalcors.cors-configurations.[/v1/**].allowedOrigins[<id>].

Vägar

Gateway för Spring-komponenten har stöd för att definiera vägar via idegenskaperna , uri, predicatesoch filters som visas i följande exempel:

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}"

I följande lista beskrivs mappningsrelationen mellan vägar för VMware Spring Cloud Gateway och vägar för Gateway for Spring:

  • Vägens name mappas till id.
  • Och appNameprotocol mappas till URI:n för vägen, vilket bör vara den tillgängliga URI:n för Azure Container Apps-instansen.
  • Spring Cloud Gateway-predikat och filter mappas till Gateway för Spring-predikat och -filter.

Anta till exempel att följande route config json-fil, som heter test-api.json skapas för VMware Spring Cloud Gateway:

{
  "protocol": "HTTP",
  "routes": [
    {
      "title": "Test API",
      "predicates": [
        "Path=/test/api/healthcheck",
        "Method=GET"
      ],
      "filters": [
        "AddResponseHeader=X-Response-Red, Blue"
      ]
    }
  ]
}

Och anta att du använder följande kommando för att tillämpa regeln på Azure Spring Apps-appen test-app:

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

I följande exempel visas sedan motsvarande YAML-vägfil test-api.yml för Gateway for Spring i 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

Och du använder följande kommando för att uppdatera containerappen:

az containerapp env java-component gateway-for-spring update \
    --route-yaml test-api.yml

Du måste aktivera ingress för ditt Azure Container App-program för att få dess fullständigt kvalificerade domännamn (FQDN). Ersätt <app-FQDN-in-Azure-Container-Apps> sedan i vägens URI med appens tillgängliga slutpunkt. URI-formatet är https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.

Det finns vissa kommersiella predikat och kommersiella filter som inte stöds på Gateway for Spring i Azure Container Apps.

Svarscache

Om du aktiverar svarscachen globalt kan du uppdatera den hanterade gatewayen för Spring med följande konfiguration:

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>

Om du aktiverar svarscache för vägen kan du använda LocalResponseCache filtret i routningsregelkonfigurationen för hanterad gateway för Spring som följande YAML:

springCloudGatewayRoutes:
  - id: "test-api"
    uri: "<app-fqdn-in-Container-Apps>"
    predicates:
      - Path=/v1/**
      - Method=GET
    filters:
      - LocalResponseCache=3m, 1MB

Felsökning

Du kan visa loggar för Gateway for Spring i Azure Container Apps med hjälp Log Analytics av följande steg:

  1. I Azure Portal navigerar du till din Azure Container Apps-miljö.

  2. I navigeringsfönstret väljer du Övervakningsloggar>.

  3. Om du vill visa loggar frågar ContainerAppSystemLogs_CL du tabellen med frågeredigeraren, som du ser i följande exempel:

    ContainerAppSystemLogs_CL
    | where ComponentType_s == "SpringCloudGateway"
    | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s
    | take 100
    

Mer information om att köra frågor mot loggar finns i Observability of managed Java components in Azure Container Apps (Observerbarhet för hanterade Java-komponenter i Azure Container Apps).

Kända begränsningar

Gateway for Spring i Azure Container Apps stöder för närvarande inte vissa kommersiella funktioner, inklusive metadata som används för att generera OpenAPI-dokumentation, enkel inloggning (SSO) och APM-integrering (application performance monitoring).

Det finns ett känt problem där aktivering av Gateway for Spring förhindrar att avsnittet Tjänster öppnas i Azure Portal. Vi förväntar oss att lösa problemet snart.