Dela via


Använda Spring Cloud Gateway

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

Den här artikeln gäller för:❌ Basic/Standard ✔️ Enterprise

Den här artikeln visar hur du använder VMware Spring Cloud Gateway med Azure Spring Apps Enterprise-planen för att dirigera begäranden till dina program.

VMware Spring Cloud Gateway är en kommersiell VMware Tanzu-komponent baserad på Spring Cloud Gateway-projektet med öppen källkod. Spring Cloud Gateway hanterar övergripande problem för API-utvecklingsteam, till exempel enkel inloggning (SSO), åtkomstkontroll, hastighetsbegränsning, återhämtning, säkerhet med mera. Du kan påskynda API-leveransen med hjälp av moderna molnbaserade mönster och valfritt programmeringsspråk som du väljer för API-utveckling.

Spring Cloud Gateway innehåller följande funktioner:

  • Dynamisk routningskonfiguration, oberoende av enskilda program som kan tillämpas och ändras utan omkompilering.
  • Kommersiella API-routningsfilter för att transportera auktoriserade JSON Web Token-anspråk (JWT) till programtjänster.
  • Auktorisering av klientcertifikat.
  • Frekvensbegränsningsmetoder.
  • Kretsbrytarkonfiguration.
  • Stöd för åtkomst till programtjänster via HTTP Basic Authentication-autentiseringsuppgifter.

För att integrera med API-portalen för VMware Tanzu genererar VMware Spring Cloud Gateway automatiskt OpenAPI version 3-dokumentation efter eventuella tillägg eller ändringar i routningskonfigurationen.

Förutsättningar

Konfigurera vägar

I det här avsnittet beskrivs hur du lägger till, uppdaterar och hanterar API-vägar för appar som använder Spring Cloud Gateway.

Routningskonfigurationsdefinitionen innehåller följande delar:

  • OpenAPI-URI: Den här URI:n refererar till en OpenAPI-specifikation. Du kan använda en offentlig URI-slutpunkt, till exempel https://petstore3.swagger.io/api/v3/openapi.json eller en konstruerad URI, http://<app-name>/{relative-path-to-OpenAPI-spec}till exempel , där <app-name> är namnet på ett program i Azure Spring Apps som innehåller API-definitionen. Specifikationer för både OpenAPI 2.0 och OpenAPI 3.0 stöds. Specifikationen visas i API-portalen om den är aktiverad.
  • vägar: En lista över routningsregler för att dirigera trafik till appar och tillämpa filter.
  • protokoll: Serverdelsprotokollet för programmet som Spring Cloud Gateway dirigerar trafik till. Protokollets värden som stöds är HTTP eller HTTPS, och standardvärdet är HTTP. För att skydda trafik från Spring Cloud Gateway till ditt HTTPS-aktiverade program måste du ange protokollet till HTTPS i din routningskonfiguration.
  • vägar på appnivå: Det finns tre routningsegenskaper som du kan konfigurera på appnivå för att undvika upprepning över alla eller de flesta vägar i routningskonfigurationen. Den konkreta routningsregeln åsidosätter routningsregeln på appnivå för samma egenskap. Du kan definiera följande egenskaper på appnivå: predicates, filtersoch ssoEnabled. Om du använder OpenAPI URI funktionen för att definiera vägar är den enda routningsegenskapen på appnivå som stöds filters.

Använd följande kommando för att skapa en vägkonfiguration. Värdet --app-name ska vara namnet på en app som finns i Azure Spring Apps som begäranden dirigeras till.

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>

I följande exempel visas en JSON-fil som skickas till parametern --routes-file i kommandot 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
      }
   ]
}

I följande tabell visas routningsdefinitionerna. Alla egenskaper är valfria.

Property Beskrivning
rubrik En rubrik som ska tillämpas på metoder i den genererade OpenAPI-dokumentationen.
description En beskrivning som ska tillämpas på metoder i den genererade OpenAPI-dokumentationen.
uri Den fullständiga URI:n, som åsidosätter namnet på appen som begäranden dirigeras till.
ssoEnabled Ett värde som anger om SSO-validering ska aktiveras. Se Konfigurera enkel inloggning.
tokenRelay Skickar den för närvarande autentiserade användarens identitetstoken till programmet.
Predikat En lista över predikat. Se Tillgängliga predikat.
filter En lista med filter. Se Tillgängliga filter.
order Order för routningsbearbetning. En lägre ordning bearbetas med högre prioritet, som i Spring Cloud Gateway.
taggar Klassificeringstaggar som tillämpas på metoder i den genererade OpenAPI-dokumentationen.

Kommentar

På grund av säkerhets- eller kompatibilitetsskäl stöds inte alla filter/predikat i Azure Spring Apps. Följande stöds inte:

  • BasicAuth
  • JWTKey

Använda vägar för Spring Cloud Gateway

Använd följande steg för att skapa ett exempelprogram med Spring Cloud Gateway.

  1. Använd följande kommando för att skapa ett testprogram med namnet test-app i Azure Spring Apps:

    az spring app create \
        name test-app \
        resource-group <resource-group-name> \
        service <Azure-Spring-Apps-instance-name>
    
  2. Tilldela en offentlig slutpunkt till gatewayen för att få åtkomst till den.

    Om du vill visa körningstillståndet och resurserna som ges till Spring Cloud Gateway öppnar du din Azure Spring Apps-instans i Azure-portalen, väljer avsnittet Spring Cloud Gateway och väljer sedan Översikt.

    Om du vill tilldela en offentlig slutpunkt väljer du Ja bredvid Tilldela slutpunkt. En URL visas om några minuter. Spara URL:en som ska användas senare.

    Skärmbild av översiktssidan för Azure Spring Apps i Azure-portalen med

    Du kan också använda Azure CLI för att tilldela slutpunkten. Använd följande kommando för att tilldela slutpunkten.

    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --assign-endpoint true
    
  3. Skapa en regel för åtkomst till slutpunkten för hälsokontroll i testappen via Spring Cloud Gateway.

    Spara följande innehåll i en test-api.json fil. Den här konfigurationen innehåller ett RateLimit-filter som tillåter 20 begäranden var 10:e sekund och ett RewritePath-filter, vilket gör att begärandeslutpunkten kan nå slutpunkten för spring boot-standardhälsokontrollen.

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

    Använd sedan följande kommando för att tillämpa regeln på appen 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
    

    Du kan också visa vägarna i portalen, som du ser på följande skärmbild:

    Skärmbild av Azure Spring Apps Spring Cloud Gateway-sidan i Azure-portalen som visar fönstret Routningsregler.

  4. Använd följande kommando för att komma åt API:et test health check via gatewayslutpunkten:

    curl https://<endpoint-url>/test/api/healthcheck
    
  5. Använd följande kommandon för att köra frågor mot routningsreglerna:

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

Använda filter

Spring Cloud Gateway-projektet med öppen källkod innehåller många inbyggda filter för användning i Gateway-vägar. Spring Cloud Gateway innehåller många anpassade filter utöver filtren som ingår i OSS-projektet.

I följande exempel visas hur du tillämpar filtret på AddRequestHeadersIfNotPresent en väg:

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

Tillämpa sedan routningsdefinitionen med följande Azure CLI-kommando:

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>

Mer information om tillgängliga vägfilter finns i Använda VMware Spring Cloud Gateway Route Filters med Azure Spring Apps Enterprise-planen.

Nästa steg