Panduan operasi

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Cara mendapatkan kunci API

Contoh berikut menjelaskan cara mendapatkan kunci API yang dapat Anda gunakan untuk memvalidasi panggilan API ke layanan target yang di-proxy-kan melalui Apigee Adapter untuk Envoy.

1. Login ke Apigee

  1. Buka UI Apigee di browser.
  2. Setelah berada di UI, pilih organisasi yang sama dengan yang Anda gunakan untuk mengonfigurasi Apigee Adapter untuk Envoy.

2. Membuat Developer

Anda dapat menggunakan developer yang sudah ada untuk pengujian, atau membuat developer baru sebagai berikut:

  1. Pilih Publikasikan > Developer di menu navigasi samping.
  2. Klik + Developer.
  3. Isi dialog untuk membuat developer baru. Anda dapat menggunakan nama/email developer apa pun yang Anda inginkan.

3. Membuat Produk API

Ikuti contoh pembuatan Produk yang disediakan di bawah ini. Lihat juga Tentang konfigurasi produk API.

  1. Pilih Publish > API Products di menu navigasi samping.
  2. Klik + Produk API.
  3. Isi halaman Detail produk sebagai berikut.
  4. Kolom Nilai
    Name httpbin-product
    Nama Tampilan httpbin product
    Lingkungan your_environment

    Setel ini ke lingkungan yang Anda gunakan saat menyediakan Apigee Adapter untuk Envoy.

    Akses Private
    Kuota 5 permintaan setiap 1 menit

    Lihat juga Kuota.

  5. Di bagian Target layanan jarak jauh Apigee, klik Tambahkan target layanan jarak jauh Apigee.
  6. Pada dialog target layanan jarak jauh Apigee, tambahkan nilai berikut:
    Atribut Nilai Deskripsi
    Nama target Masukkan nama layanan target. Contoh: httpbin.org Endpoint target di awal oleh proxy Envoy.
    Jalur Masukkan jalur resource pada layanan yang akan dicocokkan. Sebagai contoh: /headers. Jalur permintaan yang akan dicocokkan di endpoint target. Panggilan proxy API ke jalur ini akan cocok dengan produk API ini.
  7. Klik Simpan.

