Menambahkan kebijakan ke GKE Gateway

Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

Halaman ini menjelaskan cara menambahkan kebijakan runtime Apigee dan Google kebijakan penyisipan token ke Gateway Google Kubernetes Engine (GKE) dengan Apigee APIM Operator untuk Kubernetes. Dengan menambahkan kumpulan kebijakan yang tersedia ke Gateway, Anda dapat memperluas fungsi Gateway di luar penerapan produk API untuk menyertakan aturan bisnis dan keamanan tambahan.

Operator APIM Apigee untuk Kubernetes dapat digunakan untuk menambahkan kebijakan berikut ke Gateway:

Ringkasan

Bagian berikut menjelaskan cara:

Sebelum memulai

Untuk mengubah GKE Gateway dengan kumpulan lengkap kebijakan yang digunakan sebagai contoh dalam panduan ini, Anda harus memiliki akun layanan dengan peran yang diperlukan untuk membuat token dalam Apigee dan men-deploy proxy serta ekstensi. Jika Anda memilih tidak membuat token, Anda tidak perlu menambahkan peran tambahan ke akun layanan dan Anda dapat melanjutkan ke bagian berikutnya. Google

Untuk membuat akun layanan dengan izin yang diperlukan:

  1. Jika Anda membuat akun layanan bernama apigee-apim-gsa di panduan penginstalan Apigee APIM Operator untuk Kubernetes, Anda dapat melewati langkah ini dan melanjutkan ke langkah berikutnya. Jika tidak, buat akun layanan:
    gcloud iam service-accounts create apigee-apim-gsa --project=$PROJECT_ID
  2. Berikan peran yang diperlukan kepada akun layanan untuk membuat token:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID." \
      --role "roles/iam.serviceAccountTokenCreator"
  3. Berikan peran yang diperlukan kepada akun layanan apigee-apim-gsa untuk men-deploy proxy dan ekstensi:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID." \
      --role "roles/iam.serviceAccountUser"

Mengubah Gateway GKE dengan kebijakan

Anda dapat memilih untuk mengubah GKE Gateway dengan satu atau beberapa kebijakan untuk memperluas fungsinya. Panduan contoh ini menerapkan file yaml ke Gateway yang mencakup spesifikasi untuk dua kebijakan Apigee dan kebijakan penyisipan token Google .

Setiap kebijakan yang diterapkan ke Gateway menggunakan file yaml berikut menjalankan peran yang berbeda saat mengevaluasi permintaan yang dikirim ke Gateway:

  • Kebijakan SpikeArrest mengontrol tingkat pesan puncak dengan menentukan tingkat maksimum permintaan yang diizinkan selama jangka waktu tertentu. Dalam contoh ini, kecepatan maksimum ditetapkan ke lima per menit. Untuk mempelajari lebih lanjut cara kebijakan SpikeArrest digunakan untuk meratakan lonjakan traffic yang tiba-tiba, lihat Kebijakan SpikeArrest.
  • Kebijakan JavaScript memungkinkan Anda menambahkan kode JavaScript kustom ke permintaan Gateway. Dalam contoh ini, kebijakan digunakan untuk menambahkan header kustom ke permintaan. Untuk mengetahui lebih lanjut cara kebijakan JavaScript digunakan untuk menambahkan kode kustom, lihat Kebijakan JavaScript.
  • Kebijakan penyisipan token Google digunakan untuk menyisipkan token akses autentikasi Google ke dalam permintaan Gateway, menggunakan kebijakan AssignMessage. Apigee mendukung penggunaan token OAuth atau token OpenID Connect untuk mengautentikasi dengan Google layanan. Google Untuk mempelajari token autentikasi lebih lanjut, lihat Menggunakan autentikasi Google.

