İşlem kılavuzu

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

API anahtarı nasıl alınır?

Aşağıdaki örnekte, doğrulama işlemi için kullanabileceğiniz bir API anahtarını nasıl edineceğiniz açıklanmaktadır. Apigee Adapter for Envoy üzerinden proxy aracılığıyla bir hedef hizmete API çağrıları.

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 girdikten sonra, Envoy için Apigee Adapter'ı yapılandırırken 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. Yayınla > Geliştiriciler'i tıklayın.
  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. Şu kaynakları da inceleyin API ürün yapılandırması.

  1. Yayınla > API Ürünleri'ni tıklayın.
  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, Apigee Adapter for Envoy'u sağlarken kullandığınız ortama ayarlayın.

    Erişim Private
    Kota Her 1 dakikada 5 istek

    Ayrıca bkz. Kota.

  5. Apigee uzaktan hizmet hedefleri bölümünde Apigee uzaktan hizmet hedefi ekle'yi tıklayın.
  6. Apigee uzak hizmet hedefi iletişim kutusunda aşağıdaki değerleri ekleyin:
    Özellik Değer Açıklama
    Hedef ad hedef hizmet. Örneğin: httpbin.org Envoy proxy'sinin önündeki hedef uç nokta.
    Yol Eşleştirmek için hizmette bir kaynak yolu girin. Örneğin, örnek: /headers. Hedef uç noktasında eşleştirilecek istek yolu. Bu yola API proxy çağrıları bu API ürünüyle eşleşecek.
  7. Kaydet'i tıklayın.

