Sdílet prostřednictvím


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

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-replicasnastavte 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 iduripredicates, , 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 na id.
  • Mapují appName se na protocol 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-appAzure 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:

  1. Na webu Azure Portal přejděte do prostředí Azure Container Apps.

  2. V navigačním podokně vyberte Protokoly monitorování>.

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