İşlem kılavuzu

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

API anahtarı alma

Aşağıdaki örnekte, Apigee Adapter for Envoy aracılığıyla proxy kullanan bir hedef hizmete yapılan API çağrılarını doğrulamak için kullanabileceğiniz bir API anahtarının nasıl edinileceği açıklanmaktadır.

1. Apigee'ye giriş yapın

  1. Bir tarayıcıda Apigee kullanıcı arayüzünü açın.
  2. Kullanıcı arayüzüne geldiğinizde, 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 herhangi bir 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. API ürün yapılandırması hakkında bölümüne de göz atın.

  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 gibi doldurun.
  4. Alan Değer
    Ad httpbin-product
    Görünen Ad httpbin product
    Ortam your_environment

    Bunu, Envoy için Apigee Adapter'ı sağlarken kullandığınız ortama ayarlayın.

    Erişim Private
    Kota Her 1 dakikada 5 istek

    Ayrıca bkz. Kota.

  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
    Target name (Hedef adı) Hedef hizmetin adını girin. Örneğin: httpbin.org Envoy proxy'nin önündeki hedef uç nokta.
    Yol Hizmette eşleşecek bir kaynak yolu girin. Örneğin: /headers. Hedef uç noktasında eşleşecek 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. Yapmanız istenene kadar Kaydetmeyin.
  4. Ad httpbin-app
    Görünen Ad httpbin app
    Developer Daha önce oluşturduğunuz geliştiriciyi veya listeden istediğiniz geliştiriciyi seçin.
  5. Sonra API ürününü uygulamaya ekleyin:
    1. Kimlik bilgileri bölümünde, + Ürün ekle'yi tıklayın ve yeni yapılandırdığınız ürünü seçin: httpbin-product.
    2. Oluştur'u tıklayın.
    3. Kimlik bilgileri bölümünde, Anahtar'ın yanındaki Göster seçeneğini 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 denetim noktasıdır. API Ürünü oluşturup bunu bir hedef hizmete bağladığınızda, Apigee Adapter for Envoy'u işlemesi için yapılandırdığınız tüm isteklere uygulanacak bir politika oluşturmuş olursunuz.

    API Ürün tanımı

    Apigee'de API Ürünü tanımlarken, istekleri değerlendirmek için kullanılacak çeşitli parametreleri belirleyebilirsiniz:

    • Hedef
    • Yol iste
    • Kota
    • OAuth kapsamları

    Uzak Hizmet Hedefleri

    Bir istek 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. Potansiyel hedeflerin listesi, API Ürününde özellik olarak depolanır.

    Apigee Remote Service, Envoy'un özel :authority (host) üst bilgisini hedef listesiyle karşılaştırarak varsayılan olarak kontrol eder ancak başka üst bilgileri kullanacak şekilde yapılandırılabilir.

    API Kaynak Yolu

    Girilen Yol, aşağıdaki kurallara göre eşleşiyor:

    • Tek bir eğik çizgi (/) tek başına herhangi bir yolla eşleşir.
    • * her yerde geçerlidir ve bir segment içinde (eğik çizgi arasında) eşleşir.
    • ** sonda geçerlidir ve satırın sonundaki her şeyle eşleşir.

    Kota

    Kota, bir uygulamanın saat, gün, hafta veya ay boyunca bir API'ye göndermesine izin verilen istek mesajı 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 gönderebileceği istek sayısını zorunlu kılmanıza olanak tanır. Kotalar genellikle operasyonel trafik yönetimi yerine geliştiriciler ve iş ortaklarıyla iş sözleşmeleri veya HDS'ler uygulamak için kullanılır. Örneğin kota, ödeme yapan müşterilere tam erişime izin verirken ücretsiz bir hizmet için trafiği sınırlamak amacıyla kullanılabilir.

    Kota bir API ürününde tanımlıdır

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

    API anahtarları API Ürünleri ile eşleştirilir. Bu nedenle, bir API anahtarı her doğrulandığında ilgili kota sayacı azaltılabilir (ilişkili Ürün'de bir Kota tanımlanmışsa).

    Apigee çalışma zamanından farklı olarak, Ürün tanımına girilen Kotalar Apigee Remote Service tarafından otomatik olarak uygulanır. Yetkilendirilmişse istek, izin verilen kotaya dahil edilir.

    Kotaların korunduğu yerler

    Kotalar, Remote Hizmet işlemiyle yerel olarak ve Apigee Çalışma Zamanı ile eşzamansız olarak korunur ve kontrol edilir. Yani kotalar kesin değildir ve kotayı koruyan birden fazla Remote Service'iniz varsa kotaların biraz aşılması mümkündür. Apigee Çalışma Zamanı ile bağlantı kesilirse yerel kota, Apigee Çalışma Zamanı'na yeniden bağlanabilene kadar bağımsız kota olarak devam eder.

    OAuth Kapsamları

    JWT jetonları kullanıyorsanız jetonları izin verilen OAuth kapsamlarının alt kümeleriyle kısıtlayabilirsiniz. Yayınladığınız JWT jetonuna atanan kapsamlar, API ürününün kapsamlarına göre kontrol edilecektir.

    Geliştirici uygulamaları hakkında

    API Ürünlerinizi yapılandırdıktan sonra, bir Geliştirici ile ilişkilendirilmiş bir Uygulama oluşturacaksınız. Uygulama, istemcinin API Anahtarı veya JWT Jetonu ile ilişkili API Ürünlerine erişmesine olanak tanır.

    JWT tabanlı kimlik doğrulamayı kullanma

    Kimliği doğrulanmış API proxy çağrıları yapmak için API anahtarı kullanmak 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ğrulaması ve kimlik doğrulaması, Envoy tarafından JWT Kimlik Doğrulama Filtresi kullanılarak gerçekleştirilir.

    Kimlik doğrulaması yapıldıktan sonra Envoy ext-authz filtresi, istek üst bilgilerini ve JWT'yi apigee-remote-service-envoy adresine gönderir. JWT'nin Apigee API Ürünleri'ne yönelik api_product_list ve scope hak talepleriyle eşleşir.

    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

    Alternatif olarak standart OAuth jetonu uç noktasını da kullanabilirsiniz. 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

    Aldığınız jetonu Yetkilendirme başlığında Envoy'a iletmeniz yeterlidir. Örnek:

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

    JWT jetonu hatası

    Envoy reddi

    Envoy jetonu reddederse aşağıdaki gibi bir mesaj görebilirsiniz:

    Jwks remote fetch is failed

    Öyleyse Envoy yapılandırmanızın remote_jwks bölümünde geçerli bir URI içerdiğinden, Envoy'un URL'ye eriştiğinden ve Apigee proxy'sini yüklerken sertifikaları düzgün bir şekilde ayarladığınızdan emin olun. URI'yı doğrudan bir GET çağrısıyla çağırabilir ve geçerli bir JSON yanıtı alabilirsiniz.

    Örnek:

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

    Envoy'dan gelen diğer mesajlar aşağıdaki gibi görünebilir:

    • "Jwt'deki kitlelere izin verilmez"
    • "Jwt veren kuruluş yapılandırılmamış"

    Bunlar, Envoy yapılandırmanızda değiştirmeniz gerekebilecek gereksinimlerdir.

    Jetonu inceleme

    Jetonunuzu incelemek için CLI'ı 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 olur bölümüne bakın.

    Günlük Kaydı

    Günlük düzeyini $REMOTE_SERVICE_HOME/Apigee-remote-service-envoy hizmetinde ayarlayabilirsiniz. Tüm günlük kayıtları stdout ve stderr'e gönderilir.

    Öğe Gerekli Açıklama
    -l, --log-level Geçerli seviyeler: hata ayıklama, bilgi, uyarı, hata. Günlük kaydı düzeyini ayarlar. Varsayılan: bilgi
    -j, --json-log JSON kaydı olarak günlük çıkışını kullanır.

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

    Ağ proxy'si kullanma

    Apigee-remote-service-envoy ikili ortamındaki HTTP_PROXY ve HTTPS_PROXY ortam değişkenleri kullanılarak HTTP proxy eklenebilir. Bunları kullanırken, belirli ana makinelerin proxy üzerinden gönderilmesini engellemek 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'nin Apigee-remote-service-envoy adresinden erişilebilir olması gerektiğini unutmayın.

    Metrikler ve analizler hakkında

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

    Envoy analizi

    Aşağıdaki bağlantılar Envoy proxy analiz verilerinin alınması hakkında bilgi sağlar:

    ISRC analizleri

    Aşağıdaki bağlantılar Envoy proxy analiz verilerinin alınması hakkında bilgi sağlar:

    Apigee analizi

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

    Apigee Analytics hakkında bilgi edinmek için Analytics hizmetlerine genel bakış sayfasını inceleyin.

    Çok kiracılı ortam desteği

    Artık bağdaştırıcıyı Apigee kuruluşunda birden fazla ortama hizmet verecek şekilde etkinleştirebilirsiniz. Bu özellik sayesinde, birden fazla ortamda hizmet vermek için tek bir Apigee kuruluşuyla ilişkili Envoy Apigee Adaptörü kullanabilirsiniz. Bu değişiklikten önce tek bir bağdaştırıcı daima tek bir Apigee ortamına bağlıydı.

    Çoklu ortam desteği 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ırdığınızda, aşağıdaki meta verileri envoy-config.yaml dosyasının virtual_hosts:routes bölümüne ekleyerek Envoy'u bağdaştırıcıya uygun bir ortam değeri gönderecek şekilde yapılandırmanız gerekir. Örneğin:

    1. CLI 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ı açın (dosyanın adı envoy-config.yaml).
    3. Aşağıdaki meta verileri dosyanın virtual_host veya routes bölümüne 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, birden fazla rota tanımlanmış ve her rotanın trafiği belirli bir ortama gönderdiği bir virtual_host için yapılandırma 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. Gerektiğinde başka ortamlar eklemek için son adımı tekrarlayın.
    5. Dosyayı kaydedin ve uygulayın.

    Bağdaştırıcı ile Apigee çalışma zamanı arasında mTLS'yi yapılandırma

    Bağdaştırıcı ile Apigee çalışma zamanı arasında mTLS'yi kullanmak için bağdaştırıcının config.yaml dosyasının tenant bölümünde istemci tarafı TLS sertifikalarını sağlayabilirsiniz. Bu değişiklik, desteklenen tüm Apigee platformları için geçerlidir. Ayrıca Apigee Edge for Private Cloud platformunda analizler için 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