Share via


Spring Cloud Gateway'i kullanma

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

Bu makale şunlar için geçerlidir:❌ Temel/Standart ✔️ Kurumsal

Bu makalede, istekleri uygulamalarınıza yönlendirmek için Azure Spring Apps Enterprise planıyla VMware Spring Cloud Gateway'in nasıl kullanılacağı gösterilmektedir.

VMware Spring Cloud Gateway, açık kaynak Spring Cloud Gateway projesini temel alan ticari bir VMware Tanzu bileşenidir. Spring Cloud Gateway, API geliştirme ekipleri için çoklu oturum açma (SSO), erişim denetimi, hız sınırlama, dayanıklılık, güvenlik ve daha fazlası gibi çapraz sorunlarla ilgilenir. Modern bulut yerel desenlerini ve API geliştirme için seçtiğiniz herhangi bir programlama dilini kullanarak API teslimini hızlandırabilirsiniz.

Spring Cloud Gateway aşağıdaki özellikleri içerir:

  • Dinamik yönlendirme yapılandırması, yeniden derleme olmadan uygulanabilen ve değiştirilebilen tek tek uygulamalardan bağımsızdır.
  • Yetkili JSON Web Belirteci (JWT) taleplerini uygulama hizmetlerine taşımak için ticari API yol filtreleri.
  • İstemci sertifikası yetkilendirmesi.
  • Hız sınırlama yaklaşımları.
  • Devre kesici yapılandırması.
  • HTTP Temel Kimlik Doğrulaması kimlik bilgileri aracılığıyla uygulama hizmetlerine erişim desteği.

VMware Tanzu için API portalıyla tümleştirmek için VMware Spring Cloud Gateway, tüm yol yapılandırma eklemeleri veya değişikliklerden sonra otomatik olarak OpenAPI sürüm 3 belgeleri oluşturur.

Önkoşullar

  • Spring Cloud Gateway'in etkinleştirildiği, önceden sağlanmış bir Azure Spring Apps Kurumsal planı hizmet örneği. Daha fazla bilgi için bkz . Hızlı Başlangıç: Kurumsal planı kullanarak uygulamaları derleme ve Azure Spring Apps'e dağıtma.
  • Azure CLI sürüm 2.0.67 veya üzeri. Azure Spring Apps uzantısını yüklemek için aşağıdaki komutu kullanın: az extension add --name spring.

Yolları yapılandırma

Bu bölümde Spring Cloud Gateway kullanan uygulamalar için API yollarını ekleme, güncelleştirme ve yönetme işlemleri açıklanmaktadır.

Yol yapılandırma tanımı aşağıdaki bölümleri içerir:

  • OpenAPI URI'si: Bu URI bir OpenAPI belirtimine başvurur. gibi https://petstore3.swagger.io/api/v3/openapi.json genel bir URI uç noktası veya gibi http://<app-name>/{relative-path-to-OpenAPI-spec}bir URI kullanabilirsiniz. Burada <app-name> , Azure Spring Apps'te API tanımını içeren bir uygulamanın adıdır. Hem OpenAPI 2.0 hem de OpenAPI 3.0 özellikleri desteklenir. Belirtim, etkinleştirilirse API portalında görüntülenir.
  • routes: Trafiği uygulamalara yönlendirmek ve filtreleri uygulamak için yol kurallarının listesi.
  • protocol: Spring Cloud Gateway'in trafiği yönlendirdiği uygulamanın arka uç protokolü. Protokolün desteklenen değerleri veya HTTPSve HTTP varsayılan değerdirHTTP. Spring Cloud Gateway'den HTTPS özellikli uygulamanıza giden trafiğin güvenliğini sağlamak için, yol yapılandırmanızda protokolü olarak HTTPS ayarlamanız gerekir.
  • uygulama düzeyi yolları: Yol yapılandırmasındaki yolların tümünde veya çoğunda yinelemeyi önlemek için uygulama düzeyinde yapılandırabileceğiniz üç yol özelliği vardır. Somut yönlendirme kuralı, aynı özellik için uygulama düzeyi yönlendirme kuralını geçersiz kılar. Aşağıdaki özellikleri uygulama düzeyinde tanımlayabilirsiniz: predicates, filters, ve ssoEnabled. Yolu tanımlamak için özelliğini kullanırsanız OpenAPI URI , desteklenebilmek için tek uygulama düzeyi yönlendirme özelliği olur filters.

Yol yapılandırması oluşturmak için aşağıdaki komutu kullanın. Değer, --app-name isteklerin yönlendirileceği Azure Spring Apps'te barındırılan bir uygulamanın adı olmalıdır.

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>

