Použití brány Spring Cloud
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.
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.