İşlem kılavuzu

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

API anahtarı edinme

Aşağıdaki örnekte, Apigee Adapter for Envoy üzerinden proxy'si oluşturulan bir hedef hizmete yönelik API çağrılarını doğrulamak için kullanabileceğiniz bir API anahtarının nasıl alınacağı açıklanmaktadır.

1. Apigee'ye giriş yapma

  1. Apigee kullanıcı arayüzünü bir tarayıcıda açın.
  2. Kullanıcı arayüzüne girdikten sonra, Apigee Adapter for Envoy'u yapılandırmak için kullandığınız kuruluşu seçin.

2. Geliştirici Oluşturma

Test için mevcut bir geliştiriciyi kullanabilir veya aşağıdaki şekilde yeni bir geliştirici oluşturabilirsiniz:

  1. Yan gezinme menüsünde Yayınla > Geliştiriciler'i seçin.
  2. + Geliştirici'yi tıklayın.
  3. Yeni bir geliştirici oluşturmak için iletişim kutusunu doldurun. İstediğiniz geliştirici adını/e-posta adresini kullanabilirsiniz.

3. API Ürünü Oluşturma

Aşağıda verilen ürün oluşturma örneğini uygulayın. Ayrıca API ürün yapılandırması hakkında başlıklı makaleyi de inceleyin.

  1. Yan gezinme menüsünde Yayınla > API Ürünleri'ni seçin.
  2. + API Ürünü'nü tıklayın.
  3. Ürün ayrıntıları sayfasını aşağıdaki şekilde doldurun.
  4. Alan Değer
    Ad httpbin-product
    Görünen ad httpbin product
    Ortam your_environment

    Bu değeri, Apigee Adapter for Envoy'u sağlarken kullandığınız ortama ayarlayın.

    Erişim Private
    Kota 1 dakika içinde 5 istek

    Ayrıca Quota başlıklı makaleyi de inceleyin.

  5. Apigee uzak hizmet hedefleri bölümünde Apigee uzak hizmet hedefi ekle'yi tıklayın.
  6. Apigee uzak hizmet hedefi iletişim kutusuna aşağıdaki değerleri ekleyin:
    Özellik Değer Açıklama
    Hedef adı Hedef hizmetin adını girin. Örneğin: httpbin.org Envoy proxy'si tarafından kullanılan hedef uç nokta.
    Yol Hizmette eşleştirilecek bir kaynak yolu girin. Örneğin: /headers. Hedef uç noktada eşleştirilecek istek yolu. Bu yola yapılan API proxy çağrıları bu API ürünüyle eşleşir.
  7. Kaydet'i tıklayın.