4. Geliştirici Uygulaması Oluşturma

  1. Yayınla > Uygulamalar'ı tıklayın.
  2. + Uygulama'yı tıklayın.
  3. Geliştirici Uygulaması sayfasını aşağıdaki gibi doldurun. Talimat verene kadar Kaydetme.
  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. Ardından, API ürününü uygulamaya ekleyin:
    1. Kimlik bilgileri bölümünde + Ürün ekle'yi tıklayın ve istediğiniz ürünü seçin. httpbin-product gibi bir yapılandırma kullanabilirsiniz.
    2. Oluştur'u tıklayın.
    3. Kimlik Bilgileri'nin altında, 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 API anahtarıdır httpbin hizmetine API çağrıları yapmak için kullanacağınız reklam öğesi listesini temsil eder.

    API ürünleri hakkında

    API Ürünleri, birincil denetim noktasıdır bir e-posta yazacaksınız. Bir API Ürünü oluşturup bunu bir bir politika oluşturuyorsunuz. Apigee Adapter for Envoy'u yapılandırdığınız isteklere uygulanır. pek çok yolu vardır.

    API Ürün tanımı

    Apigee'de bir API Ürünü tanımlarken, her şeyin istekleri değerlendirmek için kullanılır:

    • Hedef
    • Yol iste
    • Kota
    • OAuth kapsamları

    Uzak Hizmet Hedefleri

    İstek hem hedefle hem de bağlama (örneğin, httpbin.org) ve istek yolunu (örneğin, /httpbin) ekleyin. Potansiyel hedeflerin listesi, API Ürünü.

    Apigee Uzaktan Hizmeti, Envoy'un özel :authority (host) başlığını varsayılan olarak hedef listesini içerir ancak diğer başlıkları 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 (/) herhangi bir yolla eşleşir.
    • * her yerde geçerlidir ve bir segment içerisinde (eğik çizgilerin arasında) eşleşir.
    • ** sonda geçerlidir ve her şeyi satırın sonuyla eşleştirir.

    Kota

    Kota, bir uygulamanın bir Bir saat, bir gün, bir hafta veya bir ay boyunca API. 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ürede bir hizmete yapabileceği istek sayısını süre tahminidir. Kotalar genellikle geliştiriciler ve iş ortakları için ödeme yapmanızı sağlar. Örneğin, kota, ücretsiz bir hizmet için trafiği sınırlandırmak ve tam erişime izin vermek amacıyla kullanılabilir. ödeme yapan müşteriler için geçerlidir.

    Bir API ürününde kota tanımlı

    Kota parametreleri, API Ürünlerinde yapılandırılır. Örneğin, Google Analytics 4'te Ürün için isteğe bağlı olarak izin verilen kota sınırını, zaman birimini ve aralığı ayarlayabilirsiniz.

    API anahtarları API Ürünleri ile tekrar eşlendiğinden, bir API anahtarı her doğrulandığında uygun kota sayacı azaltılabilir (ilişkilendirilmiş Üründe bir Kota tanımlanmışsa).

    Apigee çalışma zamanının aksine, ürün tanımına girilen Kotalar Apigee Remote Service tarafından otomatik olarak zorunlu kılındı. İstek yetkilendirilmişse istek, izin verilen kotaya dahil edilir.

    Kotaların korunduğu yerler

    Kotalar, Uzak Hizmet süreci tarafından yerel olarak ve eşzamansız olarak yönetilip kontrol edilir. Apigee Çalışma Zamanı ile korunuyor. Bu da kotaların kesin olmadığı ve büyük olasılıkla kotayı koruyan birden fazla Uzak Hizmet'iniz varsa bir miktar aşınır. Öğe Apigee Çalışma Zamanı ile bağlantı kesildiyse yerel kota bağımsız olarak devam edecek kota kalana kadar kullanılabilir.

    OAuth Kapsamları

    JWT jetonları kullanıyorsanız jetonları izin verilen OAuth kapsamlarının alt kümeleriyle kısıtlayabilirsiniz. Yayınlanmış JWT jetonunuza atanan kapsamlar, API ürününün kapsamlarına göre kontrol edilir.

    Geliştirici uygulamaları hakkında

    API Ürünlerinizi yapılandırdıktan sonra, Geliştirici ile ilişkilendirilmiş bir Uygulama oluşturursunuz. Uygulama istemcinin bir API Anahtarı veya JWT Jetonu ile ilişkilendirilmiş API Ürünleri'ne erişmesine izin verir.

    JWT tabanlı kimlik doğrulama kullanma

    Kimliği doğrulanmış API proxy çağrıları yapmak için API anahtarı kullanmak yerine JWT jetonu kullanabilirsiniz. Bu bölümünde, komut dosyası oluşturmak için apigee-remote-service-cli token komutunun JWT jetonlarını oluşturma, inceleme ve döndürme.

    Genel Bakış

    JWT doğrulaması ve kimlik doğrulaması, Envoy tarafından JWT Kimlik Doğrulama Filtresi bölümüne bakın.

    Kimlik doğrulamasından sonra Envoy ext-authz filtresi, istek başlıklarını ve JWT'yi apigee-remote-service-envoy. JWT'nin api_product_list ve scope talepleriyle eşleşiyor Apigee API Ürünleri'ne karşı yetki vermeyi kabul etmiş olursunuz.

    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ı 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

    Jetonu aldıktan sonra Yetkilendirme başlığından 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ünün envoy tarafından erişilebilir olduğunu ve Apigee proxy'sini yüklediğinizde sertifikaları ayarlamanız gerekir. Şunları yapabilmeniz gerekir: kullanarak 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 şu şekilde görünebilir:

    • "Jwt'deki kitlelere izin verilmiyor"
    • "Jwt kuruluşu yapılandırılmamış"

    Bunlar, Envoy yapılandırmanızdaki değiştirmeniz gerekebilecek gereksinimlerdendir.

    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 oldu bölümünü inceleyin.

    Günlük Kaydı

    Günlük kaydı 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 Zorunlu Açıklama
    -l, --log-level Geçerli düzeyler: hata ayıklama, bilgi, uyar, hata. Günlük kaydı düzeyini ayarlar. Varsayılan: bilgi
    -j, --json-log Günlük çıkışını JSON kayıtları olarak yayınlar.

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

    Ağ proxy'si kullanma

    HTTP_PROXY ve HTTPS_PROXY ortam değişkenleri kullanılarak HTTP proxy eklenebilir ( Apigee-remote-service-envoy ikili programı ortamında kullanılabilir. Bunları kullanırken, NO_PROXY ortam değişkeni, belirli ana makinelerin proxy üzerinden gönderilmesini engellemek için 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 bir Prometheus metrikleri uç noktası bulabilirsiniz. Chrome Web Mağazası'ndaki bu bağlantı noktası numarasıdır. Yapılandırma dosyası bölümüne bakın.

    Envoy Analytics

    Aşağıdaki bağlantılar Envoy proxy analizlerini alma hakkında bilgi sağlar veri:

    Istio analizleri

    Aşağıdaki bağlantılar Envoy proxy analizlerini alma hakkında bilgi sağlar veri:

    Apigee analizi

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

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

    Çoklu kiracılı ortam desteği

    Artık bağdaştırıcıyı birden fazla yöntemle hizmet verecek şekilde etkinleştirebilirsiniz ortamları için de geçerlidir. Bu özellik sayesinde tek bir Apigee Birden fazla ortama hizmet vermek için tek bir Apigee kuruluşuyla ilişkilendirilmiş Envoy Adaptörü. Şu tarihten önce: Bu değişiklik sonucunda 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 içinde tenant:env_name ile * arasında dosyası olarak kaydedebilirsiniz. Ö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, Envoy'u uygun bir ortam değerini bağdaştırıcıya aşağıdaki meta verileri envoy-config.yaml dosyasının virtual_hosts:routes bölümü. Ö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 adlı) açın.
    3. Aşağıdaki meta verileri virtual_host veya Dosyanın routes bölümü:
      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 çok rotaya sahip bir virtual_host için yapılandırma gösterilmektedir her rota, belirli bir ortama trafik gönderdiğinden emin olun:

      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ı ve Apigee çalışma zamanı arasında mTLS'yi yapılandırma

    İstemci tarafı TLS sertifikalarınıtenant bağdaştırıcının config.yaml dosyasını kullanarak bağdaştırıcı ile Apigee çalışma zamanı arasında mTLS'yi kullanın. Bu Değişiklik, desteklenen tüm Apigee platformları için geçerlidir. Ayrıca analizler için mTLS'yi de etkinleştirir. özel bulut platformu için Apigee Edge'e yönelik bir dizi proje kullanıma sunuldu. Örneğin:

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