Membuat APIMExtensionPolicy

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:

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:

  1. Buat file bernama global-ext-lb1-apim-policy.yaml dengan 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
        
  2. Ganti ENV_NAME dengan nama lingkungan Apigee yang dibuat di langkah penginstalan Buat lingkungan Apigee.

    Catatan: Jika Anda menginstal Apigee Operator untuk Kubernetes menggunakan flag generateEnv=TRUE, kolom apigeeEnv tidak diperlukan.

    Anda dapat melihat semua lingkungan yang tersedia di halaman Environments di konsol Google Cloud .

  3. Terapkan kebijakan:
    kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
        

    Setelah kebijakan diterapkan, Apigee Operator untuk Kubernetes akan membuat resource jaringan di latar belakang.

  4. Periksa status APIMExtensionPolicy 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
        

Menguji kebijakan

Gunakan perintah berikut untuk mengirim permintaan ke Gateway:

  1. 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_IP
          

    Ganti GATEWAY_NAME dengan nama Gateway, misalnya global-ext-lb1.

  2. Mengirim permintaan ke endpoint yang dikonfigurasi di HTTPRoute Anda:
    curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"
          

    Ganti HOST_NAME dengan nama host yang ditentukan di HTTPRoute Gateway, misalnya example.httpbin.com.

  3. Permintaan akan gagal karena defaultSecurityEnabled: true ditetapkan di resource APIMExtensionPolicy, 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

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.

  1. 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
        
  2. Buat file bernama secret-cert.yaml dengan konten berikut:
    # secret-cert.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: apigee-conf
      namespace: apim
    data:
      ca.crt: BASE64_ENCODED_CERT_STRING
        
  3. Ganti BASE64_ENCODED_CERT_STRING dengan output dari perintah cat pada langkah 1.
  4. 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.

  1. Buat file bernama istio-gateway-apim-policy.yaml dengan 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
        
  2. Ganti variabel berikut:
    • ENV_NAME: Nama lingkungan Apigee Hybrid yang Anda buat dengan ekstensi layanan yang diaktifkan, misalnya my-hybrid-env.
    • HOST_NAME: Nama domain yang digunakan untuk grup Lingkungan, misalnya my-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.
  3. Terapkan kebijakan ke cluster Anda:
    kubectl -n apim apply -f istio-gateway-apim-policy.yaml
        
  4. Setelah resource diterapkan, Apigee Operator untuk Kubernetes akan mulai mengonfigurasi resource jaringan gateway. Periksa status APIMExtensionPolicy:
    kubectl -n apim get APIMExtensionPolicy
        
  5. Tunggu hingga STATE menampilkan RUNNING. 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.

  1. 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
        
  2. Kirim permintaan ke endpoint /get yang dikonfigurasi di HTTPRoute Anda:
    curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v
        
  3. Karena defaultSecurityEnabled: true memerlukan 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 APIMExtensionPolicy aktif 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: