Korzystanie z usługi Spring Cloud Gateway
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy: ❎ Podstawowa/Standardowa ✅ Enterprise
W tym artykule pokazano, jak używać usługi VMware Spring Cloud Gateway z planem Usługi Azure Spring Apps Enterprise w celu kierowania żądań do aplikacji.
VMware Spring Cloud Gateway to komercyjny składnik VMware Tanzu oparty na projekcie Spring Cloud Gateway typu open source. Usługa Spring Cloud Gateway obsługuje wielociągowe obawy dotyczące zespołów programistycznych interfejsów API, takich jak logowanie jednokrotne, kontrola dostępu, ograniczanie szybkości, odporność, zabezpieczenia i nie tylko. Dostarczanie interfejsu API można przyspieszyć przy użyciu nowoczesnych wzorców natywnych dla chmury i dowolnego języka programowania wybranego do tworzenia interfejsu API.
Usługa Spring Cloud Gateway oferuje następujące funkcje:
- Konfiguracja routingu dynamicznego, niezależna od poszczególnych aplikacji, które można stosować i zmieniać bez ponownej kompilacji.
- Filtry tras komercyjnego interfejsu API do transportu autoryzowanych oświadczeń tokenu internetowego JSON (JWT) do usług aplikacji.
- Autoryzacja certyfikatu klienta.
- Podejścia ograniczające szybkość.
- Konfiguracja wyłącznika.
- Obsługa uzyskiwania dostępu do usług aplikacji za pośrednictwem poświadczeń uwierzytelniania podstawowego PROTOKOŁU HTTP.
Aby zintegrować się z portalem interfejsu API dla oprogramowania VMware Tanzu, brama VMware Spring Cloud Gateway automatycznie generuje dokumentację interfejsu OpenAPI w wersji 3 po dodaniu lub zmianie konfiguracji trasy.
Wymagania wstępne
- Już aprowizowane wystąpienie usługi azure Spring Apps Enterprise z włączoną usługą Spring Cloud Gateway. Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie i wdrażanie aplikacji w usłudze Azure Spring Apps przy użyciu planu Enterprise.
- Interfejs wiersza polecenia platformy Azure w wersji 2.0.67 lub nowszej. Użyj następującego polecenia, aby zainstalować rozszerzenie Azure Spring Apps:
az extension add --name spring
.
Konfigurowanie tras
W tej sekcji opisano sposób dodawania, aktualizowania i zarządzania trasami interfejsu API dla aplikacji korzystających z usługi Spring Cloud Gateway.
Definicja konfiguracji trasy obejmuje następujące części:
- Identyfikator URI interfejsu OpenAPI: ten identyfikator URI odwołuje się do specyfikacji interfejsu OpenAPI. Możesz użyć publicznego punktu końcowego identyfikatora URI, takiego jak
https://petstore3.swagger.io/api/v3/openapi.json
lub skonstruowanego identyfikatora URI, takiego jakhttp://<app-name>/{relative-path-to-OpenAPI-spec}
, gdzie<app-name>
jest nazwą aplikacji w usłudze Azure Spring Apps, która zawiera definicję interfejsu API. Obsługiwane są zarówno specyfikacje interfejsu OpenAPI 2.0, jak i OpenAPI 3.0. Specyfikacja jest wyświetlana w portalu interfejsu API, jeśli jest włączona. - routes: lista reguł tras do kierowania ruchu do aplikacji i stosowania filtrów.
- protocol: protokół zaplecza aplikacji, do której usługa Spring Cloud Gateway kieruje ruch. Obsługiwane wartości protokołu to
HTTP
lubHTTPS
, a wartością domyślną jestHTTP
. Aby zabezpieczyć ruch z usługi Spring Cloud Gateway do aplikacji obsługującej protokół HTTPS, należy ustawić protokół naHTTPS
wartość w konfiguracji trasy. - trasy na poziomie aplikacji: istnieją trzy właściwości trasy, które można skonfigurować na poziomie aplikacji, aby uniknąć powtórzeń we wszystkich lub większości tras w konfiguracji trasy. Konkretna reguła routingu zastępuje regułę routingu na poziomie aplikacji dla tej samej właściwości. Na poziomie aplikacji można zdefiniować następujące właściwości:
predicates
,filters
issoEnabled
. Jeśli używaszOpenAPI URI
funkcji do definiowania tras, jedyną właściwością routingu na poziomie aplikacji do obsługi jestfilters
.
Użyj następującego polecenia, aby utworzyć konfigurację trasy. Wartość --app-name
powinna być nazwą aplikacji hostowanej w usłudze Azure Spring Apps, do której są kierowane żądania.
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>
W poniższym przykładzie pokazano plik JSON przekazany do parametru --routes-file
w poleceniu 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
}
]
}
W poniższej tabeli wymieniono definicje tras. Wszystkie właściwości są opcjonalne.
Właściwości | opis |
---|---|
title | Tytuł stosowany do metod w wygenerowanej dokumentacji interfejsu OpenAPI. |
opis | Opis stosowany do metod w wygenerowanej dokumentacji interfejsu OpenAPI. |
uri | Pełny identyfikator URI, który zastępuje nazwę aplikacji kierowanej do żądań. |
ssoEnabled | Wartość wskazująca, czy włączyć walidację logowania jednokrotnego. Zobacz Konfigurowanie logowania jednokrotnego. |
tokenRelay | Przekazuje obecnie uwierzytelniony token tożsamości użytkownika do aplikacji. |
Predykaty | Lista predykatów. Zobacz Dostępne predykaty. |
filtry | Lista filtrów. Zobacz Dostępne filtry. |
order | Kolejność przetwarzania tras. Niższa kolejność jest przetwarzana z wyższym priorytetem, jak w usłudze Spring Cloud Gateway. |
tags | Tagi klasyfikacji stosowane do metod w wygenerowanej dokumentacji interfejsu OpenAPI. |
Uwaga
Ze względu na bezpieczeństwo lub zgodność nie wszystkie filtry/predykaty są obsługiwane w usłudze Azure Spring Apps. Następujące elementy nie są obsługiwane:
- Uwierzytelnianie podstawowe
- Klucz JWTKey
Używanie tras dla usługi Spring Cloud Gateway
Wykonaj poniższe kroki, aby utworzyć przykładową aplikację przy użyciu usługi Spring Cloud Gateway.
Użyj następującego polecenia, aby utworzyć aplikację testową o nazwie test-app w usłudze Azure Spring Apps:
az spring app create \ name test-app \ resource-group <resource-group-name> \ service <Azure-Spring-Apps-instance-name>
Przypisz publiczny punkt końcowy do bramy, aby uzyskać do niej dostęp.
Aby wyświetlić stan działania i zasoby podane w usłudze Spring Cloud Gateway, otwórz wystąpienie usługi Azure Spring Apps w witrynie Azure Portal, wybierz sekcję Spring Cloud Gateway , a następnie wybierz pozycję Przegląd.
Aby przypisać publiczny punkt końcowy, wybierz pozycję Tak obok pozycji Przypisz punkt końcowy. Adres URL jest wyświetlany w ciągu kilku minut. Zapisz adres URL do późniejszego użycia.
Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby przypisać punkt końcowy. Użyj następującego polecenia, aby przypisać punkt końcowy.
az spring gateway update \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --assign-endpoint true
Utwórz regułę, aby uzyskać dostęp do punktu końcowego kontroli kondycji aplikacji testowej za pośrednictwem usługi Spring Cloud Gateway.
Zapisz następującą zawartość w pliku test-api.json . Ta konfiguracja obejmuje filtr RateLimit, który umożliwia 20 żądań co 10 sekund oraz filtr RewritePath, który umożliwia punktowi końcowemu żądania osiągnięcie standardowego punktu końcowego sprawdzania kondycji platformy 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" ] } ] }
Następnie użyj następującego polecenia, aby zastosować regułę do aplikacji
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 można również wyświetlić w portalu, jak pokazano na poniższym zrzucie ekranu:
Użyj następującego polecenia, aby uzyskać dostęp do interfejsu
test health check
API za pośrednictwem punktu końcowego bramy:curl https://<endpoint-url>/test/api/healthcheck
Użyj następujących poleceń, aby wykonywać zapytania dotyczące reguł routingu:
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}'
Używanie filtrów
Projekt Spring Cloud Gateway typu open source zawiera wiele wbudowanych filtrów do użycia w trasach bramy. Usługa Spring Cloud Gateway udostępnia wiele niestandardowych filtrów oprócz filtrów uwzględnionych w projekcie systemu operacyjnego.
W poniższym przykładzie pokazano, jak zastosować AddRequestHeadersIfNotPresent
filtr do trasy:
[
{
"predicates": [
"Path=/api/**",
"Method=GET"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
Następnie zastosuj definicję trasy przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure:
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>
Aby uzyskać więcej informacji na temat dostępnych filtrów tras, zobacz How to use VMware Spring Cloud Gateway Route Filters with the Azure Spring Apps Enterprise plan (Jak używać filtrów tras usługi VMware Spring Cloud Gateway przy użyciu planu usługi Azure Spring Apps Enterprise).