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 melalui Apigee Adapter for Envoy.
1. Login ke Apigee
- Buka UI Apigee di browser.
- Setelah Anda berada di UI, pilih organisasi yang sama dengan yang Anda gunakan untuk mengonfigurasi Apigee Adapter for Envoy.
2. Membuat Developer
Anda dapat menggunakan developer yang sudah ada untuk pengujian, atau membuat developer baru sebagai berikut:
- Pilih Publikasikan > Developer di menu navigasi samping.
- Klik + Developer.
- 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 diberikan di bawah. Lihat juga Tentang konfigurasi produk API.
- Pilih Publish > API Products di menu navigasi samping.
- Klik + Produk API.
- Isi halaman Detail produk sebagai berikut.
- Di bagian Apigee remote service targets, klik Add an Apigee remote service target.
- Dalam dialog target layanan jarak jauh Apigee, tambahkan nilai berikut:
Atribut Nilai Deskripsi Nama target Masukkan nama layanan target. Contoh: httpbin.orgEndpoint target yang di-front-end oleh proxy Envoy. Path Masukkan jalur resource pada layanan yang akan dicocokkan. Contoh: /headers.Jalur permintaan yang akan dicocokkan di endpoint target. Panggilan proxy API ke jalur ini akan cocok dengan produk API ini. - Klik Simpan.
| Kolom | Nilai |
|---|---|
| Nama | httpbin-product
|
| Display Name | httpbin product
|
| Lingkungan | your_environment
Tetapkan ini ke lingkungan yang Anda gunakan saat menyediakan Apigee Adapter for Envoy. |
| Akses | Private
|
| Kuota | 5 permintaan setiap 1 menit
Lihat juga Quota. |
4. Membuat Aplikasi Developer
- Pilih Publish > Apps di menu navigasi samping.
- Klik + Aplikasi.
- Isi halaman Aplikasi Developer sebagai berikut. Jangan Simpan hingga Anda diperintahkan untuk melakukannya.
- Selanjutnya, tambahkan produk API ke aplikasi:
- Di bagian Credentials, klik + Add product dan pilih produk yang baru saja Anda konfigurasi: httpbin-product.
- Klik Buat.
- Di bagian Credentials, klik Show di samping Key.
- Salin nilai Consumer Key. Nilai ini adalah kunci API
yang akan Anda gunakan untuk melakukan panggilan API ke layanan
httpbin.
Tentang produk API
Produk API adalah titik kontrol utama untuk Layanan Jarak Jauh Apigee. Saat membuat Produk API dan mengikatnya ke layanan target, Anda membuat kebijakan yang akan diterapkan ke permintaan apa pun yang Anda konfigurasi untuk ditangani oleh Apigee Adapter for 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 cocok dengan target binding (misalnya,
httpbin.org) dan jalur permintaan (misalnya,/httpbin). Daftar target potensial disimpan sebagai atribut di Produk API.Secara default, Apigee Remote Service memeriksa header
:authority (host)khusus Envoy terhadap daftar targetnya; namun, header ini dapat dikonfigurasi untuk menggunakan header lain.Jalur Resource API
Jalur yang dimasukkan cocok berdasarkan aturan berikut:
- Satu garis miring (
/) dengan sendirinya cocok dengan jalur apa pun. *valid di mana saja dan cocok dalam segmen (di antara garis miring).**valid di bagian akhir dan cocok dengan apa pun hingga akhir baris.
Kuota
Kuota menentukan jumlah pesan permintaan yang diizinkan untuk dikirimkan oleh aplikasi ke API selama satu jam, hari, minggu, atau bulan. Jika aplikasi mencapai batas kuotanya, panggilan API berikutnya akan ditolak.
Kasus penggunaan kuotaKuota memungkinkan Anda menerapkan jumlah permintaan yang dapat dibuat klien ke layanan dalam jangka waktu tertentu. Kuota sering digunakan untuk menerapkan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Misalnya, kuota dapat digunakan untuk membatasi traffic layanan gratis, sekaligus mengizinkan akses penuh bagi pelanggan berbayar.
Kuota ditentukan dalam Produk APIParameter kuota dikonfigurasi di Produk API. Misalnya, saat membuat Produk API, Anda dapat secara opsional menetapkan batas kuota, unit waktu, dan interval yang diizinkan.
Karena kunci API dipetakan kembali ke Produk API, setiap kali kunci API diverifikasi, penghitung kuota yang sesuai dapat dikurangi (jika Kuota ditentukan dalam Produk terkait).
Tidak seperti dalam runtime Apigee, Kuota yang dimasukkan dalam definisi Produk secara otomatis diterapkan oleh Apigee Remote Service. Jika permintaan diizinkan, permintaan akan dihitung berdasarkan kuota yang diizinkan.
Tempat kuota dikelolaKouta dipertahankan dan diperiksa secara lokal oleh proses Layanan Jarak Jauh dan dipertahankan secara asinkron dengan Apigee Runtime. Artinya, kuota tidak akurat dan kemungkinan akan melampaui batas jika Anda memiliki lebih dari satu Layanan Jarak Jauh yang mempertahankan kuota. Jika koneksi ke Apigee Runtime terganggu, kuota lokal akan berlanjut sebagai kuota mandiri hingga dapat terhubung kembali ke Apigee Runtime.
Cakupan OAuth
Jika menggunakan token JWT, Anda dapat membatasi token ke subset cakupan OAuth yang diizinkan. Cakupan yang ditetapkan ke token JWT yang dikeluarkan akan diperiksa berdasarkan cakupan Produk API.
Tentang Aplikasi developer
Setelah mengonfigurasi Produk API, Anda akan membuat Aplikasi yang terkait dengan Developer. Aplikasi mengizinkan akses klien ke Produk API terkait dengan 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 tokenuntuk membuat, memeriksa, dan merotasi token JWT.Ringkasan
Verifikasi dan autentikasi JWT ditangani oleh Envoy menggunakan JWT Authentication Filter.
Setelah diautentikasi, filter
ext-authzEnvoy akan mengirimkan header permintaan dan JWT keapigee-remote-service-envoy. JWT ini mencocokkan klaimapi_product_listdanscopeJWT dengan Produk API Apigee 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 pengiriman
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, URI tersebut dapat dijangkau oleh Envoy, dan 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:
- "Audiences in Jwt are not allowed" (Audiens di JWT tidak diizinkan)
- "Jwt issuer is not configured" (Penerbit JWT tidak dikonfigurasi)
Error ini berasal dari persyaratan dalam konfigurasi Envoy yang mungkin perlu Anda ubah.
Memeriksa token
Anda dapat menggunakan CLI untuk memeriksa token. 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 Kunci API yang valid gagal.Logging
Anda dapat menyesuaikan tingkat logging pada layanan $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Semua logging dikirim ke stdout dan stderr.
Elemen Wajib Deskripsi -l, --log-level Level yang valid: debug, info, warn, error. Menyesuaikan tingkat logging. Default: info -j, --json-log Memancarkan output log sebagai catatan JSON. Envoy menyediakan logging. Untuk mengetahui informasi selengkapnya, lihat link dokumentasi Envoy berikut:
Menggunakan proxy jaringan
Proxy HTTP dapat disisipkan dengan 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 mengonfigurasi nomor port ini. Lihat File konfigurasi.Analisis Envoy
Link berikut memberikan informasi tentang cara mendapatkan data analisis proxy Envoy:
Analisis Istio
Link berikut memberikan informasi tentang cara mendapatkan data analisis proxy Envoy:
Analytics Apigee
Apigee Remote Service for Envoy mengirimkan statistik permintaan ke Apigee untuk pemrosesan analisis. Apigee melaporkan permintaan ini dengan nama Produk API terkait.
Untuk mengetahui informasi tentang analisis Apigee, lihat Ringkasan layanan Analytics.
Dukungan lingkungan multi-tenant
Anda kini dapat mengaktifkan adaptor untuk melayani beberapa lingkungan di organisasi Apigee. Dengan fitur ini, Anda dapat menggunakan satu Apigee Adapter for Envoy yang terkait dengan satu organisasi Apigee untuk melayani beberapa lingkungan. Sebelum perubahan ini, satu adapter selalu terikat ke satu lingkungan Apigee.
Untuk mengonfigurasi dukungan beberapa lingkungan, ubah nilai
tenant:env_namemenjadi*dalam fileconfig.yaml. Contoh:- Buka file
config.yamldi editor. - Ubah nilai
tenant.env_namemenjadi*. 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 - Simpan file.
- 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 adapter dengan menambahkan metadata berikut di bagian
virtual_hosts:routesfileenvoy-config.yaml. Contoh:- Buat file
envoy-config.yamlmenggunakan CLI. Contoh:$CLI_HOME/apigee-remote-service-cli samples create \ -t envoy-1.16 -c ./config.yaml --out myconfigs
- Buka file yang dihasilkan (bernama
envoy-config.yaml). - Tambahkan metadata berikut di bagian
virtual_hostatauroutesfile: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: testContoh berikut mengilustrasikan konfigurasi untuk
virtual_hostdengan 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 - Ulangi langkah terakhir untuk menambahkan lingkungan tambahan sesuai kebutuhan.
- Simpan file dan terapkan.
Mengonfigurasi mTLS antara adaptor dan runtime Apigee
Anda dapat menyediakan sertifikat TLS sisi klien di bagian
tenantfileconfig.yamladaptor untuk menggunakan mTLS antara adaptor dan runtime Apigee. Perubahan ini berlaku untuk semua platform Apigee yang didukung. Selain itu, mTLS juga diaktifkan untuk analisis untuk 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
| Nama | httpbin-app
|
| Display Name | httpbin app
|
| Developer | Pilih developer yang Anda buat sebelumnya, atau pilih developer yang Anda inginkan dari daftar. |