Delen via


Spring Cloud Gateway voor Tanzu migreren naar beheerde gateway voor Spring in Azure Container Apps

Notitie

De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.

Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.

Dit artikel is van toepassing op: ❎ Basic/Standard ✅ Enterprise

In dit artikel wordt beschreven hoe u VMware Spring Cloud Gateway migreert in Azure Spring Apps Enterprise-abonnement naar beheerde gateway voor Spring in Azure Container Apps met behulp van de Azure CLI.

Vereisten

Beheerde gateway inrichten voor Spring

Gebruik de volgende opdracht om de gateway in te richten voor het Spring Java-onderdeel in de Azure Container Apps-omgeving die u hebt gemaakt in de vereisten:

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

Nadat u het onderdeel hebt gemaakt, ziet u dat de waarde Inrichtingsstatus voor Spring Cloud Gateway is geslaagd.

Resourcebeheer

De toewijzing van containerresources voor de gateway voor Spring in Azure Container Apps is vastgezet op de volgende waarden:

  • CPU: 0,5 vCPU
  • Geheugen: 1 Gi

Als u het aantal exemplaren voor Gateway voor Spring wilt configureren, gebruikt u de parameters --min-replicas en --max-replicasstelt u beide in op dezelfde waarde. Deze configuratie zorgt ervoor dat het aantal exemplaren vast blijft. Het systeem biedt momenteel geen ondersteuning voor dynamische configuraties voor automatisch schalen.

Gateway configureren voor Spring

Nadat u de gateway hebt ingericht, is de volgende stap het configureren voor een soepele migratie.

U kunt de configuratie en routes van het Gateway voor Spring-onderdeel bijwerken met behulp van de update opdracht, zoals wordt weergegeven in het volgende voorbeeld:

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-configuratie

Als u de algemene CORS-configuratie (Cross-Origin Resource Sharing) van VMware Spring Cloud Gateway wilt migreren, moet u eigenschappen toewijzen aan de indeling <configuration-key>="<configuration-value>". De toewijzingsrelatie wordt weergegeven in de volgende tabel:

Naam van eigenschap in VMware Spring Cloud Gateway Configuratie in gateway voor Spring
Toegestane oorsprongen spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[<id>]
Toegestane oorsprongspatronen spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns[<id>]
Toegestane methoden spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[<id>]
Toegestane headers spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders[<id>]
Maximale leeftijd spring.cloud.gateway.globalcors.cors-configurations.[/**].maxAge
Referenties toestaan spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials
Weergegeven headers spring.cloud.gateway.globalcors.cors-configurations.[/**].exposedHeaders[<id>]

Als u bijvoorbeeld een configuratie hebt zoals allowedOrigins:["https://example.com","https://example1.com"] in VMware Spring Cloud Gateway, moet u De gateway voor Spring bijwerken met de volgende parameter:

--configuration spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[0]=https://example.com spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[1]=https://example1.com

Voor CORS-configuratie per route moet u de '/**' in de configuratiesleutel vervangen als het routepad. Als u bijvoorbeeld een route met pad /v1/**hebt, moet u configureren spring.cloud.gateway.globalcors.cors-configurations.[/v1/**].allowedOrigins[<id>].

Routes

De gateway voor Spring-onderdeel ondersteunt het definiëren van routes via de id, urien predicateseigenschappen filters , zoals wordt weergegeven in het volgende voorbeeld:

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

In de volgende lijst wordt de toewijzingsrelatie beschreven tussen routes van VMware Spring Cloud Gateway en routes van Gateway voor Spring:

  • De name route is toegewezen aan id.
  • De appName en protocol zijn toegewezen aan de URI van de route. Dit moet de toegankelijke URI zijn voor het Azure Container Apps-exemplaar.
  • Spring Cloud Gateway predicaten en filters worden toegewezen aan Gateway voor Spring-predicaten en -filters.

Stel bijvoorbeeld dat het volgende JSON-bestand voor de routeconfiguratie, test-api.json wordt genoemd, wordt gemaakt voor VMware Spring Cloud Gateway:

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

En stel dat u de volgende opdracht gebruikt om de regel toe te passen op de Azure Spring Apps-app 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

Vervolgens ziet u in het volgende voorbeeld het bijbehorende YAML-routebestand test-api.yml voor Gateway voor Spring in 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

En u gebruikt de volgende opdracht om de container-app bij te werken:

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

U moet inkomend verkeer inschakelen voor uw Azure Container App-toepassing om de FQDN (Fully Qualified Domain Name) te verkrijgen. <app-FQDN-in-Azure-Container-Apps> Vervang vervolgens de URI van de route door het toegankelijke eindpunt van de app. De URI-indeling is https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.

Er zijn enkele commerciële predicaten en commerciële filters die niet worden ondersteund in Gateway voor Spring in Azure Container Apps.

Antwoordcache

Als u de antwoordcache globaal inschakelt, kunt u de beheerde gateway voor Spring bijwerken met de volgende configuratie:

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>

Als u de antwoordcache voor de route inschakelt, kunt u het LocalResponseCache filter gebruiken in de routeringsregelconfiguratie van beheerde gateway voor Spring als de volgende YAML:

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

Probleemoplossing

U kunt logboeken van Gateway voor Spring in Azure Container Apps weergeven met behulp Log Analytics van de volgende stappen:

  1. Navigeer in Azure Portal naar uw Azure Container Apps-omgeving.

  2. Selecteer Bewakingslogboeken> in het navigatiedeelvenster.

  3. Als u logboeken wilt weergeven, voert u een query uit op de ContainerAppSystemLogs_CL tabel met behulp van de queryeditor, zoals wordt weergegeven in het volgende voorbeeld:

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

Zie Waarneembaarheid van beheerde Java-onderdelen in Azure Container Apps voor meer informatie over het uitvoeren van query's op logboeken.

Bekende beperking

Voorlopig biedt Gateway voor Spring in Azure Container Apps geen ondersteuning voor bepaalde commerciële functies, waaronder metagegevens die worden gebruikt voor het genereren van OpenAPI-documentatie, eenmalige aanmelding (SSO) en APM-integratie (Application Performance Monitoring).

Er is een bekend probleem waarbij het inschakelen van Gateway voor Spring voorkomt dat de sectie Services wordt geopend in Azure Portal. Dit probleem wordt binnenkort opgelost.