Share via


A Spring Cloud Gateway használata

Feljegyzés

Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.

Ez a cikk a következőre vonatkozik:❌ Basic/Standard ✔️ Enterprise

Ez a cikk bemutatja, hogyan használhatja a VMware Spring Cloud Gatewayt az Azure Spring Apps Enterprise-csomaggal a kérelmek alkalmazásokhoz való átirányításához.

A VMware Spring Cloud Gateway egy kereskedelmi VMware Tanzu-összetevő, amely a nyílt forráskódú Spring Cloud Gateway-projekten alapul. A Spring Cloud Gateway kezeli az API-fejlesztői csapatok átfogó problémáit, például az egyszeri bejelentkezést (SSO), a hozzáférés-vezérlést, a sebességkorlátozást, a rugalmasságot, a biztonságot és egyebeket. Az API-teljesítést modern, natív felhőminták és az API-fejlesztéshez választott programozási nyelv használatával felgyorsíthatja.

A Spring Cloud Gateway a következő funkciókat tartalmazza:

  • Dinamikus útválasztási konfiguráció, független az egyes alkalmazásoktól, amelyek újrafordítás nélkül alkalmazhatók és módosíthatók.
  • Kereskedelmi API-útvonalszűrők az engedélyezett JSON-webjogkivonatok (JWT)-jogcímek alkalmazásszolgáltatásokba való átviteléhez.
  • Ügyféltanúsítvány-engedélyezés.
  • Sebességkorlátozó megközelítések.
  • Megszakító konfigurációja.
  • Az alkalmazásszolgáltatások http-alapszintű hitelesítési hitelesítő adatokon keresztüli elérésének támogatása.

A VMware Tanzu API Portallal való integrálásához a VMware Spring Cloud Gateway automatikusan létrehozza az OpenAPI 3- es verziójának dokumentációját az útvonalkonfigurációk kiegészítése vagy módosítása után.

Előfeltételek

Útvonalak konfigurálása

Ez a szakasz a Spring Cloud Gatewayt használó alkalmazások API-útvonalainak hozzáadását, frissítését és kezelését ismerteti.

Az útvonalkonfiguráció definíciója a következő részeket tartalmazza:

  • OpenAPI URI: Ez az URI egy OpenAPI-specifikációra hivatkozik. Használhat nyilvános URI-végpontot, például https://petstore3.swagger.io/api/v3/openapi.json egy olyan létrehozott URI-t, mint például http://<app-name>/{relative-path-to-OpenAPI-spec}: hol <app-name> található egy alkalmazás neve az Azure Spring Appsben, amely tartalmazza az API-definíciót. Az OpenAPI 2.0 és az OpenAPI 3.0 specifikáció is támogatott. Ha engedélyezve van, a specifikáció megjelenik az API-portálon.
  • útvonalak: Útvonalszabályok listája az alkalmazások felé történő forgalom irányításához és szűrők alkalmazásához.
  • protokoll: Annak az alkalmazásnak a háttérprotokollja, amelyhez a Spring Cloud Gateway irányítja a forgalmat. A protokoll által támogatott értékek a következők HTTPHTTPS, és az alapértelmezett érték.HTTP A Spring Cloud Gatewayről a HTTPS-kompatibilis alkalmazásba irányuló forgalom védelméhez be kell állítania a protokollt HTTPS az útvonalkonfigurációban.
  • alkalmazásszintű útvonalak: Az alkalmazás szintjén három útvonaltulajdonság konfigurálható, hogy elkerülje az útvonalkonfiguráció összes vagy legtöbb útvonalának ismétlődését. A konkrét útválasztási szabály felülírja ugyanahhoz a tulajdonsághoz az alkalmazásszintű útválasztási szabályt. Az alkalmazás szintjén a következő tulajdonságokat határozhatja meg: predicates, filtersés ssoEnabled. Ha a funkcióval határozza meg az OpenAPI URI útvonalakat, az egyetlen támogatott alkalmazásszintű útválasztási tulajdonság.filters

Útvonalkonfiguráció létrehozásához használja az alábbi parancsot. Az --app-name értéknek az Azure Spring Appsben üzemeltetett alkalmazásnak kell lennie, amelybe a kérések átirányítják.

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>

Az alábbi példa egy JSON-fájlt mutat be, amely a létrehozási parancs paraméterének lett átadva --routes-file :

{
   "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
      }
   ]
}

Az alábbi táblázat az útvonaldefiníciókat sorolja fel. Az összes tulajdonság megadása nem kötelező.