4. Membuat Aplikasi Developer

  1. Pilih Publikasikan > Aplikasi di menu navigasi samping.
  2. Klik + Aplikasi.
  3. Isi halaman Aplikasi Developer sebagai berikut. Jangan Simpan hingga diperintahkan untuk melakukannya.
  4. Name httpbin-app
    Nama Tampilan httpbin app
    Developer Pilih developer yang Anda buat sebelumnya, atau pilih developer mana pun yang Anda inginkan dari daftar.
  5. Selanjutnya, tambahkan produk API ke aplikasi:
    1. Di bagian Credentials, klik + Add product, lalu pilih produk yang baru saja Anda konfigurasikan: httpbin-product.
    2. Klik Create.
    3. Di bagian Credentials, klik Show di samping Key.
    4. Salin nilai Kunci Konsumen. Nilai ini adalah kunci API yang akan Anda gunakan untuk membuat panggilan API ke layanan httpbin.

    Tentang produk API

    Produk API adalah titik kontrol utama untuk Apigee Remote Service. Ketika Anda membuat Produk API dan mengikatnya ke layanan target, Anda membuat kebijakan yang akan diterapkan ke setiap permintaan yang dikonfigurasi Apigee Adaptor untuk ditangani Envoy.

    Definisi Produk API

    Saat menentukan Produk API di Apigee, Anda dapat menetapkan sejumlah parameter yang akan digunakan untuk mengevaluasi permintaan:

    • Target
    • Request path
    • Kuota
    • Cakupan OAuth

    Target Layanan Jarak Jauh

    Definisi Produk API akan berlaku untuk permintaan jika permintaan tersebut cocok dengan binding target (misalnya, httpbin.org) dan jalur permintaan (misalnya /httpbin). Daftar target potensial disimpan sebagai atribut pada Produk API.

    Secara default, Apigee Remote Service memeriksa header :authority (host) khusus Envoy terhadap daftar targetnya; tetapi dapat dikonfigurasi untuk menggunakan header lain.

    Jalur Resource API

    Jalur yang dimasukkan cocok sesuai dengan aturan berikut:

    • Satu garis miring (/) sendiri cocok dengan jalur apa pun.
    • * valid di mana saja dan cocok dalam segmen (di antara garis miring).
    • ** valid di akhir dan mencocokkan apa pun dengan akhir baris.

    Kuota

    Kuota menentukan jumlah pesan permintaan yang diizinkan untuk dikirim oleh aplikasi ke API selama satu jam, hari, minggu, atau bulan. Jika aplikasi mencapai batas kuota, panggilan API berikutnya akan ditolak.

    Kasus penggunaan kuota

    Kuota memungkinkan Anda menerapkan jumlah permintaan yang dapat diajukan klien ke layanan dalam jangka waktu tertentu. Kuota sering kali digunakan untuk menerapkan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Misalnya, kuota dapat digunakan untuk membatasi traffic untuk layanan gratis, sekaligus memungkinkan akses penuh untuk pelanggan yang membayar.

    Kuota ditentukan dalam Produk API

    Parameter kuota dikonfigurasi di Produk API. Misalnya, saat membuat Produk API, Anda dapat secara opsional menetapkan batas kuota, satuan waktu, dan interval yang diizinkan.

    Karena kunci API dipetakan kembali ke Produk API, penghitung kuota yang sesuai dapat dikurangi setiap kali kunci API diverifikasi.

    Tidak seperti dalam runtime Apigee, Kuota yang dimasukkan dalam Definisi produk otomatis diberlakukan oleh Apigee Remote Service. Jika permintaan diotorisasi, permintaan tersebut akan dihitung dari kuota yang diizinkan.

    Tempat mempertahankan kuota

    Kuota dikelola dan diperiksa secara lokal oleh proses Remote Service dan dikelola secara asinkron dengan Runtime Apigee. Artinya, kuotanya tidak tepat dan mungkin akan bertambah jika Anda memiliki lebih dari satu Remote Service yang mempertahankan kuota. Jika koneksi ke Runtime Apigee terganggu, kuota lokal akan terus menjadi kuota mandiri hingga dapat terhubung kembali ke Runtime Apigee.

    Cakupan OAuth

    Jika menggunakan token JWT, Anda dapat membatasi token ke subset cakupan OAuth yang diizinkan. Cakupan yang ditetapkan ke token JWT yang Anda terbitkan akan dicocokkan dengan cakupan Produk API.

    Tentang Aplikasi developer

    Setelah mengonfigurasi Produk API, Anda akan membuat Aplikasi yang terkait dengan Developer. Aplikasi ini memungkinkan klien mengakses Produk API yang terkait menggunakan Kunci API atau Token JWT.

    Menggunakan autentikasi berbasis JWT

    Anda dapat menggunakan token JWT untuk melakukan panggilan proxy API yang diautentikasi, bukan menggunakan kunci API. Bagian ini menjelaskan cara menggunakan perintah apigee-remote-service-cli token untuk membuat, memeriksa, dan merotasi token JWT.

    Ringkasan

    Verifikasi dan autentikasi JWT ditangani oleh Envoy menggunakan Filter Autentikasi JWT miliknya.

    Setelah diautentikasi, filter ext-authz Envoy akan mengirim header permintaan dan JWT ke apigee-remote-service-envoy. API ini mencocokkan klaim api_product_list dan scope JWT terhadap Produk Apigee API untuk mengotorisasinya terhadap target permintaan.

    Membuat token JWT Apigee

    Token JWT Apigee dapat dibuat menggunakan CLI:

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

    Atau dengan menggunakan endpoint token OAuth standar. Contoh curl:

    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"

    Menggunakan token JWT

    Setelah memiliki token, Anda cukup meneruskannya ke Envoy di header Authorization. Contoh:

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

    Kegagalan token JWT

    Penolakan envoy

    Jika Envoy menolak token, Anda mungkin melihat pesan seperti:

    Jwks remote fetch is failed

    Jika ya, pastikan konfigurasi Envoy Anda berisi URI yang valid di bagian remote_jwks, yang dapat dijangkau oleh Envoy, dan bahwa Anda telah menetapkan sertifikat dengan benar saat menginstal proxy Apigee. Anda akan dapat memanggil URI secara langsung dengan panggilan GET dan menerima respons JSON yang valid.

    Contoh:

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

    Pesan lain dari Envoy mungkin terlihat seperti ini:

    • "Audiens di Jwt tidak diizinkan"
    • "Penerbit Jwt tidak dikonfigurasi"

    Berikut adalah persyaratan dalam konfigurasi Envoy yang mungkin perlu Anda ubah.

    Memeriksa token

    Anda dapat menggunakan CLI untuk memeriksa token Anda. Contoh

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

    atau

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

    Proses debug

    Lihat bagian Kunci API yang valid gagal.

    Logging

    Anda dapat menyesuaikan level logging pada layanan $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Semua logging dikirim ke stdout dan stderr.

    Elemen Wajib Deskripsi
    -l, --level-log Level yang valid: debug, info, peringatkan, error. Menyesuaikan level logging. Default: info
    -j, --json-log Memberikan output log sebagai data JSON.

    Envoy menyediakan logging. Untuk informasi selengkapnya, lihat link dokumentasi Envoy berikut:

    Menggunakan proxy jaringan

    Proxy HTTP dapat dimasukkan menggunakan variabel lingkungan HTTP_PROXY dan HTTPS_PROXY di lingkungan biner apigee-remote-service-envoy. Saat menggunakannya, variabel lingkungan NO_PROXY juga dapat digunakan untuk mengecualikan host tertentu agar tidak dikirim melalui proxy.

    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

    Ingat bahwa proxy harus dapat dijangkau dari apigee-remote-service-envoy.

    Tentang metrik dan analisis

    Endpoint metrik Prometheus tersedia di :5001/metrics. Anda dapat mengkonfigurasi nomor porta ini. Lihat File konfigurasi.

    Analisis envoy

    Link berikut memberikan informasi tentang cara memperoleh data analisis proxy Envoy:

    Analisis Istio

    Link berikut memberikan informasi tentang cara memperoleh data analisis proxy Envoy:

    Analisis Apigee

    Apigee Remote Service untuk Envoy mengirimkan statistik permintaan ke Apigee untuk pemrosesan analisis. Apigee melaporkan permintaan ini berdasarkan nama Produk API terkait.

    Untuk mengetahui informasi tentang analisis Apigee, lihat Ringkasan layanan Analytics.

    Dukungan lingkungan multi-tenant

    Kini Anda dapat mengaktifkan adaptor untuk melayani beberapa lingkungan dalam organisasi Apigee. Fitur ini memungkinkan Anda menggunakan satu Adaptor Apigee untuk Envoy yang terkait dengan satu organisasi Apigee untuk melayani beberapa lingkungan. Sebelum perubahan ini, satu adaptor selalu terikat ke satu lingkungan Apigee.

    Untuk mengonfigurasi dukungan multi-lingkungan, ubah nilai tenant:env_name menjadi * dalam file config.yaml. Contoh:

    1. Buka file config.yaml di editor.
    2. Ubah nilai tenant.env_name menjadi *. Contoh:
      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. Simpan file.
    4. Terapkan file:
      kubectl apply -f $CLI_HOME/config.yaml

    Saat mengonfigurasi mode multi-lingkungan, Anda juga harus mengonfigurasi Envoy untuk mengirim nilai lingkungan yang sesuai ke adaptor dengan menambahkan metadata berikut di bagian virtual_hosts:routes pada file envoy-config.yaml. Contoh:

    1. Buat file envoy-config.yaml menggunakan CLI. Contoh:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Buka file yang dihasilkan (namanya envoy-config.yaml).
    3. Tambahkan metadata berikut di bagian virtual_host atau routes pada file:
      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

      Contoh berikut mengilustrasikan konfigurasi untuk virtual_host dengan beberapa rute yang ditentukan, dengan setiap rute mengirimkan traffic ke lingkungan tertentu:

      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. Ulangi langkah terakhir untuk menambahkan lingkungan tambahan sesuai kebutuhan.
    5. Simpan file dan terapkan.

    Mengonfigurasi mTLS antara adaptor dan runtime Apigee

    Anda dapat menyediakan sertifikat TLS sisi klien di bagian tenant pada file config.yaml adaptor untuk menggunakan mTLS antara adaptor dan runtime Apigee. Perubahan ini berlaku untuk semua platform Apigee yang didukung. Hal ini juga mengaktifkan mTLS untuk analisis bagi platform Apigee Edge untuk Private Cloud. Contoh:

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