A Spring Cloud Gateway használata
Feljegyzés
Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.
Ez a cikk a következőre vonatkozik:❌ Basic/Standard ✔️ Enterprise
Ez a cikk bemutatja, hogyan használhatja a VMware Spring Cloud Gatewayt az Azure Spring Apps Enterprise-csomaggal a kérelmek alkalmazásokhoz való átirányításához.
A VMware Spring Cloud Gateway egy kereskedelmi VMware Tanzu-összetevő, amely a nyílt forráskódú Spring Cloud Gateway-projekten alapul. A Spring Cloud Gateway kezeli az API-fejlesztői csapatok átfogó problémáit, például az egyszeri bejelentkezést (SSO), a hozzáférés-vezérlést, a sebességkorlátozást, a rugalmasságot, a biztonságot és egyebeket. Az API-teljesítést modern, natív felhőminták és az API-fejlesztéshez választott programozási nyelv használatával felgyorsíthatja.
A Spring Cloud Gateway a következő funkciókat tartalmazza:
- Dinamikus útválasztási konfiguráció, független az egyes alkalmazásoktól, amelyek újrafordítás nélkül alkalmazhatók és módosíthatók.
- Kereskedelmi API-útvonalszűrők az engedélyezett JSON-webjogkivonatok (JWT)-jogcímek alkalmazásszolgáltatásokba való átviteléhez.
- Ügyféltanúsítvány-engedélyezés.
- Sebességkorlátozó megközelítések.
- Megszakító konfigurációja.
- Az alkalmazásszolgáltatások http-alapszintű hitelesítési hitelesítő adatokon keresztüli elérésének támogatása.
A VMware Tanzu API Portallal való integrálásához a VMware Spring Cloud Gateway automatikusan létrehozza az OpenAPI 3- es verziójának dokumentációját az útvonalkonfigurációk kiegészítése vagy módosítása után.
Előfeltételek
- Egy már kiépített Azure Spring Apps Enterprise-csomagszolgáltatás-példány, amelyen engedélyezve van a Spring Cloud Gateway. További információ : Rövid útmutató: Alkalmazások létrehozása és üzembe helyezése az Azure Spring Appsben a Nagyvállalati csomag használatával.
- Az Azure CLI 2.0.67-es vagy újabb verziója. Az Azure Spring Apps bővítmény telepítéséhez használja a következő parancsot:
az extension add --name spring
.
Útvonalak konfigurálása
Ez a szakasz a Spring Cloud Gatewayt használó alkalmazások API-útvonalainak hozzáadását, frissítését és kezelését ismerteti.
Az útvonalkonfiguráció definíciója a következő részeket tartalmazza:
- OpenAPI URI: Ez az URI egy OpenAPI-specifikációra hivatkozik. Használhat nyilvános URI-végpontot, például
https://petstore3.swagger.io/api/v3/openapi.json
egy olyan létrehozott URI-t, mint példáulhttp://<app-name>/{relative-path-to-OpenAPI-spec}
: hol<app-name>
található egy alkalmazás neve az Azure Spring Appsben, amely tartalmazza az API-definíciót. Az OpenAPI 2.0 és az OpenAPI 3.0 specifikáció is támogatott. Ha engedélyezve van, a specifikáció megjelenik az API-portálon. - útvonalak: Útvonalszabályok listája az alkalmazások felé történő forgalom irányításához és szűrők alkalmazásához.
- protokoll: Annak az alkalmazásnak a háttérprotokollja, amelyhez a Spring Cloud Gateway irányítja a forgalmat. A protokoll által támogatott értékek a következők
HTTP
HTTPS
, és az alapértelmezett érték.HTTP
A Spring Cloud Gatewayről a HTTPS-kompatibilis alkalmazásba irányuló forgalom védelméhez be kell állítania a protokolltHTTPS
az útvonalkonfigurációban. - alkalmazásszintű útvonalak: Az alkalmazás szintjén három útvonaltulajdonság konfigurálható, hogy elkerülje az útvonalkonfiguráció összes vagy legtöbb útvonalának ismétlődését. A konkrét útválasztási szabály felülírja ugyanahhoz a tulajdonsághoz az alkalmazásszintű útválasztási szabályt. Az alkalmazás szintjén a következő tulajdonságokat határozhatja meg:
predicates
,filters
ésssoEnabled
. Ha a funkcióval határozza meg azOpenAPI URI
útvonalakat, az egyetlen támogatott alkalmazásszintű útválasztási tulajdonság.filters
Útvonalkonfiguráció létrehozásához használja az alábbi parancsot. Az --app-name
értéknek az Azure Spring Appsben üzemeltetett alkalmazásnak kell lennie, amelybe a kérések átirányítják.
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>
Az alábbi példa egy JSON-fájlt mutat be, amely a létrehozási parancs paraméterének lett átadva --routes-file
:
{
"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
}
]
}
Az alábbi táblázat az útvonaldefiníciókat sorolja fel. Az összes tulajdonság megadása nem kötelező.
Tulajdonság | Leírás |
---|---|
Cím | A metódusokra alkalmazandó cím a létrehozott OpenAPI-dokumentációban. |
leírás | A létrehozott OpenAPI-dokumentáció metódusokra vonatkozó leírása. |
Uri | A teljes URI, amely felülírja annak az alkalmazásnak a nevét, amelyhez a kérések átirányítják. |
ssoEnabled | Egy érték, amely jelzi, hogy engedélyezni szeretné-e az egyszeri bejelentkezés érvényesítését. Lásd: Egyszeri bejelentkezés konfigurálása. |
tokenRelay | Átadja a jelenleg hitelesített felhasználó identitásjogkivonatát az alkalmazásnak. |
Predikátumok | A predikátumok listája. Lásd: Elérhető predikátumok. |
szűrők | Szűrők listája. Lásd az elérhető szűrőket. |
Rendelés | Az útvonalfeldolgozási sorrend. Az alacsonyabb sorrendet a Spring Cloud Gatewayhez hasonlóan magasabb sorrendben dolgozzák fel. |
címkét | A metódusokra alkalmazott besorolási címkék a létrehozott OpenAPI-dokumentációban. |
Feljegyzés
Biztonsági vagy kompatibilitási okokból nem minden szűrő/predikátum támogatott az Azure Spring Appsben. A következők nem támogatottak:
- BasicAuth
- JWTKey
Útvonalak használata a Spring Cloud Gatewayhez
Az alábbi lépésekkel hozzon létre egy mintaalkalmazást a Spring Cloud Gateway használatával.
Az alábbi paranccsal hozzon létre egy test-app nevű tesztalkalmazást az Azure Spring Appsben:
az spring app create \ name test-app \ resource-group <resource-group-name> \ service <Azure-Spring-Apps-instance-name>
Rendeljen hozzá egy nyilvános végpontot az átjáróhoz a hozzáféréshez.
A Spring Cloud Gateway futó állapotának és erőforrásainak megtekintéséhez nyissa meg az Azure Spring Apps-példányt az Azure Portalon, válassza a Spring Cloud Gateway szakaszt, majd válassza az Áttekintés lehetőséget.
Nyilvános végpont hozzárendeléséhez válassza az Igen lehetőséget a Végpont hozzárendelése mellett. Néhány perc múlva megjelenik egy URL-cím. Mentse az URL-címet későbbi használatra.
Az Azure CLI-vel is hozzárendelheti a végpontot. A végpont hozzárendeléséhez használja az alábbi parancsot.
az spring gateway update \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --assign-endpoint true
Hozzon létre egy szabályt a tesztalkalmazás állapot-ellenőrzési végpontjának eléréséhez a Spring Cloud Gatewayen keresztül.
Mentse a következő tartalmat egy test-api.json fájlba. Ez a konfiguráció tartalmaz egy RateLimit szűrőt, amely 20 kérést tesz lehetővé 10 másodpercenként, és egy RewritePath szűrőt, amely lehetővé teszi, hogy a kérésvégpont elérje a standard Spring Boot állapot-ellenőrzési végpontot.
{ "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" ] } ] }
Ezután a következő paranccsal alkalmazza a szabályt az alkalmazásra
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
Az útvonalakat a portálon is megtekintheti az alábbi képernyőképen látható módon:
A következő paranccsal érheti el az
test health check
API-t az átjáróvégponton keresztül:curl https://<endpoint-url>/test/api/healthcheck
Az útválasztási szabályok lekérdezéséhez használja az alábbi parancsokat:
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}'
Szűrők használata
A nyílt forráskódú Spring Cloud Gateway-projekt számos beépített szűrőt tartalmaz az átjáróútvonalakban való használatra. A Spring Cloud Gateway számos egyéni szűrőt biztosít az OSS-projektben szereplő szűrők mellett.
Az alábbi példa bemutatja, hogyan alkalmazhatja a szűrőt AddRequestHeadersIfNotPresent
egy útvonalra:
[
{
"predicates": [
"Path=/api/**",
"Method=GET"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
Ezután alkalmazza az útvonaldefiníciót a következő Azure CLI-paranccsal:
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>
Az elérhető útvonalszűrőkről további információt a VMware Spring Cloud Gateway útvonalszűrőinek használata az Azure Spring Apps Enterprise-csomaggal című témakörben talál.