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

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.jsonhttp://<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 nebo HTTPSa výchozí hodnota je HTTP. Pokud chcete zabezpečit provoz z brány Spring Cloud do aplikace s povoleným protokolem HTTPS, musíte protokol nastavit v HTTPS 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, filtersa ssoEnabled. Pokud funkci použijete OpenAPI URI k definování tras, jedinou vlastností směrování na úrovni aplikace, která se má podporovat, je filters.

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.

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

    Snímek obrazovky se stránkou přehledu Azure Spring Apps na webu Azure Portal se zvýrazněnou možností Přiřadit koncový bod

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

    Snímek obrazovky webu Azure Portal se stránkou brány Spring Cloud Pro Spring Apps zobrazující podokno Pravidla směrování

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

Další kroky