Spring Cloud Gateway gebruiken
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 leest u hoe u VMware Spring Cloud Gateway gebruikt met het Azure Spring Apps Enterprise-plan om aanvragen naar uw toepassingen te routeren.
VMware Spring Cloud Gateway is een commercieel VMware Tanzu-onderdeel op basis van het opensource Spring Cloud Gateway-project. Spring Cloud Gateway verwerkt geavanceerde problemen voor API-ontwikkelteams, zoals eenmalige aanmelding (SSO), toegangsbeheer, snelheidsbeperking, tolerantie, beveiliging en meer. U kunt api-levering versnellen met behulp van moderne cloudeigen patronen en elke programmeertaal die u kiest voor API-ontwikkeling.
Spring Cloud Gateway bevat de volgende functies:
- Dynamische routeringsconfiguratie, onafhankelijk van afzonderlijke toepassingen die kunnen worden toegepast en gewijzigd zonder hercompilatie.
- Commerciële API-routefilters voor het transport van geautoriseerde JSON Web Token -claims (JWT) naar toepassingsservices.
- Autorisatie van clientcertificaat.
- Methoden voor snelheidsbeperking.
- Configuratie van circuitonderbreker.
- Ondersteuning voor toegang tot toepassingsservices via HTTP Basic Authentication-referenties.
Voor integratie met API Portal voor VMware Tanzu genereert VMware Spring Cloud Gateway automatisch documentatie over OpenAPI versie 3 na eventuele toevoegingen of wijzigingen van de routeconfiguratie.
Vereisten
- Een al ingericht Azure Spring Apps Enterprise-planservice-exemplaar waarvoor Spring Cloud Gateway is ingeschakeld. Zie quickstart: Apps bouwen en implementeren in Azure Spring Apps met behulp van het Enterprise-abonnement voor meer informatie.
- Azure CLI versie 2.0.67 of hoger. Gebruik de volgende opdracht om de Azure Spring Apps-extensie te installeren:
az extension add --name spring
Routes configureren
In deze sectie wordt beschreven hoe u API-routes toevoegt, bijwerkt en beheert voor apps die gebruikmaken van Spring Cloud Gateway.
De definitie van de routeconfiguratie bevat de volgende onderdelen:
- OpenAPI-URI: deze URI verwijst naar een OpenAPI-specificatie. U kunt een openbaar URI-eindpunt gebruiken, zoals
https://petstore3.swagger.io/api/v3/openapi.json
of een samengestelde URI, zoalshttp://<app-name>/{relative-path-to-OpenAPI-spec}
, waar<app-name>
is de naam van een toepassing in Azure Spring Apps die de API-definitie bevat. De specificaties van Zowel OpenAPI 2.0 als OpenAPI 3.0 worden ondersteund. De specificatie wordt weergegeven in de API-portal, indien ingeschakeld. - routes: Een lijst met routeregels om verkeer naar apps te leiden en filters toe te passen.
- protocol: het back-endprotocol van de toepassing waarnaar Spring Cloud Gateway verkeer routeert. De ondersteunde waarden van het protocol zijn
HTTP
ofHTTPS
, en de standaardwaarde isHTTP
. Als u verkeer van Spring Cloud Gateway naar uw HTTPS-toepassing wilt beveiligen, moet u het protocolHTTPS
instellen op in uw routeconfiguratie. - routes op app-niveau: er zijn drie route-eigenschappen die u op app-niveau kunt configureren om herhaling van alle of de meeste routes in de routeconfiguratie te voorkomen. De concrete routeringsregel overschrijft de regel voor routering op app-niveau voor dezelfde eigenschap. U kunt de volgende eigenschappen definiëren op app-niveau:
predicates
,filters
enssoEnabled
. Als u deOpenAPI URI
functie gebruikt om routes te definiëren, isfilters
de enige eigenschap voor routering op app-niveau ter ondersteuning.
Gebruik de volgende opdracht om een routeconfiguratie te maken. De --app-name
waarde moet de naam zijn van een app die wordt gehost in Azure Spring Apps waarnaar de aanvragen worden doorgestuurd.
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>
In het volgende voorbeeld ziet u een JSON-bestand dat wordt doorgegeven aan de --routes-file
parameter in de opdracht maken:
{
"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
}
]
}
De volgende tabel bevat de routedefinities. Alle eigenschappen zijn optioneel.
Eigenschappen | Beschrijving |
---|---|
title | Een titel die moet worden toegepast op methoden in de gegenereerde OpenAPI-documentatie. |
beschrijving | Een beschrijving die moet worden toegepast op methoden in de gegenereerde OpenAPI-documentatie. |
uri | De volledige URI, waarmee de naam van de app waarnaar de aanvragen worden doorgestuurd, wordt overschreven. |
ssoEnabled | Een waarde die aangeeft of SSO-validatie moet worden ingeschakeld. Zie Eenmalige aanmelding configureren. |
tokenRelay | Hiermee wordt het identiteitstoken van de geverifieerde gebruiker doorgegeven aan de toepassing. |
Predikaten | Een lijst met predicaten. Zie Beschikbare predicaten. |
filters | Een lijst met filters. Zie beschikbare filters. |
order | De routeverwerkingsorder. Een lagere volgorde wordt verwerkt met een hogere prioriteit, zoals in Spring Cloud Gateway. |
tags | Classificatietags die worden toegepast op methoden in de gegenereerde OpenAPI-documentatie. |
Notitie
Vanwege beveiligings- of compatibiliteitsredenen worden niet alle filters/predicaten ondersteund in Azure Spring Apps. Het volgende wordt niet ondersteund:
- BasicAuth
- JWTKey
Routes gebruiken voor Spring Cloud Gateway
Gebruik de volgende stappen om een voorbeeldtoepassing te maken met Spring Cloud Gateway.
Gebruik de volgende opdracht om een testtoepassing met de naam test-app te maken in Azure Spring Apps:
az spring app create \ name test-app \ resource-group <resource-group-name> \ service <Azure-Spring-Apps-instance-name>
Wijs een openbaar eindpunt toe aan de gateway om er toegang toe te krijgen.
Als u de actieve status en resources wilt weergeven die aan Spring Cloud Gateway zijn gegeven, opent u uw Azure Spring Apps-exemplaar in Azure Portal, selecteert u de sectie Spring Cloud Gateway en selecteert u Vervolgens Overzicht.
Als u een openbaar eindpunt wilt toewijzen, selecteert u Ja naast Eindpunt toewijzen. Binnen een paar minuten wordt een URL weergegeven. Sla de URL op die u later wilt gebruiken.
U kunt ook Azure CLI gebruiken om het eindpunt toe te wijzen. Gebruik de volgende opdracht om het eindpunt toe te wijzen.
az spring gateway update \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --assign-endpoint true
Maak een regel voor toegang tot het statuscontrole-eindpunt van de test-app via Spring Cloud Gateway.
Sla de volgende inhoud op in een test-api.json-bestand . Deze configuratie omvat een RateLimit-filter, waarmee 20 aanvragen elke 10 seconden worden toegestaan en een RewritePath-filter, waarmee het aanvraageindpunt het standaardeindpunt van de Spring Boot-statuscontrole kan bereiken.
{ "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" ] } ] }
Gebruik vervolgens de volgende opdracht om de regel toe te passen op de app
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
U kunt de routes ook weergeven in de portal, zoals wordt weergegeven in de volgende schermopname:
Gebruik de volgende opdracht om toegang te krijgen tot de
test health check
API via het gateway-eindpunt:curl https://<endpoint-url>/test/api/healthcheck
Gebruik de volgende opdrachten om een query uit te voeren op de routeringsregels:
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}'
Filters gebruiken
Het opensource Spring Cloud Gateway-project bevat veel ingebouwde filters voor gebruik in gatewayroutes. Spring Cloud Gateway biedt veel aangepaste filters naast de filters die zijn opgenomen in het OSS-project.
In het volgende voorbeeld ziet u hoe u het AddRequestHeadersIfNotPresent
filter toepast op een route:
[
{
"predicates": [
"Path=/api/**",
"Method=GET"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
Pas vervolgens de routedefinitie toe met behulp van de volgende Azure CLI-opdracht:
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>
Zie Routefilters voor VMware Spring Cloud Gateway gebruiken met het Azure Spring Apps Enterprise-plan voor meer informatie over beschikbare routefilters.