Tambahkan kebijakan ke Gateway:

  1. Buat file baru bernama apigee-policies.yaml dalam namespace apim.
  2. Salin konten file berikut ke dalam file baru yang Anda buat:
    # apigee-policies.yaml
    apiVersion: apim.googleapis.com/v1
    kind: SpikeArrest
    metadata:
      name: spike-arrest
      namespace: apim
    spec:
      identifier:
        ref: request.header.name
      useEffectiveCount: true
      peakMessageRate:
        value: "5pm"
    ---
    apiVersion: apim.googleapis.com/v1
    kind: Javascript
    metadata:
      name: js-add-headers
      namespace: apim
    spec:
      timeLimit: 2000
      source: |
        var sum = 1+1;
        context.setVariable("request.header.first", 1);
        context.setVariable("request.header.second", 1);
        context.setVariable("request.header.sum", sum);
    ---
    apiVersion: apim.googleapis.com/v1
    kind: AssignMessage
    metadata:
      name: google-token-policy
      namespace: apim
    spec:
      setActions:
        - authentication:
            googleAccessToken:
              scopes:
                - 'https://www.googleapis.com/auth/cloud-platform'
      AssignTo:
        createNew: false
        type: request
    ---
    apiVersion: apim.googleapis.com/v1
    kind: KVM
    metadata:
      name: kvm-1
      namespace: apim
    spec:
      delete:
      - keys:
        - value: mykey
      exclusiveCache: true
      expiryTimeInSecs: 3600
      get:
      - assignTo: response.header.mykvm
        keys:
        - value: mykey
      initialEntries:
      - keys:
        - key1
        values:
        - val1
      - keys:
        - mykey
        values:
        - initvalue
      isEncrypted: false
      put:
      - keys:
        - value: mykey
        values:
        - value: request.header.mykvm
      scope: environment
    ---
    apiVersion: apim.googleapis.com/v1
    kind: OASValidation
    metadata:
      name: oas-validation-1
      namespace: apim
    spec:
      openApiSpec: |
        openapi: 3.0.4
        info:
          title: Sample API
          description: Optional multi/single line description.
          version: 0.1.9
        servers:
          - url: http://apigee-apim-operator-test.apigee.net
            description: Optional server description, our main host in httproute
        paths:
          /get:
            get:
              summary: just for test
              description: Optional extended description in CommonMark or HTML.
              parameters:
                - name: X-Request-Type
                  in: header
                  description: Must be 'internal' or 'external'.
                  required: true
                  schema:
                    type: string
                    enum:
                      - internal
                      - external
              responses:
                '200': # status code
                  description: A JSON object
                  content:
                    application/json:
                      schema:
                        type: object
                        properties:
                          headers:
                            type: object
      source: request
    ---
    apiVersion: apim.googleapis.com/v1
    kind: ServiceCallout
    metadata:
      name: service-callout-1
      namespace: apim
    spec:
      request:
        clearPayload: true
        variable: myRequest
        ignoreUnresolvedVariables: true
        removeActions:
          - payload: true
          - queryParams:
            - name: rq-param1
            - name: rq-param2
        copyActions:
          - version: true
          - verb: true
        addActions:
          - headers:
            - name: X-header1
              value: value1
            - name: X-header2
              value: value2
          - queryParams:
            - name: q-param1
              value: value1
            - name: q-param2
              value: value2
        setActions:
          - verb: PUT
          - formParams:
            - name: f-param1
              value: value1
            - name: f-param2
              value: value2
      response: calloutResponse
      timeout: 30000
      httpTargetConnection:
        URL: https://httpbin.org/put
        properties:
          - name: success.codes
            value: 1xx,2xx,3xx,400
          - name: supports.http11
            value: "true"
  3. Terapkan file yaml ke Gateway menggunakan perintah berikut:
    kubectl -n apim apply -f apigee-policies.yaml

Membuat TemplateRule sebagai template SharedFlow

Pada langkah ini, Anda akan membuat TemplateRule untuk menerapkan kebijakan yang telah ditambahkan ke Gateway. Aturan template adalah aturan untuk SharedFlows yang dibuat oleh administrator organisasi untuk memastikan bahwa hanya kebijakan yang disetujui yang diterapkan ke traffic Gateway oleh developer layanan. Aturan template memastikan bahwa developer memahami kebijakan mana yang tersedia bagi mereka, kebijakan mana yang diperlukan untuk kasus penggunaan tertentu, dan kebijakan mana yang tidak dapat digunakan oleh developer layanan.

Membuat aturan template

Buat aturan template untuk menerapkan penggunaan kebijakan AssignMessage:

  1. Buat file yaml baru bernama template-rule.yaml di namespace apim.
  2. Salin konten file berikut ke dalam file baru yang Anda buat:
    # template-rule.yaml
    apiVersion: apim.googleapis.com/v1
    kind: ApimTemplateRule
    metadata:
      name: template-rule
      namespace: apim
    spec:
      allowList: [SpikeArrest, Javascript, GenerateJWT, KVM, OASValidation, OAuthv2, ServiceCallout]
      requiredList: [AssignMessage]
      denyList: []

    Dalam contoh ini, aturan template memberi tahu developer bahwa kebijakan AssignMessage yang menjelaskan kebijakan penyisipan token Google diperlukan. Kebijakan ini juga memberi tahu developer bahwa mereka dapat menggunakan kebijakan SpikeArrest, JavaScript, GenerateJWT, KVM, OASValidation, OAuthv2, dan ServiceCallout dalam pengelolaan API mereka. Tidak ada kebijakan yang ditentukan dalam daftar penolakan.

