Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee Hybrid.
Baca dokumentasi
Apigee Edge.
Seiring kebutuhan pengelolaan API Anda berkembang dan berubah, Anda mungkin perlu menambahkan layanan baru ke cluster atau memperbarui rute dan opsi ingress yang ada. Halaman ini menjelaskan cara mengupdate cluster untuk menyelesaikan tugas berikut:
- Tambahkan Gateway dan HTTPRoute baru.
- Memperbarui produk API.
- Buat produk API baru.
- Buat kumpulan operasi API baru.
- Uji konfigurasi Gateway baru.
Sebelum memulai
Sebelum memulai tugas ini, pastikan Anda menyelesaikan langkah-langkah yang dijelaskan dalam Menerapkan kebijakan dengan Operator APIM Apigee untuk Kubernetes. Halaman ini mengasumsikan bahwa Anda telah menyiapkan cluster Google Kubernetes Engine (GKE), menginstal Operator APIM Apigee untuk Kubernetes, membuat Gateway Google Kubernetes Engine (GKE), dan menerapkan setidaknya satu kebijakan pengelolaan API ke Gateway.
Peran yang diperlukan
Jika Anda menetapkan peran yang diperlukan ke akun layanan seperti yang dijelaskan dalam Menginstal Operator APIM Apigee untuk Kubernetes, tidak diperlukan peran atau izin IAM tambahan 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 Mengizinkan tindakan dalam cluster menggunakan kontrol akses berbasis peran.
Menambahkan Gateway dan HTTPRoute baru
Di bagian ini, Anda akan menambahkan Gateway dan HTTPRoute baru ke cluster. Dalam panduan tugas sebelumnya, contoh konfigurasi menggunakan GKE Gateway eksternal. Jika beberapa Gateway di-deploy di region yang sama, gateway tersebut harus memiliki jenis yang sama (baik eksternal maupun internal). Oleh karena itu, contoh konfigurasi dalam panduan ini juga akan menggunakan Gateway eksternal.
Operator APIM dapat digunakan dengan gateway GKE internal atau eksternal, tetapi Anda tidak dapat men-deploy kedua jenis gateway tersebut di region yang sama.
Untuk menambahkan Gateway dan HTTPRoute baru ke cluster, selesaikan langkah-langkah berikut:
- Siapkan GKE Gateway eksternal baru. Untuk mengetahui informasi dan langkah-langkah selengkapnya, lihat Men-deploy Gateway eksternal.
- Buat file baru bernama
gateway2.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# gateway2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: Gateway metadata: name: global-ext-lb2 spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 443 tls: options: networking.gke.io/pre-shared-certs: apigee-lb-new-cert-sept
- Tambahkan HTTPRoute baru untuk
/post
ke file yang sama, seperti yang ditandai di bawah:# http-route2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: http-bin-route-post namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb2 namespace: default hostnames: - HOST_NAME_2 rules: - matches: - path: type: PathPrefix value: "/post" backendRefs: - name: httpbin kind: Service port: 80 namespace: http
- Terapkan Gateway dan HTTPRoute baru:
kubectl apply -f gateway2.yaml
- Periksa status HTTPRoute menggunakan perintah berikut:
kubectl -n http get HttpRoute
Outputnya akan mirip dengan berikut ini:
NAME HOSTNAMES AGE http-bin-route ["my-hostname-2"] 12d
- Periksa status Gateway menggunakan perintah berikut:
kubectl get gateway global-ext-lb2
Outputnya akan mirip dengan berikut ini:
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb2 gke-l7-global-external-managed 34.54.193.92 True 11d
Pastikan kolom
Address
berisi alamat IP yang valid dan statusProgrammed
adalahTrue
. - Jelaskan Gateway untuk memastikan rute terlampir:
kubectl describe gateway global-ext-lb2
Outputnya akan mirip dengan berikut ini:
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Pastikan nilai
Attached Routes
adalah1
.- Kirim permintaan ke Gateway untuk memverifikasi bahwa rute berfungsi:
curl -X POST http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME"
Dengan keterangan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway, seperti yang ditunjukkan di kolomAddress
respons yang ditampilkan di Langkah 7.HOST_NAME
adalah nama host yang ditentukan diHTTPRoute
Gateway.
- Outputnya akan mirip dengan berikut ini:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "https://apigee-apim-operator-test.apigee.net/post" }
- Buat Kebijakan Ekstensi APIM baru yang mereferensikan HTTPRoute Gateway baru yang dibuat pada langkah sebelumnya:
- Buat file baru bernama
apim-policy2.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# apim-policy2.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms targetRef: # identifies the Gateway where the extension should be installed name: global-ext-lb2 kind: Gateway namespace: default
- Terapkan Kebijakan Ekstensi APIM baru:
kubectl apply -f apim-policy2.yaml
Setelah file diterapkan, Operator APIM akan membuat resource jaringan di latar belakang.
- Periksa status Kebijakan Ekstensi APIM:
kubectl -n apim get APIMExtensionPolicy
Outputnya akan mirip dengan berikut ini:
NAME STATE ERRORMESSAGE global-ext-lb2-apim-policy-2 RUNNING
Pastikan nilai
STATE
adalahRUNNING
. - Tunggu lima menit untuk memastikan perubahan diterapkan ke semua instance load balancer, lalu
gunakan perintah berikut untuk memverifikasi bahwa permintaan ke Gateway baru gagal:
curl -X POST http://GATEWAY_IP_ADDRESS/post -H "Host: HOSTNAME"
Dengan keterangan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway yang diperoleh di langkah sebelumnya.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" } } }
Artinya, ekstensi layanan ke Apigee aktif dan verifikasi kunci API dan token akses diterapkan. Untuk mengetahui langkah-langkah yang diperlukan guna membuat Aplikasi Developer, mendapatkan kunci API, dan menguji Gateway baru dengan kunci tersebut, lihat Menguji ekstensi layanan Apigee.
- Buat file baru bernama
Memperbarui produk API
Ubah produk API yang ada untuk mereferensikan Kebijakan Ekstensi APIM yang baru:
- Buat file baru bernama
api-product-2.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 EnforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Terapkan file produk API baru:
kubectl apply -f api-product-2.yaml
Diperlukan waktu sekitar tiga menit agar perubahan diterapkan di seluruh cluster.
Dalam contoh ini, bagian EnforcementRefs
dari produk API api-product-2
diperbarui
untuk mereferensikan global-ext-lb1-apim-policy
dan global-ext-lb2-apim-policy
, seperti yang ditunjukkan di bagian yang ditandai pada yaml
.
Membuat produk API baru
Buat produk API baru:
- Buat file baru bernama
api-product-2.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 enforcementRefs: - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Terapkan file produk API baru:
kubectl apply -f api-product-2.yaml
Diperlukan waktu sekitar tiga menit agar perubahan diterapkan di seluruh cluster.
Dalam contoh ini, bagian EnforcementRefs
dari produk API baru api-product-2
dibuat untuk mereferensikan global-ext-lb2-apim-policy
, seperti yang ditunjukkan pada bagian yang ditandai di yaml
.
Membuat kumpulan operasi API baru
Buat kumpulan operasi API baru:
- Buat file baru bernama
item-set-post.yaml
dalam namespaceapim
. - Salin konten berikut ke dalam file baru:
# item-set-post.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-1 kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 1 interval: 1 timeUnit: minute restOperations: - name: PostItems path: "/post" methods: - POST
- Terapkan file kumpulan operasi API baru:
kubectl apply -f item-set-post.yaml
Diperlukan waktu sekitar tiga menit agar perubahan diterapkan di seluruh cluster.
Dalam contoh ini, nilai restOperations
dari kumpulan operasi API baru item-set-post
dibuat
untuk mereferensikan jalur /post
, seperti yang ditunjukkan di bagian file yang ditandai.
Menguji konfigurasi Gateway baru
Untuk menguji konfigurasi Gateway baru, kirim permintaan berikut ke jalur /post
baru:
curl -X POST http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME"
Dengan keterangan:
- GATEWAY_IP_ADDRESS adalah alamat IP Gateway yang diperoleh di langkah sebelumnya.
- HOST_NAME adalah nama host yang ditentukan di
HTTPRoute
Gateway.
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/post" }
Memecahkan masalah
Jika Anda mengalami masalah saat memperbarui dan memperluas kebijakan pengelolaan API yang digunakan dengan APIM Operator, lihat Memecahkan masalah APIM Operator untuk mengetahui solusi error umum.
Langkah berikutnya
- Pelajari cara Meng-uninstal Operator APIM Apigee untuk Kubernetes.
- Pelajari lebih lanjut opsi untuk Men-deploy Gateway.