Tulajdonság Leírás
Cím A metódusokra alkalmazandó cím a létrehozott OpenAPI-dokumentációban.
leírás A létrehozott OpenAPI-dokumentáció metódusokra vonatkozó leírása.
Uri A teljes URI, amely felülírja annak az alkalmazásnak a nevét, amelyhez a kérések átirányítják.
ssoEnabled Egy érték, amely jelzi, hogy engedélyezni szeretné-e az egyszeri bejelentkezés érvényesítését. Lásd: Egyszeri bejelentkezés konfigurálása.
tokenRelay Átadja a jelenleg hitelesített felhasználó identitásjogkivonatát az alkalmazásnak.
Predikátumok A predikátumok listája. Lásd: Elérhető predikátumok.
szűrők Szűrők listája. Lásd az elérhető szűrőket.
Rendelés Az útvonalfeldolgozási sorrend. Az alacsonyabb sorrendet a Spring Cloud Gatewayhez hasonlóan magasabb sorrendben dolgozzák fel.
címkét A metódusokra alkalmazott besorolási címkék a létrehozott OpenAPI-dokumentációban.

Feljegyzés

Biztonsági vagy kompatibilitási okokból nem minden szűrő/predikátum támogatott az Azure Spring Appsben. A következők nem támogatottak:

  • BasicAuth
  • JWTKey

Útvonalak használata a Spring Cloud Gatewayhez

Az alábbi lépésekkel hozzon létre egy mintaalkalmazást a Spring Cloud Gateway használatával.

  1. Az alábbi paranccsal hozzon létre egy test-app nevű tesztalkalmazást az Azure Spring Appsben:

    az spring app create \
        name test-app \
        resource-group <resource-group-name> \
        service <Azure-Spring-Apps-instance-name>
    
  2. Rendeljen hozzá egy nyilvános végpontot az átjáróhoz a hozzáféréshez.

    A Spring Cloud Gateway futó állapotának és erőforrásainak megtekintéséhez nyissa meg az Azure Spring Apps-példányt az Azure Portalon, válassza a Spring Cloud Gateway szakaszt, majd válassza az Áttekintés lehetőséget.

    Nyilvános végpont hozzárendeléséhez válassza az Igen lehetőséget a Végpont hozzárendelése mellett. Néhány perc múlva megjelenik egy URL-cím. Mentse az URL-címet későbbi használatra.

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

    Az Azure CLI-vel is hozzárendelheti a végpontot. A végpont hozzárendeléséhez használja az alábbi parancsot.

    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --assign-endpoint true
    
  3. Hozzon létre egy szabályt a tesztalkalmazás állapot-ellenőrzési végpontjának eléréséhez a Spring Cloud Gatewayen keresztül.

    Mentse a következő tartalmat egy test-api.json fájlba. Ez a konfiguráció tartalmaz egy RateLimit szűrőt, amely 20 kérést tesz lehetővé 10 másodpercenként, és egy RewritePath szűrőt, amely lehetővé teszi, hogy a kérésvégpont elérje a standard Spring Boot állapot-ellenőrzési végpontot.

    {
      "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"
          ]
        }
      ]
    }
    

    Ezután a következő paranccsal alkalmazza a szabályt az alkalmazásra 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
    

    Az útvonalakat a portálon is megtekintheti az alábbi képernyőképen látható módon:

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

  4. A következő paranccsal érheti el az test health check API-t az átjáróvégponton keresztül:

    curl https://<endpoint-url>/test/api/healthcheck
    
  5. Az útválasztási szabályok lekérdezéséhez használja az alábbi parancsokat:

    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}'
    

Szűrők használata

A nyílt forráskódú Spring Cloud Gateway-projekt számos beépített szűrőt tartalmaz az átjáróútvonalakban való használatra. A Spring Cloud Gateway számos egyéni szűrőt biztosít az OSS-projektben szereplő szűrők mellett.

Az alábbi példa bemutatja, hogyan alkalmazhatja a szűrőt AddRequestHeadersIfNotPresent egy útvonalra:

[
  {
    "predicates": [
      "Path=/api/**",
      "Method=GET"
    ],
    "filters": [
      "AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
    ]
  }
]

Ezután alkalmazza az útvonaldefiníciót a következő Azure CLI-paranccsal:

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>

Az elérhető útvonalszűrőkről további információt a VMware Spring Cloud Gateway útvonalszűrőinek használata az Azure Spring Apps Enterprise-csomaggal című témakörben talál.

Következő lépések