Menerapkan aturan template

Terapkan aturan template menggunakan perintah berikut:

kubectl apply -f template-rule.yaml

Buat template Apigee untuk menggunakan aturan template

Buat template Apigee untuk menyertakan aturan template yang Anda buat di bagian sebelumnya:

  1. Buat file yaml baru bernama new-admin-template.yaml di namespace apim.
  2. Salin konten file berikut ke dalam file baru yang Anda buat:
    # new-admin-template.yaml
    apiVersion: apim.googleapis.com/v1
    kind: ApimTemplate
    metadata:
      name: new-admin-template
      namespace: apim
    spec:
      apimTemplateRule:
        group: apim.googleapis.com
        kind: ApimTemplateRule
        name: template-rule
        namespace: apim
      templates:
      - mode: REQUEST
        flows:
        - name: preflow
          policies:
          - group: apim.googleapis.com
            kind: OASValidation
            name: oas-validation-1
            namespace: apim
          - group: apim.googleapis.com
            kind: SpikeArrest
            name: spike-arrest
            namespace: apim
        - name: ConditionalGetFlow
          policies:
          - group: apim.googleapis.com
            kind: Javascript
            name: js-add-headers
            namespace: apim
          condition: request.verb="GET"
        - name: postflow
          policies:
          - group: apim.googleapis.com
            kind: AssignMessage
            name: google-token-policy
            namespace: apim
          - group: apim.googleapis.com
            kind: ServiceCallout
            name: service-callout-1
            namespace: apim
      - mode: RESPONSE
        flows:
        - name: postflow
          policies:
          - group: apim.googleapis.com
            kind: KVM
            name: kvm-1
            namespace: apim
  3. Terapkan template baru menggunakan perintah berikut:
    kubectl apply -f new-admin-template.yaml

Deploy kebijakan Apigee Gateway

Pada langkah ini, Anda akan menerapkan file baru ke Gateway yang mencakup spesifikasi untuk ApigeeGatewayPolicy. Kebijakan ini digunakan untuk men-deploy template Apigee ke Gateway.

Deploy kebijakan Apigee Gateway:

  1. Buat file yaml baru bernama apigee-gateway-policy-withSA.yaml di namespace apim.
  2. Salin konten file berikut ke dalam file baru yang Anda buat:
    # apigee-gateway-policy-withSA.yaml
    apiVersion: apim.googleapis.com/v1
    kind: ApigeeGatewayPolicy
    metadata:
      name: apim-template-injection
      namespace: apim
    spec:
      serviceAccount: apigee-apim-gsa@PROJECT_ID.
      ref:
        group: apim.googleapis.com
        kind: ApimTemplate
        name: new-admin-template
        namespace: apim
      targetRef:
        group: apim.googleapis.com
        kind: APIMExtensionPolicy
        name: global-ext-lb1-apim-policy
        namespace: apim
  3. Terapkan kebijakan:
    kubectl apply -f apigee-gateway-policy-withSA.yaml
  4. Verifikasi status deployment kebijakan Gateway baru:
    kubectl -n apim get ApigeeGatewayPolicy

    Setelah di-deploy, kebijakan STATUS akan menampilkan CREATED.

Setelah kebijakan Gateway baru di-deploy, tunggu dua menit sebelum mengirim permintaan ke Gateway agar kebijakan tersebut dapat diterapkan ke cluster.

Memvalidasi penegakan kebijakan

Untuk mengonfirmasi bahwa kebijakan Apigee Gateway berfungsi seperti yang diharapkan, kirim permintaan ke Gateway seperti yang dijelaskan di bagian berikut.

Penerapan kebijakan AssignMessage

Untuk mengonfirmasi bahwa token {company_name} disisipkan ke dalam permintaan menggunakan kebijakan AssignMessage, kirim permintaan ke Gateway menggunakan perintah berikut:

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:
    kubectl get gateway GATEWAY_NAME
  • HOST_NAME adalah nama host.
  • API_KEY adalah nilai kunci API.

