Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Seiring dengan pertumbuhan dan perubahan kebutuhan pengelolaan API, Anda mungkin perlu menambahkan layanan baru ke cluster atau memperbarui rute dan opsi ingress yang ada. Halaman ini menjelaskan cara mengupdate cluster Anda untuk menyelesaikan tugas berikut:
- Tambahkan Gateway dan HTTPRoute baru.
- Perbarui produk API.
- Buat produk API baru.
- Buat set operasi API baru.
- Uji konfigurasi Gateway baru.
Sebelum memulai
Sebelum memulai tugas ini, pastikan Anda menyelesaikan langkah-langkah yang dijelaskan dalam Menerapkan kebijakan dengan Apigee APIM Operator untuk Kubernetes. Halaman ini mengasumsikan bahwa Anda telah menyiapkan cluster Google Kubernetes Engine (GKE), menginstal Apigee APIM Operator 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 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.
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 (keduanya eksternal atau keduanya 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 di region yang sama.
Untuk menambahkan Gateway dan HTTPRoute baru ke cluster Anda, selesaikan langkah-langkah berikut:
- Siapkan Gateway GKE eksternal baru. Untuk mengetahui informasi dan langkah-langkah selengkapnya, lihat Men-deploy Gateway eksternal.
- Buat resource
SslCertificate
global yang dikelola Google:gcloud compute ssl-certificates create CERT_NAME \ --domains=HOST_NAME \ --global
Dengan:
CERT_NAME
adalah nama sertifikat yang ingin Anda buat.HOST_NAME_2
adalah nama host untuk Gateway baru.
- 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: CERT_NAME
- 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 -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Dengan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway, seperti yang ditunjukkan di kolomAddress
respons yang ditampilkan di Langkah 7.HOST_NAME_2
adalah nama host yang ditentukan dalamHTTPRoute
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/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true 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 disebarkan ke semua instance load balancer, lalu
gunakan perintah berikut untuk memverifikasi bahwa permintaan ke Gateway baru gagal:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Dengan:
GATEWAY_IP_ADDRESS
adalah alamat IP Gateway yang diperoleh pada langkah sebelumnya.HOST_NAME_2
adalah nama host yang ditentukan dalamHTTPRoute
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 serta token akses diterapkan. Untuk mengetahui langkah-langkah yang diperlukan untuk membuat Aplikasi Developer, mendapatkan kunci API, dan menguji Gateway baru Anda 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 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/v1 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
- Menerapkan 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 dalam bagian yaml
yang ditandai.
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/v1 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
- Menerapkan 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 dalam bagian yaml
yang ditandai.
Membuat set operasi API baru
Buat set 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/v1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-2 kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 1 interval: 1 timeUnit: minute restOperations: - name: PostItems path: "/post" methods: - POST
- Terapkan file set 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 set operasi API baru item-set-post
dibuat
untuk mereferensikan jalur /post
, seperti yang ditunjukkan dalam bagian file yang ditandai.
Menguji konfigurasi Gateway baru
Untuk menguji konfigurasi Gateway baru, kirim permintaan berikut ke jalur /post
baru:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Dengan:
- GATEWAY_IP_ADDRESS adalah alamat IP Gateway yang diperoleh pada langkah sebelumnya.
- HOST_NAME adalah nama host yang ditentukan dalam
HTTPRoute
Gateway.
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": "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 Operator APIM, lihat Memecahkan masalah Operator APIM untuk mengetahui solusi atas error umum.
Langkah berikutnya
- Pelajari cara Meng-uninstal Apigee APIM Operator untuk Kubernetes.
- Pelajari lebih lanjut opsi untuk Men-deploy Gateway.