Použití brány Spring Cloud
Poznámka:
Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.
Tento článek se vztahuje na:❌ Basic/Standard ✔️ Enterprise
V tomto článku se dozvíte, jak pomocí brány VMware Spring Cloud s plánem Azure Spring Apps Enterprise směrovat žádosti do vašich aplikací.
Brána VMware Spring Cloud je komerční komponenta VMware Tanzu založená na opensourcovém projektu brány Spring Cloud. Spring Cloud Gateway řeší průřezové otázky pro vývojové týmy rozhraní API, jako je jednotné přihlašování (SSO), řízení přístupu, omezování rychlosti, odolnost, zabezpečení a další. Doručování rozhraní API můžete urychlit pomocí moderních vzorů nativních pro cloud a libovolného programovacího jazyka, který zvolíte pro vývoj rozhraní API.
Brána Spring Cloud zahrnuje následující funkce:
- Dynamická konfigurace směrování nezávislá na jednotlivých aplikacích, které je možné použít a změnit bez rekompilace.
- Filtry tras komerčního rozhraní API pro přenos autorizovaných deklarací identity webového tokenu JSON (JWT) do aplikačních služeb.
- Autorizace klientského certifikátu.
- Přístupy k omezování rychlosti.
- Konfigurace jističe.
- Podpora přístupu k aplikačním službám prostřednictvím přihlašovacích údajů základního ověřování HTTP
Pokud chcete integrovat s portálem API pro VMware Tanzu, brána VMware Spring Cloud automaticky vygeneruje dokumentaci OpenAPI verze 3 po přidání nebo změnách konfigurace trasy.
Požadavky
- Už zřízená instance služby plánu Azure Spring Apps Enterprise s povolenou bránou Spring Cloud Další informace najdete v tématu Rychlý start: Sestavování a nasazování aplikací do Azure Spring Apps pomocí plánu Enterprise.
- Azure CLI verze 2.0.67 nebo novější K instalaci rozšíření Azure Spring Apps použijte následující příkaz:
az extension add --name spring
.
Konfigurace tras
Tato část popisuje, jak přidávat, aktualizovat a spravovat trasy rozhraní API pro aplikace, které používají bránu Spring Cloud.
Definice konfigurace trasy zahrnuje následující části:
- Identifikátor URI OpenAPI: Tento identifikátor URI odkazuje na specifikaci OpenAPI. Můžete použít koncový bod veřejného identifikátoru URI, například nebo vytvořený identifikátor URI, například
https://petstore3.swagger.io/api/v3/openapi.json
http://<app-name>/{relative-path-to-OpenAPI-spec}
, kde<app-name>
je název aplikace v Azure Spring Apps, která obsahuje definici rozhraní API. Podporují se specifikace OpenAPI 2.0 i OpenAPI 3.0. Pokud je tato specifikace povolená, zobrazí se na portálu API. - trasy: Seznam pravidel směrování pro směrování provozu do aplikací a použití filtrů.
- protokol: Back-endový protokol aplikace, do které Spring Cloud Gateway směruje provoz. Podporované hodnoty protokolu jsou
HTTP
neboHTTPS
a výchozí hodnota jeHTTP
. Pokud chcete zabezpečit provoz z brány Spring Cloud do aplikace s povoleným protokolem HTTPS, musíte protokol nastavit vHTTPS
konfiguraci trasy. - trasy na úrovni aplikace: Existují tři vlastnosti trasy, které můžete nakonfigurovat na úrovni aplikace, abyste se vyhnuli opakování všech nebo většiny tras v konfiguraci trasy. Konkrétní pravidlo směrování přepíše pravidlo směrování na úrovni aplikace pro stejnou vlastnost. Na úrovni aplikace můžete definovat následující vlastnosti:
predicates
,filters
assoEnabled
. Pokud funkci použijeteOpenAPI URI
k definování tras, jedinou vlastností směrování na úrovni aplikace, která se má podporovat, jefilters
.
Pomocí následujícího příkazu vytvořte konfiguraci trasy. Hodnota --app-name
by měla být název aplikace hostované v Azure Spring Apps, do které se požadavky směrují.
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>
Následující příklad ukazuje soubor JSON předaný parametru --routes-file
v příkazu 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
}
]
}
Následující tabulka uvádí definice tras. Všechny vlastnosti jsou volitelné.
Vlastnost | Popis |
---|---|
title | Název, který se použije u metod vygenerované dokumentace OpenAPI. |
description | Popis, který se použije u metod vygenerované dokumentace OpenAPI. |
uri | Úplný identifikátor URI, který přepíše název aplikace, do které se požadavky směrují. |
ssoEnabled | Hodnota, která označuje, jestli se má povolit ověřování jednotného přihlašování. Viz Konfigurace jednotného přihlašování. |
tokenRelay | Předá aktuálně ověřený token identity uživatele do aplikace. |
Predikáty | Seznam predikátů. Viz dostupné predikáty. |
Filtry | Seznam filtrů Viz dostupné filtry. |
order | Pořadí zpracování tras. Nižší pořadí se zpracovává s vyšší prioritou, stejně jako v bráně Spring Cloud. |
značky | Značky klasifikace použité u metod vygenerované dokumentaci OpenAPI |
Poznámka:
Kvůli zabezpečení nebo kompatibilitě se v Azure Spring Apps nepodporují všechny filtry a predikáty. Následující možnosti nejsou podporované:
- Základní ověřování
- JWTKey
Použití tras pro bránu Spring Cloud
Pomocí následujících kroků vytvořte ukázkovou aplikaci pomocí brány Spring Cloud.
Pomocí následujícího příkazu vytvořte testovací aplikaci s názvem test-app v Azure Spring Apps:
az spring app create \ name test-app \ resource-group <resource-group-name> \ service <Azure-Spring-Apps-instance-name>
Přiřaďte k bráně veřejný koncový bod pro přístup.
Pokud chcete zobrazit stav spuštění a prostředky poskytnuté bráně Spring Cloud, otevřete instanci Azure Spring Apps na webu Azure Portal, vyberte část Brána Spring Cloud a pak vyberte Přehled.
Pokud chcete přiřadit veřejný koncový bod, vyberte Ano vedle možnosti Přiřadit koncový bod. Za několik minut se zobrazí adresa URL. Uložte adresu URL, abyste ji mohli použít později.
K přiřazení koncového bodu můžete použít také Azure CLI. K přiřazení koncového bodu použijte následující příkaz.
az spring gateway update \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --assign-endpoint true
Vytvořte pravidlo pro přístup ke koncovému bodu kontroly stavu testovací aplikace prostřednictvím brány Spring Cloud.
Uložte následující obsah do souboru test-api.json . Tato konfigurace zahrnuje filtr RateLimit, který umožňuje každých 10 sekund 20 požadavků, a filtr RewritePath, který umožňuje koncovému bodu požadavku dosáhnout standardního koncového bodu kontroly stavu Spring Boot.
{ "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" ] } ] }
Pak pomocí následujícího příkazu použijte pravidlo pro aplikaci
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
Trasy můžete zobrazit také na portálu, jak je znázorněno na následujícím snímku obrazovky:
Pro přístup k
test health check
rozhraní API prostřednictvím koncového bodu brány použijte následující příkaz:curl https://<endpoint-url>/test/api/healthcheck
K dotazování pravidel směrování použijte následující příkazy:
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}'
Použití filtrů
Opensourcový projekt brány Spring Cloud obsahuje mnoho předdefinovaných filtrů pro použití v trasách brány. Brána Spring Cloud nabízí kromě filtrů zahrnutých v projektu OSS mnoho vlastních filtrů.
Následující příklad ukazuje, jak použít AddRequestHeadersIfNotPresent
filtr na trasu:
[
{
"predicates": [
"Path=/api/**",
"Method=GET"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
Pak použijte definici trasy pomocí následujícího příkazu Azure CLI:
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>
Další informace o dostupných filtrech tras najdete v tématu Jak používat filtry tras brány VMware Spring Cloud s plánem Azure Spring Apps Enterprise.