Migrace brány Spring Cloud pro Tanzu do spravované brány pro Spring v Azure Container Apps
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.
Tento článek se vztahuje na: ❎ Basic/Standard ✅ Enterprise
Tento článek ukazuje, jak migrovat bránu VMware Spring Cloud v plánu Azure Spring Apps Enterprise na spravovanou bránu pro Spring v Azure Container Apps pomocí Azure CLI.
Požadavky
- Existující instance plánu Azure Spring Apps Enterprise s povolenou bránou Spring Cloud
- Existující aplikace kontejneru Azure. Další informace najdete v článku Rychlý start: Nasazení první aplikace kontejneru s využitím webu Azure Portal.
- Rozhraní příkazového řádku Azure.
Zřízení spravované brány pro Spring
Pomocí následujícího příkazu zřiďte komponentu Gateway for Spring Java v prostředí Azure Container Apps, které jste vytvořili v požadavcích:
az containerapp env java-component gateway-for-spring create \
--resource-group <resource-group-name> \
--name <gateway-name> \
--environment <azure-container-app-environment-name>
Po úspěšném vytvoření komponenty uvidíte, že hodnota Stavu zřizování pro bránu Spring Cloud byla úspěšná.
Řízení zdrojů
Přidělení prostředků kontejneru pro bránu pro Spring v Azure Container Apps je pevné na následující hodnoty:
- PROCESOR: 0,5 vCPU
- Paměť: 1 Gi
Ke konfiguraci počtu instancí pro bránu pro Spring použijte parametry --min-replicas
a --max-replicas
nastavte obě hodnoty na stejnou hodnotu. Tato konfigurace zajišťuje, že počet instancí zůstane opravený. Systém v současné době nepodporuje dynamické konfigurace automatického škálování.
Konfigurace brány pro Spring
Po zřízení brány je dalším krokem konfigurace pro bezproblémovou migraci.
Konfiguraci a trasy komponenty Gateway for Spring můžete aktualizovat pomocí update
příkazu, jak je znázorněno v následujícím příkladu:
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>
Konfigurace CORS
Pokud chcete migrovat globální konfiguraci sdílení prostředků mezi zdroji (CORS) brány VMware Spring Cloud, musíte vlastnosti namapovat do formátu <configuration-key>="<configuration-value>"
. Relace mapování je znázorněna v následující tabulce:
Název vlastnosti v bráně VMware Spring Cloud | Konfigurace ve službě Gateway for Spring |
---|---|
Povolené zdroje | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[<id>] |
Povolené vzory původu | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns[<id>] |
Povolené metody | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[<id>] |
Povolené hlavičky | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders[<id>] |
Maximální věk | spring.cloud.gateway.globalcors.cors-configurations.[/**].maxAge |
Povolit přihlašovací údaje | spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials |
Zveřejněné hlavičky | spring.cloud.gateway.globalcors.cors-configurations.[/**].exposedHeaders[<id>] |
Pokud máte například konfiguraci jako allowedOrigins:["https://example.com","https://example1.com"]
v bráně VMware Spring Cloud, měli byste bránu pro Spring aktualizovat pomocí následujícího parametru:
--configuration spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[0]=https://example.com spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[1]=https://example1.com
Pro konfiguraci CORS pro každou trasu je nutné nahradit znak /** v konfiguračním klíči jako cestu trasy. Pokud máte například trasu s cestou /v1/**
, měli byste nakonfigurovat spring.cloud.gateway.globalcors.cors-configurations.[/v1/**].allowedOrigins[<id>]
.
Trasy
Komponenta Gateway for Spring podporuje definování tras prostřednictvím id
uri
predicates
, , a filters
vlastností, jak je znázorněno v následujícím příkladu:
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}"
Následující seznam popisuje vztah mapování mezi trasami brány VMware Spring Cloud a trasami brány pro Spring:
- Trasa
name
je namapována naid
. - Mapují
appName
se naprotocol
identifikátor URI trasy, což by měl být přístupný identifikátor URI instance Azure Container Apps. - Predikáty a filtry brány Spring Cloud se mapují na bránu pro predikáty a filtry Spring.
Předpokládejme například, že se pro bránu VMware Spring Cloud Gateway vytvoří následující soubor JSON konfigurace trasy, který se nazývá test-api.json :
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddResponseHeader=X-Response-Red, Blue"
]
}
]
}
Předpokládejme, že k použití pravidla pro aplikaci test-app
Azure Spring Apps použijete následující příkaz:
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
Následující příklad pak ukazuje odpovídající soubor YAML trasy test-api.yml pro bránu pro Spring v 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
A k aktualizaci aplikace kontejneru byste použili následující příkaz:
az containerapp env java-component gateway-for-spring update \
--route-yaml test-api.yml
Abyste získali plně kvalifikovaný název domény (FQDN), musíte pro aplikaci Azure Container App povolit příchozí přenos dat. Potom v identifikátoru URI trasy nahraďte <app-FQDN-in-Azure-Container-Apps>
přístupným koncovým bodem aplikace. Formát identifikátoru URI je https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io
.
Ve službě Gateway for Spring v Azure Container Apps nejsou podporované některé komerční predikáty a komerční filtry .
Mezipaměť odpovědí
Pokud povolíte mezipaměť odpovědí globálně, můžete spravovanou bránu pro Spring aktualizovat pomocí následující konfigurace:
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>
Pokud pro trasu povolíte mezipaměť odpovědí, můžete použít LocalResponseCache
filtr v konfiguraci pravidla směrování spravované brány pro Spring jako následující YAML:
springCloudGatewayRoutes:
- id: "test-api"
uri: "<app-fqdn-in-Container-Apps>"
predicates:
- Path=/v1/**
- Method=GET
filters:
- LocalResponseCache=3m, 1MB
Řešení problému
Protokoly brány pro Spring v Azure Container Apps můžete zobrazit pomocí Log Analytics
následujícího postupu:
Na webu Azure Portal přejděte do prostředí Azure Container Apps.
V navigačním podokně vyberte Protokoly monitorování>.
Pokud chcete zobrazit protokoly, dotazujte se na
ContainerAppSystemLogs_CL
tabulku pomocí editoru dotazů, jak je znázorněno v následujícím příkladu:ContainerAppSystemLogs_CL | where ComponentType_s == "SpringCloudGateway" | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s | take 100
Další informace o dotazováníprotokolůch
Známé omezení
Brána pro Spring v Azure Container Apps zatím nepodporuje některé komerční funkce, včetně metadat používaných ke generování dokumentace OpenAPI, jednotného přihlašování (SSO) a integrace monitorování výkonu aplikací (APM).
Existuje známý problém, kdy povolení brány pro Spring brání otevření oddílu Služby na webu Azure Portal. Očekáváme, že tento problém brzy vyřešíme.