Respons yang berhasil harus menyertakan header Authorization dengan token pembawa yang dibuat, mirip dengan berikut ini:

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Authorization": "Bearer ya29.c.c0ASRK0Gbw03y9cfvxL11DxaRYBQUU18SmUP4Vu63OckHI5cX7wJ4DmGMG2vbDDS69HXJHqMj-lak4tcqOsJGmE65crn2gNuJLanXidwM8",
    "First": "1.0",
    "Host": "apigee-apim-operator-test.apigee.net",
    "Second": "1.0",
    "Sum": "2",
    "User-Agent": "curl/8.7.1",
    "X-Api-Key": "McYcHGR3PTSGLXExvKADwQ1JJeCjgPDUvAakCl0rJKCFaX0Y",
    "X-Cloud-Trace-Context": "0fd3dadc2a3c328fa968d5f5f1434c29/18300783092696918345"
  },
  "origin": "34.54.108.129",
  "url": "apigee-apim-operator-test.apigee.net/get"
}

Penerapan kebijakan SpikeArrest

Anda dapat menguji penerapan kebijakan SpikeArrest dengan mengirimkan permintaan 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, dengan GATEWAY_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 dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Respons akan muncul seperti berikut:

"fault":{"faultstring":"Spike arrest violation. Allowed rate : MessageRate{capacity=5, period=Minutes}","detail":{"errorcode":"policies.ratelimit.SpikeArrestViolation"}}}

Penegakan kebijakan JavaScript

Untuk mengonfirmasi bahwa kebijakan JavaScript berfungsi seperti yang diharapkan, kirim permintaan ke Gateway menggunakan perintah berikut:

curl http://GATEWAY_IP_ADDRESS/get \
  -H "Host: HOST_NAME" \
  -H "x-api-key: API_KEY" \
  -H "X-Request-Type: external" -i

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_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 dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Kebijakan JavaScript menetapkan tiga header permintaan: First, Second, dan Sum, seperti yang terlihat dalam respons:

HTTP/1.1 200 OK
...
{
  "args": {},
  "headers": {
    ...
    "First": "1.0",
    ...
    "Second": "1.0",
    "Sum": "2",
    ...
  },
  ...
}

Penerapan kebijakan OASValidation

Untuk mengonfirmasi bahwa kebijakan OASValidation berfungsi seperti yang diharapkan, kirim permintaan ke Gateway menggunakan perintah berikut:

curl "http://GATEWAY_IP_ADDRESS/get"  \
  -H "Host: HOST_NAME" \
  -H "x-api-key: API_KEY" \
  -H "X-Request-Type: badvalue"

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_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 dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Perintah menyertakan nilai yang tidak valid untuk header X-Request-Type. Permintaan akan gagal dengan respons yang mirip dengan berikut ini:

{"fault":{"faultstring":"OASValidation oas-validation-1 with resource \"oas:\/\/oas-validation-1.yaml\": failed with reason: \"[ERROR - Instance value (\"badvalue\") not found in enum (possible values: [\"internal\",\"external\"]): []]\"","detail":{"errorcode":"steps.oasvalidation.Failed"}}}

Mengirim permintaan yang sama dengan nilai yang valid untuk header X-Request-Type akan berhasil. Contoh:

curl "http://GATEWAY_IP_ADDRESS/get"  \
  -H "Host: HOST_NAME" \
  -H "x-api-key: API_KEY" \
  -H "X-Request-Type: external" -i

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_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 dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Penerapan kebijakan ServiceCallout

Anda dapat memverifikasi penegakan kebijakan ServiceCallout dengan membuka sesi debug dan mengirim beberapa permintaan yang valid ke proxy.

Untuk membuka sesi debug, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman API Proxies.

    Buka Proxy API

  2. Pilih proxy global-ext-lb1-apim-policy yang Anda deploy ke lingkungan yang dibuat untuk Apigee APIM Operator for Kubernetes.
  3. Klik tab Debug.
  4. Di jendela Debug session, klik Start Debug Session.
  5. Di panel Debug session, lakukan pilihan berikut:
    • Lingkungan: Pilih lingkungan yang Anda buat untuk Operator APIM dari daftar lingkungan yang tersedia.
    • Filter: Pilih Tidak Ada (Semua transaksi).
  6. Klik Mulai.

Setelah sesi dimulai, Anda dapat mengirim permintaan yang valid ke proxy:

curl "GATEWAY_IP_ADDRESSget"  \
  -H "Host: HOST_NAME" \
  -H "x-api-key: API_KEY" \
  -H "X-Request-Type: external" -i

