Korzystanie z usługi Spring Cloud Gateway

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

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

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 jak http://<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 lub HTTPS, a wartością domyślną jest HTTP. Aby zabezpieczyć ruch z usługi Spring Cloud Gateway do aplikacji obsługującej protokół HTTPS, należy ustawić protokół na HTTPS 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, filtersi ssoEnabled. Jeśli używasz OpenAPI URI funkcji do definiowania tras, jedyną właściwością routingu na poziomie aplikacji do obsługi jest filters.

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.

  1. 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>
    
  2. 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.

    Screenshot of Azure portal Azure Spring Apps overview page with 'Assign endpoint' highlighted.

    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
    
  3. 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:

    Screenshot of Azure portal Azure Spring Apps Spring Cloud Gateway page showing 'Routing rules' pane.

  4. 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
    
  5. 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).

Następne kroki