Panduan operasi

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

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 Adaptor Apigee 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 Adaptor Apigee untuk Envoy.

2. Membuat Developer

Anda dapat menggunakan developer yang sudah ada untuk pengujian, atau membuat yang baru dengan cara 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 yang Anda inginkan.

3. Membuat Produk API

Ikuti contoh pembuatan Produk yang diberikan di bawah ini. Lihat juga Tentang Konfigurasi produk API.

  1. Pilih Publikasikan > Produk API di menu navigasi samping.
  2. Klik + Produk API.
  3. Isi halaman Detail produk sebagai berikut. Jangan klik Simpan hingga diperintahkan untuk melakukannya.
  4. Kolom Nilai
    Nama httpbin-product
    Display Name httpbin product
    Lingkungan your_environment

    Tetapkan ini ke lingkungan yang Anda gunakan saat menyediakan Adaptor Apigee untuk Envoy dengan apigee-remote-service-cli.

    Akses Private
    Kuota 5 permintaan setiap 1 menit

    Lihat juga Tentang produk API.

  5. Di bagian Apigee remote service targets, klik Add an Apigee remote service target.
  6. Pada dialog target layanan jarak jauh Apigee, tambahkan nilai berikut:
    Atribut Nilai Deskripsi
    Nama target Masukkan nama target layanan. Contoh: httpbin.org Endpoint target yang didahulukan oleh proxy Envoy.
    Proxy API remote-service Proxy remote-service yang disediakan di Apigee selama penginstalan Adaptor Envoy.
    Jalur Masukkan /resource_path untuk mencocokkan jalur tertentu. Sebagai contoh: /httpbin. Jalur permintaan yang akan dicocokkan pada 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 + App.
  3. Isi halaman Aplikasi Developer sebagai berikut. Jangan Simpan hingga diperintahkan untuk melakukannya.
  4. Nama httpbin-app
    Display Name httpbin app
    Developer Pilih developer yang Anda buat sebelumnya, atau pilih developer yang Anda inginkan dari daftar.
  5. Selanjutnya, tambahkan dua produk ke aplikasi:
    1. Pertama, di bagian Kredensial, klik + Tambahkan produk, lalu pilih produk yang Anda baru saja dikonfigurasi: httpbin-product.
    2. Kemudian, tambahkan produk remote-service. Produk ini dibuat secara otomatis saat Anda menyediakan Apigee.
  6. Klik Create.
  7. Di bagian Credentials, klik Show di samping Key.
  8. Salin nilai Kunci Konsumen. Nilai ini adalah kunci API yang akan Anda gunakan untuk melakukan panggilan API ke layanan httpbin.

Tentang produk API

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

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 diterapkan pada permintaan jika permintaan tersebut cocok dengan keduanya 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 dapat dikonfigurasi untuk menggunakan {i>header<i} lainnya.

Jalur Resource API

Jalur yang dimasukkan cocok sesuai dengan aturan berikut:

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

Kuota

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

Kasus penggunaan kuota

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

Kuota ditentukan di Produk API

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

Menetapkan batas kuota di UI Apigee.

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 otomatis diterapkan oleh Apigee Remote Service. Jika permintaan diotorisasi, permintaan akan dihitung terhadap kuota yang diizinkan.

Tempat kuota dipertahankan

Kuota dikelola dan diperiksa secara lokal oleh proses Remote Service dan secara asinkron dikelola dengan Apigee Runtime. Artinya kuotanya tidak tepat dan cenderung beberapa layanan berlebih jika Anda memiliki lebih dari satu Layanan Jarak Jauh yang mempertahankan kuota. Jika koneksi ke Apigee Runtime terganggu, kuota lokal akan berlanjut secara mandiri kuota hingga waktu tersebut 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 Anda yang diterbitkan akan diperiksa dengan cakupan Produk API.

Tentang Aplikasi developer

Setelah mengonfigurasi Produk API, Anda akan membuat Aplikasi yang terkait dengan Developer. Aplikasi memberikan 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 daripada menggunakan kunci API. Ini menjelaskan cara menggunakan perintah apigee-remote-service-cli token untuk membuat, memeriksa, dan merotasi token JWT. Untuk lingkungan hybrid Apigee, Anda dapat menggunakan perintah ini untuk membuat secret Kubernetes untuk menyimpan JWT.

Ringkasan

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

Setelah diautentikasi, filter ext-authz Envoy mengirim header permintaan dan JWT ke apigee-remote-service-envoy. Data ini cocok dengan klaim api_product_list dan scope JWT terhadap Produk API Apigee untuk memberikan otorisasi terhadap target permintaan.

Membuat token JWT Apigee

Token JWT Apigee dapat dibuat menggunakan CLI:

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

Atau dengan menggunakan endpoint token OAuth standar. Contoh Curll:

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

Menggunakan token JWT

Setelah mendapatkan token, Anda cukup meneruskannya ke Envoy di header Otorisasi. Contoh:

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

Kegagalan token JWT

Penolakan usulan

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 remote_jwks, yang dapat dijangkau oleh Envoy, dan Anda dapat setel sertifikat saat Anda menginstal proxy Apigee. Anda seharusnya sudah dapat untuk memanggil URI secara langsung dengan panggilan GET dan menerima respons JSON yang valid.

Contoh:

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

Pesan lain dari Envoy mungkin terlihat seperti:

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

Persyaratan ini berasal dari persyaratan dalam konfigurasi Envoy yang mungkin perlu Anda ubah.

Memeriksa token

Anda dapat menggunakan CLI untuk memeriksa token Anda. Contoh

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

atau

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

Proses Debug

Lihat Kunci API yang valid gagal.

Logging

Anda dapat menyesuaikan level logging pada layanan $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Semua pencatatan log dikirim ke {i>stderr<i}.

Elemen Wajib Deskripsi
-l, --log_level Tingkat yang valid: debug, info, peringatan, error. Menyesuaikan level logging. Default: info
-j, --json_log Memberikan output log sebagai kumpulan data JSON.

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

Mengubah nama rahasia kebijakan

Rahasia Kubernetes yang di-deploy ke cluster berisi kredensial yang diperlukan adaptor untuk mengotentikasi komunikasi dengan {i>remote service proxy<i}. Rahasia ini memerlukan sebuah direktori pemasangan volume, yang dapat dikonfigurasi. Secara default, titik pemasangannya adalah /policy-secret. Untuk mengubah direktori pemasangan, ikuti langkah-langkah berikut:

  1. Jalankan perintah ini:
    $REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name

    Contoh:

    $REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
  2. Buka $REMOTE_SERVICE_HOME/samples/istio/hybrid-apigee-remote-service-envoy.yaml di editor.
  3. Ubah nama direktori pemasangan menjadi nama baru:
    volumeMounts:
      - mountPath: /config
        name: apigee-remote-service-envoy
        readOnly: true
      - mountPath: /opt/apigee/tls
        name: tls-volume
        readOnly: true
      - mountPath: /my-mount-point
        name: policy-secret
        readOnly: true
  4. Simpan file dan terapkan ke mesh layanan:
    kubectl apply -f $REMOTE_SERVICE_HOME/samples/istio/hybrid-apigee-remote-service-envoy.yaml

Menggunakan proxy jaringan

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

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 analisis proxy Envoy data:

Analisis Istio

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

Analisis Apigee

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

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