Använda Spring Cloud Gateway
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 använder VMware Spring Cloud Gateway med Azure Spring Apps Enterprise-planen för att dirigera begäranden till dina program.
VMware Spring Cloud Gateway är en kommersiell VMware Tanzu-komponent baserad på Spring Cloud Gateway-projektet med öppen källkod. Spring Cloud Gateway hanterar övergripande problem för API-utvecklingsteam, till exempel enkel inloggning (SSO), åtkomstkontroll, hastighetsbegränsning, återhämtning, säkerhet med mera. Du kan påskynda API-leveransen med hjälp av moderna molnbaserade mönster och valfritt programmeringsspråk som du väljer för API-utveckling.
Spring Cloud Gateway innehåller följande funktioner:
- Dynamisk routningskonfiguration, oberoende av enskilda program som kan tillämpas och ändras utan omkompilering.
- Kommersiella API-routningsfilter för att transportera auktoriserade JSON Web Token-anspråk (JWT) till programtjänster.
- Auktorisering av klientcertifikat.
- Frekvensbegränsningsmetoder.
- Kretsbrytarkonfiguration.
- Stöd för åtkomst till programtjänster via HTTP Basic Authentication-autentiseringsuppgifter.
För att integrera med API-portalen för VMware Tanzu genererar VMware Spring Cloud Gateway automatiskt OpenAPI version 3-dokumentation efter eventuella tillägg eller ändringar i routningskonfigurationen.
Förutsättningar
- En redan etablerad Azure Spring Apps Enterprise-plantjänstinstans med Spring Cloud Gateway aktiverad. Mer information finns i Snabbstart: Skapa och distribuera appar till Azure Spring Apps med hjälp av Enterprise-planen.
- Azure CLI version 2.0.67 eller senare. Använd följande kommando för att installera Azure Spring Apps-tillägget:
az extension add --name spring
.
Konfigurera vägar
I det här avsnittet beskrivs hur du lägger till, uppdaterar och hanterar API-vägar för appar som använder Spring Cloud Gateway.
Routningskonfigurationsdefinitionen innehåller följande delar:
- OpenAPI-URI: Den här URI:n refererar till en OpenAPI-specifikation. Du kan använda en offentlig URI-slutpunkt, till exempel
https://petstore3.swagger.io/api/v3/openapi.json
eller en konstruerad URI,http://<app-name>/{relative-path-to-OpenAPI-spec}
till exempel , där<app-name>
är namnet på ett program i Azure Spring Apps som innehåller API-definitionen. Specifikationer för både OpenAPI 2.0 och OpenAPI 3.0 stöds. Specifikationen visas i API-portalen om den är aktiverad. - vägar: En lista över routningsregler för att dirigera trafik till appar och tillämpa filter.
- protokoll: Serverdelsprotokollet för programmet som Spring Cloud Gateway dirigerar trafik till. Protokollets värden som stöds är
HTTP
ellerHTTPS
, och standardvärdet ärHTTP
. För att skydda trafik från Spring Cloud Gateway till ditt HTTPS-aktiverade program måste du ange protokollet tillHTTPS
i din routningskonfiguration. - vägar på appnivå: Det finns tre routningsegenskaper som du kan konfigurera på appnivå för att undvika upprepning över alla eller de flesta vägar i routningskonfigurationen. Den konkreta routningsregeln åsidosätter routningsregeln på appnivå för samma egenskap. Du kan definiera följande egenskaper på appnivå:
predicates
,filters
ochssoEnabled
. Om du använderOpenAPI URI
funktionen för att definiera vägar är den enda routningsegenskapen på appnivå som stödsfilters
.
Använd följande kommando för att skapa en vägkonfiguration. Värdet --app-name
ska vara namnet på en app som finns i Azure Spring Apps som begäranden dirigeras till.
az spring gateway route-config create \
--name <route-config-name> \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app-name <app-name> \
--routes-file <routes-file.json>
I följande exempel visas en JSON-fil som skickas till parametern --routes-file
i kommandot create:
{
"predicates": [
"<app-level-predicate-of-route>",
],
"ssoEnabled": false,
"filters": [
"<app-level-filter-of-route>",
],
"openApi": {
"uri": "<OpenAPI-URI>"
},
"protocol": "<protocol-of-routed-app>",
"routes": [
{
"title": "<title-of-route>",
"description": "<description-of-route>",
"predicates": [
"<predicate-of-route>",
],
"ssoEnabled": true,
"filters": [
"<filter-of-route>",
],
"tags": [
"<tag-of-route>"
],
"order": 0
}
]
}
I följande tabell visas routningsdefinitionerna. Alla egenskaper är valfria.
Property | Beskrivning |
---|---|
rubrik | En rubrik som ska tillämpas på metoder i den genererade OpenAPI-dokumentationen. |
description | En beskrivning som ska tillämpas på metoder i den genererade OpenAPI-dokumentationen. |
uri | Den fullständiga URI:n, som åsidosätter namnet på appen som begäranden dirigeras till. |
ssoEnabled | Ett värde som anger om SSO-validering ska aktiveras. Se Konfigurera enkel inloggning. |
tokenRelay | Skickar den för närvarande autentiserade användarens identitetstoken till programmet. |
Predikat | En lista över predikat. Se Tillgängliga predikat. |
filter | En lista med filter. Se Tillgängliga filter. |
order | Order för routningsbearbetning. En lägre ordning bearbetas med högre prioritet, som i Spring Cloud Gateway. |
taggar | Klassificeringstaggar som tillämpas på metoder i den genererade OpenAPI-dokumentationen. |
Kommentar
På grund av säkerhets- eller kompatibilitetsskäl stöds inte alla filter/predikat i Azure Spring Apps. Följande stöds inte:
- BasicAuth
- JWTKey
Använda vägar för Spring Cloud Gateway
Använd följande steg för att skapa ett exempelprogram med Spring Cloud Gateway.
Använd följande kommando för att skapa ett testprogram med namnet test-app i Azure Spring Apps:
az spring app create \ name test-app \ resource-group <resource-group-name> \ service <Azure-Spring-Apps-instance-name>
Tilldela en offentlig slutpunkt till gatewayen för att få åtkomst till den.
Om du vill visa körningstillståndet och resurserna som ges till Spring Cloud Gateway öppnar du din Azure Spring Apps-instans i Azure Portal, väljer avsnittet Spring Cloud Gateway och väljer sedan Översikt.
Om du vill tilldela en offentlig slutpunkt väljer du Ja bredvid Tilldela slutpunkt. En URL visas om några minuter. Spara URL:en som ska användas senare.
Du kan också använda Azure CLI för att tilldela slutpunkten. Använd följande kommando för att tilldela slutpunkten.
az spring gateway update \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --assign-endpoint true
Skapa en regel för åtkomst till slutpunkten för hälsokontroll i testappen via Spring Cloud Gateway.
Spara följande innehåll i en test-api.json fil. Den här konfigurationen innehåller ett RateLimit-filter som tillåter 20 begäranden var 10:e sekund och ett RewritePath-filter, vilket gör att begärandeslutpunkten kan nå slutpunkten för spring boot-standardhälsokontrollen.
{ "protocol": "HTTP", "routes": [ { "title": "Test API", "description": "Retrieve a health check from our application", "predicates": [ "Path=/test/api/healthcheck", "Method=GET" ], "filters": [ "RateLimit=20,10s", "RewritePath=/api/healthcheck,/actuator/health" ], "tags": [ "test" ] } ] }
Använd sedan följande kommando för att tillämpa regeln på appen
test-app
:az spring gateway route-config create \ --name test-api-routes \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --app-name test-app \ --routes-file test-api.json
Du kan också visa vägarna i portalen, som du ser på följande skärmbild:
Använd följande kommando för att komma åt API:et
test health check
via gatewayslutpunkten:curl https://<endpoint-url>/test/api/healthcheck
Använd följande kommandon för att köra frågor mot routningsreglerna:
az spring gateway route-config show \ --name test-api-routes \ --query '{appResourceId:properties.appResourceId, routes:properties.routes}' az spring gateway route-config list \ --query '[].{name:name, appResourceId:properties.appResourceId, routes:properties.routes}'
Använda filter
Spring Cloud Gateway-projektet med öppen källkod innehåller många inbyggda filter för användning i Gateway-vägar. Spring Cloud Gateway innehåller många anpassade filter utöver filtren som ingår i OSS-projektet.
I följande exempel visas hur du tillämpar filtret på AddRequestHeadersIfNotPresent
en väg:
[
{
"predicates": [
"Path=/api/**",
"Method=GET"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
Tillämpa sedan routningsdefinitionen med följande Azure CLI-kommando:
az spring gateway route-config create \
--name <route-config-name> \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name>
--routes-file <json-file-with-routes>
Mer information om tillgängliga vägfilter finns i Använda VMware Spring Cloud Gateway Route Filters med Azure Spring Apps Enterprise-planen.