Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Halaman ini menjelaskan cara mengubah Gateway Google Kubernetes Engine (GKE) yang berjalan di cluster Anda untuk menerapkan kebijakan pengelolaan API Apigee menggunakan Operator APIM Apigee untuk Kubernetes.
Sebelum memulai
Sebelum memulai tugas ini, pastikan untuk menyelesaikan langkah-langkah berikut:
- Pastikan cluster GKE Anda telah dikonfigurasi dengan Workload Identity. Lihat Membuat workload identity untuk mengetahui langkah-langkah yang diperlukan.
- Pastikan cluster Anda telah dikonfigurasi dan berfungsi dengan GKE Gateway. Lihat Men-deploy gateway untuk mengetahui detail selengkapnya.
- Instal APIM Operator. Lihat Menginstal Operator APIM Apigee untuk Kubernetes untuk mengetahui petunjuk penginstalan.
Peran yang diperlukan
Jika Anda menetapkan peran yang diperlukan ke akun layanan seperti yang dijelaskan dalam Menginstal Apigee APIM Operator 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 agar menggunakan kebijakan Apigee menggunakan APIM Operator. Dalam panduan ini, Anda akan:
- Tentukan kebijakan Ekstensi APIM.
- Tentukan produk API.
- Tentukan set 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 Gateway GKE yang berjalan di cluster Anda.
Kebijakan ini mengatur semua traffic yang melalui Gateway dan HTTPRoutes
terkait, yang beroperasi serupa 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/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeenv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true 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
Output-nya akan terlihat seperti berikut, dengan
State
RUNNING
: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:
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 dalamHTTPRoute
Gateway.
- Permintaan akan gagal karena keamanan default diaktifkan dengan menyetel
defaultSecurityEnabled: true
di resource kebijakan Ekstensi API. Anda akan melihat respons seperti 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 penegakan kunci API serta verifikasi token akses aktif.
Tentukan 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/v1 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 set operasi API
Tentukan set 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/v1 kind: APIOperationSet metadata: name: item-set namespace: apim 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.
Menguji penyiapan
Siapkan resource API yang Anda butuhkan untuk pengujian:
Buka halaman Apigee API management di konsol Google Cloud :
- Pilih organisasi Apigee tempat Anda menginstal APIM Operator.
- Buat developer:
- Pilih Distribusi > Developer.
- Di halaman Developer, klik + Buat.
- Di halaman Tambahkan developer, lengkapi kolom yang wajib diisi menggunakan nilai apa pun yang Anda inginkan.
- Klik Tambahkan.
- Membuat Aplikasi:
- Pilih Distribusi> Aplikasi.
- Di halaman Aplikasi, klik + Buat
- Di halaman Buat Aplikasi, isi kolom wajib diisi di bagian Detail Aplikasi menggunakan nilai berikut:
- Nama aplikasi: demo-app
- Developer: Pilih developer yang Anda buat pada langkah sebelumnya, atau developer lain dari daftar.
- Di bagian Kredensial Aplikasi, klik + Tambahkan Kredensial.
- Di bagian Credential, isi kolom wajib diisi di bagian Credential Details
dengan nilai berikut:
- Credential name: demo-credential
- Jenis kredensial: Pilih Kunci API.
- Klik Buat.
- Di bagian Produk, klik + Tambahkan produk.
- Pilih
api-product-1
yang dibuat pada langkah sebelumnya. - Klik Tambahkan.
- Klik Buat.
- Di halaman Detail Aplikasi, di bagian Kredensial, klik
visibility_off untuk menampilkan nilai Kunci.
Salin nilai
Key
. Anda akan menggunakan kunci ini untuk melakukan panggilan API ke layanan Anda pada langkah selanjutnya. - 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 pada langkah selanjutnya.
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:
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 dalamHTTPRoute
Gateway.API_KEY
adalah nilai kunci API yang diperoleh di Pengujian penyiapan.
Permintaan akan berhasil dan menampilkan respons yang mirip dengan berikut ini:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
Menguji pemberlakuan 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:
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 dalamHTTPRoute
Gateway.API_KEY
adalah nilai kunci API yang diperoleh di Pengujian penyiapan.
Tindakan ini akan memicu pelanggaran kuota dan menimbulkan kesalahan 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 REST, gunakan perintah berikut untuk mengirim permintaan ke Gateway menggunakan URL yang tidak ada di set operasi API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Dengan:
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 dalamHTTPRoute
Gateway.API_KEY
adalah nilai kunci API yang diperoleh di Pengujian penyiapan.
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 Apigee API management di konsol Google Cloud :
- Pilih organisasi Apigee tempat Anda menginstal APIM Operator.
- Pilih Analytics > Metrik API di menu navigasi samping.
- Di tab Performa Proxy API, pilih lingkungan yang Anda buat di langkah penginstalan opsional
Buat lingkungan Apigee, atau lingkungan yang dibuat oleh APIM Operator selama penginstalan. Nama
lingkungan akan diawali dengan awalan
apigee-ext-proc-enabled-env
. - Amati traffic API yang direkam.
Memecahkan masalah
Jika Anda mengalami masalah saat menggunakan kebijakan pengelolaan API dengan Operator APIM, lihat Memecahkan masalah Operator APIM untuk mengetahui solusi atas error umum.
Langkah berikutnya
- Pelajari cara Menambahkan kebijakan ke GKE Gateway.
- Pelajari cara Meng-uninstal Apigee APIM Operator untuk Kubernetes.