4. Geliştirici Uygulaması Oluşturma

  1. Yan gezinme menüsünde Yayınla > Uygulamalar'ı seçin.
  2. + Uygulama'yı tıklayın.
  3. Geliştirici uygulaması sayfasını aşağıdaki gibi doldurun. Kaydetme işlemi için talimat verilene kadar kaydetmeyin.
  4. Ad httpbin-app
    Görünen ad httpbin app
    Developer Daha önce oluşturduğunuz geliştiriciyi seçin veya listeden istediğiniz bir geliştiriciyi belirleyin.
  5. Ardından, API ürününü uygulamaya ekleyin:
    1. Kimlik bilgileri bölümünde + Ürün ekle'yi tıklayın ve az önce yapılandırdığınız ürünü (httpbin-product) seçin.
    2. Oluştur'u tıklayın.
    3. Kimlik bilgileri bölümünde, Anahtar'ın yanındaki Göster'i tıklayın.
    4. Tüketici anahtarının değerini kopyalayın. Bu değer, httpbin hizmetine API çağrıları yapmak için kullanacağınız API anahtarıdır.

    API ürünleri hakkında

    API ürünleri, Apigee Remote Service'in birincil kontrol noktasıdır. Bir API ürünü oluşturup hedef hizmete bağladığınızda, Apigee Adapter for Envoy'i işleyecek şekilde yapılandırdığınız tüm isteklere uygulanacak bir politika oluşturursunuz.

    API ürünü tanımı

    Apigee'de bir API ürünü tanımladığınızda, istekleri değerlendirmek için kullanılacak bir dizi parametre ayarlayabilirsiniz:

    • Hedef
    • Yol iste
    • Kota
    • OAuth kapsamları

    Uzak Hizmet Hedefleri

    İstek hem hedef bağlamayla (örneğin, httpbin.org) hem de istek yoluyla (örneğin, /httpbin) eşleşiyorsa API ürünü tanımı istek için geçerli olur. Olası hedeflerin listesi, API ürününde özellik olarak saklanır.

    Apigee Remote Service, varsayılan olarak Envoy'un özel :authority (host) üstbilgisini hedef listesine göre kontrol eder ancak diğer üstbilgileri kullanacak şekilde yapılandırılabilir.

    API Kaynak Yolu

    Girilen yol, aşağıdaki kurallara göre eşleşir:

    • Tek bir eğik çizgi (/) kendi başına tüm yollarla eşleşir.
    • *, her yerde geçerlidir ve bir segment içinde (eğik çizgiler arasında) eşleşir.
    • **, satırın sonunda geçerlidir ve satırın sonuna kadar her şeyle eşleşir.

    Kota

    Kota, bir uygulamanın bir saat, gün, hafta veya ay içinde bir API'ye göndermesine izin verilen istek mesajlarının sayısını belirtir. Bir uygulama kota sınırına ulaştığında sonraki API çağrıları reddedilir.

    Kota kullanım alanları

    Kotalar, bir istemcinin belirli bir süre içinde bir hizmete yapabileceği istek sayısını zorunlu kılmanıza olanak tanır. Kotalar genellikle operasyonel trafik yönetimi için değil, geliştiriciler ve iş ortaklarıyla yapılan ticari sözleşmeleri veya hizmet düzeyi sözleşmelerini uygulamak için kullanılır. Örneğin, ücretsiz bir hizmetin trafiğini sınırlamak için kota kullanılabilirken ücretli müşterilere tam erişim izni verilebilir.

    Kota, bir API ürününde tanımlanır

    Kota parametreleri API ürünlerinde yapılandırılır. Örneğin, bir API ürünü oluşturduğunuzda izin verilen kota sınırını, zaman birimini ve aralığını isteğe bağlı olarak ayarlayabilirsiniz.

    API anahtarları API ürünleriyle eşlendiğinden, bir API anahtarı her doğrulandığında uygun kota sayacı azaltılabilir (ilişkili üründe bir kota tanımlanmışsa).

    Apigee çalışma zamanının aksine, ürün tanımına girilen kotalar Apigee Uzak Hizmeti tarafından otomatik olarak uygulanır. İstek yetkilendirilirse izin verilen kotaya göre sayılır.

    Kotaların tutulduğu yerler

    Kotalar, Uzak Hizmet işlemi tarafından yerel olarak korunur ve kontrol edilir. Ayrıca, Apigee Runtime ile eşzamansız olarak korunur. Bu nedenle, kotayı koruyan birden fazla Uzak Hizmetiniz varsa kotalar kesin değildir ve bir miktar aşma olabilir. Apigee Runtime ile bağlantı kesilirse yerel kota, Apigee Runtime'a yeniden bağlanana kadar bağımsız bir kota olarak devam eder.

    OAuth Kapsamları

    JWT jetonları kullanıyorsanız jetonları izin verilen OAuth kapsamlarının alt kümeleriyle kısıtlayabilirsiniz. Verilen JWT jetonunuza atanan kapsamlar, API ürününün kapsamlarıyla karşılaştırılır.

    Geliştirici uygulamaları hakkında

    API ürünlerinizi yapılandırdıktan sonra bir geliştiriciyle ilişkili bir uygulama oluşturursunuz. Uygulama, bir istemcinin API anahtarı veya JWT jetonu ile ilişkili API ürünlerine erişmesine izin veriyor.

    JWT tabanlı kimlik doğrulama kullanma

    Kimliği doğrulanmış API proxy'si çağrıları yapmak için API anahtarı yerine JWT jetonu kullanabilirsiniz. Bu bölümde, JWT jetonları oluşturmak, incelemek ve döndürmek için apigee-remote-service-cli token komutunun nasıl kullanılacağı açıklanmaktadır.

    Genel Bakış

    JWT doğrulama ve kimlik doğrulama, Envoy'un JWT Authentication Filter'ı kullanılarak gerçekleştirilir.

    Doğrulama yapıldıktan sonra Envoy ext-authz filtresi, istek başlıklarını ve JWT'yi apigee-remote-service-envoy'ye gönderir. İsteğin hedefiyle yetkilendirmek için JWT'nin api_product_list ve scope taleplerini Apigee API ürünleriyle eşleştirir.

    Apigee JWT jetonları oluşturma

    Apigee JWT jetonları CLI kullanılarak oluşturulabilir:

    $CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

    Veya standart OAuth jeton uç noktasını kullanarak. Curl örneği:

    curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"

    JWT jetonunu kullanma

    Jetona sahip olduğunuzda, yetkilendirme başlığında Envoy'a iletmeniz yeterlidir. Örnek:

    curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

    JWT jeton hatası

    Envoy reddi

    Envoy, jetonu reddederse şuna benzer bir mesaj görebilirsiniz:

    Jwks remote fetch is failed

    Bu durumda, Envoy yapılandırmanızın remote_jwks bölümünde geçerli bir URI içerdiğinden, Envoy'un bu URI'ye ulaşabildiğinden ve Apigee proxy'sini yüklerken sertifikaları doğru şekilde ayarladığınızdan emin olun. URI'yi doğrudan bir GET çağrısıyla çağırabilmeli ve geçerli bir JSON yanıtı alabilmelisiniz.

    Örnek:

    curl https://myorg-eval-test.apigee.net/remote-service/certs

    Envoy'dan gelen diğer mesajlar şu şekilde görünebilir:

    • "Jwt'deki kitlelere izin verilmiyor"
    • "Jwt issuer is not configured" (JWT veren yapılandırılmamış)

    Bunlar, Envoy yapılandırmanızdaki değiştirmeniz gerekebilecek şartlardan kaynaklanır.

    Jetonu inceleme

    Jetonunuzu incelemek için CLI'yı kullanabilirsiniz. Örnek

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file

    veya

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN

    Hata ayıklama

    Geçerli API anahtarı başarısız oluyor bölümüne bakın.

    Günlük Kaydı

    $REMOTE_SERVICE_HOME/apigee-remote-service-envoy hizmetinde günlük kaydı düzeyini ayarlayabilirsiniz. Tüm günlükler stdout ve stderr'ye gönderilir.

    Öğe Zorunlu Açıklama
    -l, --log-level Geçerli düzeyler: debug, info, warn, error. Günlük kaydı düzeyini ayarlar. Varsayılan: info
    -j, --json-log Günlük çıkışını JSON kayıtları olarak verir.

    Envoy, günlük kaydı sağlar. Daha fazla bilgi için aşağıdaki Envoy doküman bağlantılarına bakın:

    Ağ proxy'si kullanma

    HTTP proxy, apigee-remote-service-envoy ikilisinin ortamında HTTP_PROXY ve HTTPS_PROXY ortam değişkenleri kullanılarak eklenebilir. Bunları kullanırken belirli ana makinelerin proxy üzerinden gönderilmesini hariç tutmak için NO_PROXY ortam değişkeni de kullanılabilir.

    HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
    HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
    NO_PROXY=127.0.0.1,localhost

    Proxy'ye apigee-remote-service-envoy üzerinden erişilebilmesi gerektiğini unutmayın.

    Metrikler ve analizler hakkında

    Prometheus metrikleri uç noktası :5001/metrics adresinde kullanılabilir. Bu bağlantı noktası numarasını yapılandırabilirsiniz. Yapılandırma dosyası bölümüne bakın.

    Envoy analizleri

    Aşağıdaki bağlantılarda Envoy proxy analiz verilerini edinme hakkında bilgi verilmektedir:

    Istio analizleri

    Aşağıdaki bağlantılarda Envoy proxy analiz verilerini edinme hakkında bilgi verilmektedir:

    Apigee analizi

    Apigee Remote Service for Envoy, analiz işleme için istek istatistiklerini Apigee'ye gönderir. Apigee, bu istekleri ilişkili API ürünü adı altında bildirir.

    Apigee Analytics hakkında bilgi edinmek için Analytics hizmetlerine genel bakış başlıklı makaleyi inceleyin.

    Çok kiracılı ortam desteği

    Artık bağdaştırıcıyı bir Apigee kuruluşundaki birden fazla ortamda hizmet verecek şekilde etkinleştirebilirsiniz. Bu özellik, birden fazla ortama hizmet vermek için bir Apigee kuruluşuyla ilişkili bir Apigee Adapter for Envoy kullanmanıza olanak tanır. Bu değişiklikten önce bir bağdaştırıcı her zaman bir Apigee ortamına bağlıydı.

    Birden fazla ortam desteğini yapılandırmak için config.yaml dosyasında tenant:env_name değerini * olarak değiştirin. Örneğin:

    1. config.yaml dosyasını bir düzenleyicide açın.
    2. tenant.env_name değerini * olarak değiştirin. Örneğin:
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: apigee-remote-service-envoy
        namespace: apigee
      data:
        config.yaml: |
          tenant:
            remote_service_api: https://myorg-myenv.apigee.net/remote-service
            org_name: apigee-docs-hybrid-a
            env_name: *
            allow_unverified_ssl_cert: true
          analytics:
            collection_interval: 10s
          auth:
            jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token
    3. Dosyayı kaydedin.
    4. Dosyayı uygulayın:
      kubectl apply -f $CLI_HOME/config.yaml

    Çoklu ortam modunu yapılandırırken envoy-config.yaml dosyasının virtual_hosts:routes bölümüne aşağıdaki meta verileri ekleyerek Envoy'u bağdaştırıcıya uygun bir ortam değeri gönderecek şekilde de yapılandırmanız gerekir. Örneğin:

    1. KSA'yı kullanarak envoy-config.yaml dosyasını oluşturun. Örneğin:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Oluşturulan dosyayı (envoy-config.yaml olarak adlandırılır) açın.
    3. Dosyanın virtual_host veya routes bölümüne aşağıdaki meta verileri ekleyin:
      typed_per_filter_config:
        envoy.filters.http.ext_authz:
          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
          check_settings:
            context_extensions:
              apigee_environment: test

      Aşağıdaki örnekte, her rotanın trafiği belirli bir ortama gönderdiği, birden fazla rotanın tanımlandığı bir virtual_host yapılandırması gösterilmektedir:

      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  virtual_hosts:
                  - name: default
                    domains: "*"
                    routes:
                    - match: { prefix: /test }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: test
                    - match: { prefix: /prod }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: prod
    4. Gerekirse başka ortamlar eklemek için son adımı tekrarlayın.
    5. Dosyayı kaydedin ve uygulayın.

    Adaptör ile Apigee çalışma zamanı arasında mTLS yapılandırma

    Bağdaştırıcı ile Apigee çalışma zamanı arasında mTLS kullanmak için bağdaştırıcının config.yaml dosyasının tenant bölümünde istemci tarafı TLS sertifikaları sağlayabilirsiniz. Bu değişiklik, desteklenen tüm Apigee platformları için geçerlidir. Ayrıca, Apigee Edge Private Cloud platformu için analizlerde mTLS'yi etkinleştirir. Örneğin:

    tenant:
      tls:
        ca_file: path/ca.pem
        cert_file: path/cert.pem
        key_file: path/key.pem
        allow_unverified_ssl_cert: false