Aşağıdaki örnekte create komutunda --routes-file parametresine geçirilen bir JSON dosyası gösterilmektedir:

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

Aşağıdaki tabloda yol tanımları listelenmektedir. Tüm özellikler isteğe bağlıdır.

Özellik Açıklama
Başlık Oluşturulan OpenAPI belgelerindeki yöntemlere uygulanacak başlık.
açıklama Oluşturulan OpenAPI belgelerindeki yöntemlere uygulanacak bir açıklama.
uri İsteklerin yönlendirildiği uygulamanın adını geçersiz kılan tam URI.
ssoEnabled SSO doğrulamasının etkinleştirilip etkinleştirilmeydiğini gösteren bir değer. Bkz . Çoklu oturum açmayı yapılandırma.
tokenRelay Kimliği doğrulanmış kullanıcının kimlik belirtecini uygulamaya geçirir.
Yüklemler Koşul listesi. Bkz. Kullanılabilir Koşul.
filtreler Filtrelerin listesi. Bkz. Kullanılabilir Filtreler.
sıralama Rota işleme sırası. Spring Cloud Gateway'de olduğu gibi daha düşük bir sıra daha yüksek öncelikli olarak işlenir.
tags Oluşturulan OpenAPI belgelerindeki yöntemlere uygulanan sınıflandırma etiketleri.

Not

Güvenlik veya uyumluluk nedenlerinden dolayı tüm filtreler/önkoşullar Azure Spring Apps'te desteklenmez. Aşağıdakiler desteklenmez:

  • Basicauth
  • JWTKey

Spring Cloud Gateway için yolları kullanma

Spring Cloud Gateway kullanarak örnek bir uygulama oluşturmak için aşağıdaki adımları kullanın.

  1. Azure Spring Apps'te test-app adlı bir test uygulaması oluşturmak için aşağıdaki komutu kullanın:

    az spring app create \
        name test-app \
        resource-group <resource-group-name> \
        service <Azure-Spring-Apps-instance-name>
    
  2. Ağ geçidine erişmek için bir genel uç nokta atayın.

    Spring Cloud Gateway'e verilen çalışma durumunu ve kaynakları görüntülemek için Azure portalda Azure Spring Apps örneğinizi açın, Spring Cloud Gateway bölümünü ve ardından Genel Bakış'ı seçin.

    Genel uç nokta atamak için Uç nokta ata'nın yanındaki Evet'i seçin. Birkaç dakika içinde bir URL görüntülenir. Daha sonra kullanmak için URL'yi kaydedin.

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

    Uç noktayı atamak için Azure CLI'yı da kullanabilirsiniz. Uç noktayı atamak için aşağıdaki komutu kullanın.

    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --assign-endpoint true
    
  3. Spring Cloud Gateway aracılığıyla test uygulamasının sistem durumu denetimi uç noktasına erişmek için bir kural oluşturun.

    Aşağıdaki içeriği bir test-api.json dosyasına kaydedin. Bu yapılandırma, her 10 saniyede bir 20 isteğe izin veren bir RateLimit filtresi ve istek uç noktasının standart Spring Boot sistem durumu denetimi uç noktasına ulaşmasını sağlayan bir RewritePath filtresi içerir.

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

    Ardından, aşağıdaki komutu kullanarak kuralı uygulamaya test-appuygulayın:

    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
    

    Aşağıdaki ekran görüntüsünde gösterildiği gibi portalda yolları da görüntüleyebilirsiniz:

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

  4. Api'ye ağ geçidi uç noktası üzerinden erişmek test health check için aşağıdaki komutu kullanın:

    curl https://<endpoint-url>/test/api/healthcheck
    
  5. Yönlendirme kurallarını sorgulamak için aşağıdaki komutları kullanın:

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

Filtreleri kullanma

Açık kaynak Spring Cloud Gateway projesi, Ağ Geçidi yollarında kullanılmak üzere birçok yerleşik filtre içerir. Spring Cloud Gateway, işletim sistemi projesine dahil edilen filtrelere ek olarak birçok özel filtre sağlar.

Aşağıdaki örnekte, filtrenin AddRequestHeadersIfNotPresent bir yola nasıl uygulanacağı gösterilmektedir:

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

Ardından, aşağıdaki Azure CLI komutunu kullanarak yol tanımını uygulayın:

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>

Kullanılabilir yol filtreleri hakkında daha fazla bilgi için bkz . Azure Spring Apps Enterprise planıyla VMware Spring Cloud Gateway Yol Filtrelerini kullanma.

Sonraki adımlar