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
- En befintlig Azure Spring Apps Enterprise-planinstans med Spring Cloud Gateway aktiverad.
- En befintlig Azure-containerapp. För mer information, se Snabbstart: Distribuera din första containerapp med hjälp av Azure-portalen.
- Azure CLI.
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 id
egenskaperna , uri
, predicates
och 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 tillid
. - Och
appName
protocol
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:
I Azure Portal navigerar du till din Azure Container Apps-miljö.
I navigeringsfönstret väljer du Övervakningsloggar>.
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.