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
- Een bestaand Azure Spring Apps Enterprise-planexemplaren waarvoor Spring Cloud Gateway is ingeschakeld.
- Een bestaande Azure-container-app. Zie voor meer informatie Quickstart: uw eerste container-app implementeren met behulp van Azure Portal.
- Azure CLI.
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-replicas
stelt 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
, uri
en predicates
eigenschappen 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 aanid
. - De
appName
enprotocol
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:
Navigeer in Azure Portal naar uw Azure Container Apps-omgeving.
Selecteer Bewakingslogboeken> in het navigatiedeelvenster.
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.