Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee Hybrid.
Baca dokumentasi
Apigee Edge.
Halaman ini menjelaskan cara mengubah Gateway Google Kubernetes Engine (GKE) yang berjalan di cluster Anda untuk menerapkan kebijakan pengelolaan Apigee API menggunakan Operator Apigee APIM untuk Kubernetes (Pratinjau).
Sebelum memulai
Sebelum memulai tugas ini, pastikan untuk menyelesaikan langkah-langkah berikut:
- Pastikan cluster GKE Anda telah mengonfigurasi Workload Identity. Lihat Membuat workload identity untuk mengetahui langkah-langkah yang diperlukan.
- Pastikan cluster Anda memiliki Gateway GKE yang dikonfigurasi dan berfungsi. Lihat Men-deploy gateway untuk mengetahui detail selengkapnya.
- Instal Operator APIM. Lihat Menginstal Operator APIM Apigee untuk Kubernetes guna mengetahui petunjuk penginstalan.
Peran yang diperlukan
Jika Anda menetapkan peran yang diperlukan ke akun layanan seperti yang dijelaskan dalam Menginstal Operator APIM Apigee untuk Kubernetes, tidak ada peran atau izin IAM tambahan yang diperlukan untuk menyelesaikan tugas ini.
Anda dapat memilih untuk mengizinkan tindakan pada resource di cluster Google Kubernetes Engine menggunakan mekanisme role-based access control (RBAC) bawaan di Kubernetes. Untuk mengetahui informasi selengkapnya, lihat Memberikan otorisasi pada tindakan dalam cluster menggunakan role-based access control.
Ringkasan
Bagian berikut menjelaskan langkah-langkah yang diperlukan untuk mengubah GKE Gateway Anda agar menggunakan kebijakan Apigee menggunakan APIM Operator. Dalam panduan ini, Anda akan:
- Menentukan kebijakan Ekstensi APIM.
- Menentukan produk API.
- Menentukan kumpulan operasi API.
- Uji ekstensi layanan Apigee.
- Lihat Analisis API Apigee di konsol Google Cloud.
Menentukan kebijakan Ekstensi APIM
Pada langkah ini, Anda akan menentukan kebijakan Ekstensi APIM dan menerapkannya ke GKE Gateway yang berjalan di cluster Anda.
Kebijakan ini mengatur semua traffic yang melewati Gateway dan HTTPRoutes
terkait,
yang beroperasi mirip dengan flowhook di tingkat lingkungan di Apigee saat ini.
Tentukan kebijakan Ekstensi APIM:
- Buat file baru bernama
global-ext-lb1-apim-policy.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeenv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default
Dengan ENV_NAME adalah nama lingkungan Apigee yang dibuat di langkah penginstalan Membuat lingkungan Apigee.
Anda dapat melihat semua lingkungan yang tersedia di halaman Apigee Environments di konsol Google Cloud:
- Terapkan kebijakan:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
Setelah
yaml
diterapkan, Operator APIM akan membuat resource jaringan di latar belakang. - Periksa status kebijakan Ekstensi API menggunakan perintah berikut:
kubectl -n apim get APIMExtensionPolicy
Outputnya akan terlihat seperti berikut, dengan
State
dariRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- Gunakan perintah berikut untuk mengirim permintaan ke Gateway:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
Dengan keterangan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, denganGATEWAY_NAME
adalah nama Gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
adalah nama host yang ditentukan diHTTPRoute
Gateway.
- Permintaan akan gagal dengan respons yang mirip dengan berikut:
{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}
Hal ini menunjukkan bahwa kebijakan ekstensi Apigee aktif dan penerapan kunci API serta verifikasi token akses aktif.
Menentukan Produk API
Tentukan produk API:
- Buat file baru bernama
api-product.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# api-product.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIProduct metadata: name: api-product namespace: apim spec: approvalType: auto description: Http bin GET calls displayName: api-product enforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Terapkan file ke Gateway menggunakan perintah berikut:
kubectl -n apim apply -f api-product.yaml
Menentukan kumpulan operasi API
Tentukan kumpulan operasi API untuk produk API yang dibuat pada langkah sebelumnya:
- Buat file baru bernama
apim-policies.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru.
File ini menentukan kebijakan kuota dan operasi rest yang tersedia
untuk produk API yang ditentukan pada langkah sebelumnya:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIOperationSet metadata: name: item-set spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Terapkan file ke Gateway:
kubectl -n apim apply -f apim-policies.yaml
Menguji ekstensi layanan Apigee
Pada langkah ini, Anda akan menggunakan UI Apigee di konsol Google Cloud untuk menguji ekstensi layanan Apigee dan kebijakan ekstensi Apigee yang diterapkan ke Gateway Anda.
Menyiapkan pengujian
Siapkan resource API yang Anda perlukan untuk pengujian:
Buka halaman Pengelolaan API Apigee di konsol Google Cloud:
- Pilih organisasi Apigee tempat Anda menginstal Operator APIM.
- Membuat developer:
- Pilih Distribusi > Developer.
- Di halaman Developer, klik + Buat.
- Di halaman Tambahkan developer, isi kolom yang diperlukan menggunakan nilai yang Anda inginkan.
- Klik Tambahkan.
- Membuat Aplikasi:
- Pilih Distribusi> Aplikasi.
- Di halaman Aplikasi, klik + Buat
- Di halaman Create App, isi kolom yang diperlukan di bagian App Details menggunakan nilai berikut:
- Nama aplikasi: demo-app
- Developer: Pilih developer yang Anda buat di langkah sebelumnya, atau developer lain dari daftar.
- Di bagian App Credentials, klik + Add Credential.
- Di bagian Kredensial, isi kolom yang diperlukan di bagian Detail Kredensial
dengan nilai berikut:
- Nama kredensial: demo-credential
- Jenis kredensial: Pilih Kunci API.
- Klik Buat.
- Di bagian Products, klik + Add products.
- Pilih
api-product-1
yang dibuat pada langkah sebelumnya. - Klik Tambahkan.
- Klik Buat.
- Di halaman App Details, di bagian Credential, klik
visibility_off untuk menampilkan nilai Key.
Salin nilai
Key
. Anda akan menggunakan kunci ini untuk melakukan panggilan API ke layanan Anda pada langkah berikutnya. - Di halaman App Details, di bagian Credential, klik visibility_off
untuk menampilkan nilai App Secret.
Salin nilai Rahasia aplikasi. Anda akan menggunakan nilai ini untuk membuat token akses di langkah berikutnya.
Menguji penerapan kunci API
Gunakan perintah berikut untuk mengirim permintaan ke Gateway menggunakan kunci API yang diperoleh pada langkah sebelumnya:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Dengan keterangan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, denganGATEWAY_NAME
adalah nama Gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
adalah nama host yang ditentukan diHTTPRoute
Gateway.API_KEY
adalah nilai kunci API yang diperoleh di Menyiapkan pengujian.
Permintaan akan berhasil dan menampilkan respons yang mirip dengan berikut:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sXXXclGXXXe0oP5XXXdA20PjgrP2x8xXXh7z4XXXKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
Menguji penerapan kuota
Untuk menguji penerapan kuota yang ditentukan dalam kebijakan ekstensi APIM, kirim permintaan dari langkah sebelumnya ke Gateway sepuluh kali dalam rentang waktu satu menit.
Anda dapat menjalankan skrip berikut untuk membuat permintaan:
#!/bin/sh for i in $(seq 1 11); do curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY" sleep 1 done
Dengan keterangan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, denganGATEWAY_NAME
adalah nama Gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
adalah nama host yang ditentukan diHTTPRoute
Gateway.API_KEY
adalah nilai kunci API yang diperoleh di Menyiapkan pengujian.
Tindakan ini akan memicu pelanggaran kuota dan menimbulkan error yang mirip dengan berikut:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Menguji penerapan operasi REST
Untuk menguji penerapan operasi API, gunakan perintah berikut untuk mengirim permintaan ke Gateway menggunakan URL yang tidak ada dalam kumpulan operasi API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Dengan keterangan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, denganGATEWAY_NAME
adalah nama Gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
adalah nama host yang ditentukan diHTTPRoute
Gateway.API_KEY
adalah nilai kunci API yang diperoleh di Menyiapkan pengujian.
Permintaan akan gagal dengan respons yang mirip dengan berikut:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Melihat Analisis API Apigee di konsol Google Cloud
Anda dapat melihat traffic API yang ditangani oleh GKE Gateway dan APIMExtensionPolicy yang Anda instal menggunakan Apigee API Analytics di konsol Google Cloud:
- Buka halaman Pengelolaan API Apigee di konsol Google Cloud:
- Pilih organisasi Apigee tempat Anda menginstal Operator APIM.
- Pilih Analytics > API metrics di menu navigasi samping.
- Di tab Performa Proxy API, pilih lingkungan yang Anda buat di langkah penginstalan opsional
Membuat lingkungan Apigee, atau lingkungan yang dibuat oleh Operator APIM selama penginstalan. Nama
lingkungan akan dimulai dengan awalan
apigee-ext-proc-enabled-env
. - Amati traffic API yang dicatat.
Memecahkan masalah
Jika Anda mengalami masalah saat menggunakan kebijakan pengelolaan API dengan APIM Operator, lihat Memecahkan masalah APIM Operator untuk mengetahui solusi error umum.
Langkah berikutnya
- Pelajari cara Menambahkan kebijakan ke GKE Gateway.
- Pelajari cara Meng-uninstal Operator APIM Apigee untuk Kubernetes.