Dengan:

  • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_NAME adalah nama Gateway:
    kubectl get gateway GATEWAY_NAME
  • HOST_NAME adalah nama host yang ditentukan dalam HTTPRoute Gateway.
  • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.

Transaksi permintaan dan respons ditampilkan di panel Transactions. Pilih transaksi yang berhasil dari daftar untuk menampilkan alurnya. Anda akan dapat melihat bahwa kebijakan ServiceCallout berhasil dieksekusi.

Penegakan kebijakan KVM

Jika kebijakan KVM berhasil dijalankan, KVM akan diinisialisasi dengan nilai awal untuk kunci mykey. Saat ada transaksi respons, kebijakan KVM akan mengambil nilai mykey dan menyimpannya di header respons mykvm. Saat kebijakan KVM dieksekusi lagi, kebijakan tersebut akan menyisipkan nilai baru untuk mykey yang diperoleh dari header permintaan mykvm.

Anda dapat memeriksa header untuk setiap transaksi guna mengonfirmasi bahwa kebijakan menyimpan nilai di KVM dalam satu transaksi dan mengambil nilai yang sama dalam transaksi berikutnya, seperti yang ditunjukkan dalam contoh berikut.

Uji kebijakan KVM:

  1. Kirim permintaan ke Gateway:
    curl -i "http://GATEWAY_IP_ADDRESS/get" \
      -H "Host: HOST_NAME" \
      -H "x-api-key: API_KEY" \
      -H "X-Request-Type: external" \
      -H "KVM_NAME: next-value1" -i

    Dengan:

    • GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_NAME adalah nama Gateway:
      kubectl get gateway GATEWAY_NAME
    • HOST_NAME adalah nama host yang ditentukan dalam HTTPRoute Gateway.
    • API_KEY adalah nilai kunci API yang diperoleh di Pengujian penyiapan.
    • KVM_NAME adalah nama KVM.

  2. Periksa header respons untuk mengonfirmasi bahwa kebijakan KVM berhasil dieksekusi dan nilai awal disimpan untuk mykvm. Responsnya akan terlihat seperti berikut:
    HTTP/1.1 200 OK
    access-control-allow-credentials: true
    access-control-allow-origin: *
    Content-Length: 517
    content-type: application/json
    date: ...
    server: gunicorn/19.9.0
    mykvm: initvalue
    via: 1.1 google
    {
      "args": {
      ...
      "url": "http://apigee-apim-operator-test.apigee.net/get"
      }
    }
  3. Kirim permintaan lain ke Gateway:
    curl -i "http://GATEWAY_IP_ADDRESS/get" \
      -H "Host: HOST_NAME" \
      -H "x-api-key: API_KEY" \
      -H "mykvm: next"X-Request-Type: external" -H "mykvm: next-value2" -i

    Responsnya akan mirip dengan berikut ini:

    HTTP/1.1 200 OK
    access-control-allow-credentials: true
    access-control-allow-origin: *
    Content-Length: 517
    content-type: application/json
    date: ...
    server: gunicorn/19.9.0
    mykvm: next-value2
    via: 1.1 google
    {
      "args": {
      ...
      "url": "http://apigee-apim-operator-test.apigee.net/get?rq-param2=rq-val1&x-param1=xval1"
      }
    }

    Anda dapat melihat bahwa kebijakan KVM berhasil dieksekusi karena nilai header mykvm diperbarui ke nilai header permintaan mykvm.

  4. Kirim satu permintaan lagi:
    curl -i "http://GATEWAY_IP_ADDRESS/get" \
      -H "Host: HOST_NAME" \
      -H "x-api-key: API_KEY" \
      -H "X-Request-Type: external" -H "mykvm: next-value3" -i

    Responsnya akan mirip dengan berikut ini:

    HTTP/1.1 200 OK
    access-control-allow-credentials: true
    access-control-allow-origin: *
    Content-Length: 517
    content-type: application/json
    date: ...
    server: gunicorn/19.9.0
    mykvm: next-value2
    via: 1.1 google
    {
      "args": {
      ...
      "url": "http://apigee-apim-operator-test.apigee.net/get?rq-param2=rq-val1&x-param1=xval1"
      }
    }

    Nilai header mykvm diperbarui lagi, yang menunjukkan bahwa nilai yang ditampilkan dalam respons adalah nilai yang disimpan dalam transaksi sebelumnya.

Memecahkan masalah

Jika Anda mengalami masalah saat menambahkan kebijakan ke GKE Gateway, lihat Memecahkan masalah Operator APIM untuk mengetahui solusi atas error umum.

Langkah berikutnya