Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Halaman ini menjelaskan cara menerapkan kebijakan Apigee ke traffic yang melewati
Kubernetes Gateway dengan membuat resource kustom APIMExtensionPolicy. The
Apigee Operator for Kubernetes mengamati resource APIMExtensionPolicy dan
mengonfigurasi gateway dengan tepat.
Apigee
Ikuti langkah-langkah berikut jika Anda menggunakan Apigee.
Sebelum memulai
Sebelum memulai tugas ini, selesaikan langkah-langkah berikut:
- Pastikan cluster GKE Anda telah dikonfigurasi dengan Workload Identity. Lihat Mengonfigurasi Workload Identity Federation for GKE 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 Apigee Operator untuk Kubernetes. Lihat Menginstal Apigee Operator untuk Kubernetes guna mengetahui petunjuk penginstalan.
Buat APIMExtensionPolicy
Pada langkah ini, buat APIMExtensionPolicy dan terapkan 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.
Untuk membuat APIMExtensionPolicy:
- Buat file bernama
global-ext-lb1-apim-policy.yamldengan konten berikut:# 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 - Ganti
ENV_NAMEdengan nama lingkungan Apigee yang dibuat di langkah penginstalan Buat lingkungan Apigee.Catatan: Jika Anda menginstal Apigee Operator untuk Kubernetes menggunakan flag
generateEnv=TRUE, kolomapigeeEnvtidak diperlukan.Anda dapat melihat semua lingkungan yang tersedia di halaman Environments di konsol Google Cloud .
- Terapkan kebijakan:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlSetelah kebijakan diterapkan, Apigee Operator untuk Kubernetes akan membuat resource jaringan di latar belakang.
- Periksa status
APIMExtensionPolicymenggunakan perintah berikut:kubectl -n apim get APIMExtensionPolicyOutput-nya akan terlihat seperti berikut, dengan
STATERUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Menguji kebijakan
Gunakan perintah berikut untuk mengirim permintaan ke Gateway:
- Dapatkan alamat IP Gateway:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPGanti
GATEWAY_NAMEdengan nama Gateway, misalnyaglobal-ext-lb1. - Mengirim permintaan ke endpoint yang dikonfigurasi di
HTTPRouteAnda:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Ganti
HOST_NAMEdengan nama host yang ditentukan diHTTPRouteGateway, misalnyaexample.httpbin.com. - Permintaan akan gagal karena
defaultSecurityEnabled: trueditetapkan di resourceAPIMExtensionPolicy, yang memungkinkan verifikasi token akses dan kunci 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 penerapan kunci API serta verifikasi token akses aktif.
Langkah berikutnya
- Pelajari cara Menambahkan kebijakan ke GKE Gateway.
- Pelajari cara Meng-uninstal Apigee Operator untuk Kubernetes.
Apigee hybrid
Ikuti langkah-langkah berikut jika Anda menggunakan Apigee hybrid.
Sebelum memulai
Prosedur ini mengasumsikan Anda telah menginstal Apigee Operator untuk Kubernetes dengan mengikuti langkah-langkah di Menginstal Apigee Operator untuk Kubernetes untuk Apigee hybrid.
Buat secret sertifikat TLS
APIMExtensionPolicy memerlukan sertifikat publik berenkode base64 yang dikaitkan dengan nama host grup lingkungan. Anda membuat sertifikat ini di
Menginstal Lingkungan Apigee Hybrid menggunakan helm.
Berikan sertifikat ini kepada operator dengan membuat secret Kubernetes di namespace
apim.
- Dapatkan string sertifikat berenkode base64 dari file yang Anda buat selama penginstalan:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Buat file bernama
secret-cert.yamldengan konten berikut:# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - Ganti
BASE64_ENCODED_CERT_STRINGdengan output dari perintahcatpada langkah 1. - Terapkan secret ke cluster Anda:
kubectl apply -f secret-cert.yaml
Tentukan dan terapkan APIMExtensionPolicy
Tentukan resource APIMExtensionPolicy dan terapkan ke Istio Gateway yang berjalan di cluster Anda. Ekstensi kebijakan ini mencegat traffic yang dikelola oleh Gateway
dan HTTPRoutes terkait serta menerapkan kebijakan Apigee sebelum meneruskan
permintaan ke target backend.
- Buat file bernama
istio-gateway-apim-policy.yamldengan konten berikut:# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - Ganti variabel berikut:
ENV_NAME: Nama lingkungan Apigee Hybrid yang Anda buat dengan ekstensi layanan yang diaktifkan, misalnyamy-hybrid-env.HOST_NAME: Nama domain yang digunakan untuk grup Lingkungan, misalnyamy-proxies.example.com.INGRESS_IP_ADDRESS: Alamat IP ingress untuk ingress runtime Apigee Hybrid. Lihat Mengekspos ingress Apigee untuk mengetahui detail tentang cara mengambil IP ini.
- Terapkan kebijakan ke cluster Anda:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Setelah resource diterapkan, Apigee Operator untuk Kubernetes akan mulai mengonfigurasi
resource jaringan gateway. Periksa status
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Tunggu hingga
STATEmenampilkanRUNNING. Output-nya akan terlihat seperti berikut:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Menguji kebijakan
Di APIMExtensionPolicy yang dibuat pada langkah sebelumnya,
defaultSecurityEnabled ditetapkan ke true. Kebijakan verifikasi token OAuth2 dan Kunci API akan otomatis diaktifkan untuk traffic yang cocok dengan gateway ini.
Uji ini dengan mengirim permintaan yang tidak diautentikasi ke layanan httpbin
contoh yang Anda konfigurasi saat memverifikasi penyiapan Istio Gateway di
Memverifikasi penyiapan Istio Gateway.
- Dapatkan alamat IP Gateway:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - Kirim permintaan ke endpoint
/getyang dikonfigurasi di HTTPRoute Anda:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Karena
defaultSecurityEnabled: truememerlukan autentikasi (seperti kunci API yang valid), Apigee akan menolak permintaan dengan error autentikasi. Responsnya akan mirip dengan berikut ini:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Output ini mengonfirmasi bahwa
APIMExtensionPolicyaktif dan kebijakan Apigee diterapkan oleh Istio Gateway.
Langkah berikutnya
Pelajari cara membuat produk API, developer, dan aplikasi untuk mendapatkan kunci API bagi permintaan yang diautentikasi: