Menginstal Apigee Operator untuk Kubernetes

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

Lihat dokumentasi Apigee Edge.

Halaman ini menjelaskan langkah-langkah untuk menginstal dan mengonfigurasi Apigee Operator untuk Kubernetes. Untuk mempelajari lebih lanjut manfaat penggunaan Apigee Operator untuk Kubernetes, lihat Ringkasan Apigee Operator untuk Kubernetes.

Sebelum memulai

Sebelum menginstal Apigee Operator untuk Kubernetes, pastikan Anda memiliki peran dan izin yang diperlukan untuk menyelesaikan langkah-langkahnya dan Anda telah menyelesaikan tugas prasyarat yang dijelaskan dalam Apigee Operator untuk Kubernetes: Sebelum memulai.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menginstal Apigee Operator untuk Kubernetes, minta administrator Anda untuk memberi Anda peran IAM berikut pada organisasi:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Menginstal dan mengonfigurasi Operator Apigee untuk Kubernetes

Bagian berikut menjelaskan langkah-langkah untuk menginstal dan mengonfigurasi Apigee Operator untuk Kubernetes:

  1. Tetapkan variabel lingkungan.
  2. Aktifkan API yang diperlukan.
  3. Mengambil dan mengonfigurasi kredensial.
  4. Buat identitas workload.
  5. Instal Apigee Operator untuk Kubernetes.
  6. Buat lingkungan Apigee.
  7. Verifikasi penyiapan GKE Gateway.

Menetapkan variabel lingkungan

Di project Google Cloud yang berisi instance Apigee Anda, gunakan perintah berikut untuk menetapkan variabel lingkungan:

export PROJECT_ID=PROJECT_ID
export CLUSTER_NAME=CLUSTER_NAME
export REGION=REGION
export APIGEE_ORG=APIGEE_ORG

Dengan:

  • PROJECT_ID adalah ID project dengan instance Apigee Anda.
  • CLUSTER_NAME adalah nama cluster GKE Anda.
  • REGION adalah region cluster GKE Anda.
  • APIGEE_ORG ditetapkan ke nilai yang sama dengan PROJECT_ID.

Untuk mengonfirmasi bahwa variabel lingkungan sudah ditetapkan dengan benar, jalankan perintah berikut:

echo $PROJECT_ID $CLUSTER_NAME $REGION $APIGEE_ORG

Aktifkan API yang diperlukan

Apigee Operator untuk Kubernetes memerlukan akses ke API berikut:

Nama Judul
apigee.googleapis.com API Apigee
compute.googleapis.com Compute Engine API
networkservices.googleapis.com Network Services API
container.googleapis.com Kubernetes Engine API

Gunakan perintah berikut untuk mengonfirmasi bahwa API yang diperlukan telah diaktifkan:

gcloud services list --project=$PROJECT_ID

Jika Anda tidak melihat API yang diperlukan tercantum dalam output perintah, aktifkan API tersebut:

gcloud services enable apigee.googleapis.com --project=$PROJECT_ID
gcloud services enable compute.googleapis.com --project=$PROJECT_ID
gcloud services enable networkservices.googleapis.com --project=$PROJECT_ID
gcloud services enable container.googleapis.com --project=$PROJECT_ID

Mengambil dan mengonfigurasi kredensial

Ambil kredensial cluster Anda dan buat akun layanan untuk terhubung ke layanan Google Cloud :

  1. Dapatkan kredensial cluster menggunakan perintah berikut:

    gcloud container clusters get-credentials $CLUSTER_NAME --location=$REGION --project=$PROJECT_ID

    Kredensial ini berkomunikasi dengan cluster GKE yang dibuat pada langkah prasyarat.

  2. Siapkan Kredensial Akun Layanan untuk terhubung ke layanan Google Cloud :
    gcloud iam service-accounts create apigee-apim-gsa
  3. Berikan peran dan izin yang diperlukan ke akun layanan yang Anda buat menggunakan perintah berikut:
    • Peran Admin Apigee: Diperlukan untuk membuat dan mengelola resource Apigee.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/apigee.admin"
    • Peran admin ekstensi layanan: Diperlukan untuk membuat dan mengelola ekstensi layanan.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/networkservices.serviceExtensionsAdmin"
    • Peran admin jaringan: Diperlukan untuk mengelola akses ke Apigee menggunakan ekstensi layanan.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/compute.networkAdmin"
    • Peran admin load balancer: Diperlukan untuk mengelola akses antara grup endpoint jaringan (NEG) dan layanan backend.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/compute.loadBalancerAdmin"
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/iam.workloadIdentityUser"

Membuat workload identity

Penginstalan helm Apigee Operator untuk Kubernetes pada langkah berikutnya akan membuat akun layanan Kubernetes (KSA) yang diperlukan bernama apim-ksa di namespace apim. Saat dibuat, KSA berisi anotasi yang diperlukan untuk dikaitkan dengan identitas workload yang digunakan oleh Apigee Operator untuk Kubernetes guna mengakses resource Apigee dan Service Networking yang diperlukan.

Untuk membuat workload identity, gunakan perintah berikut:

gcloud iam service-accounts add-iam-policy-binding apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --role roles/iam.workloadIdentityUser --member "serviceAccount:$PROJECT_ID.svc.id.goog[apim/apim-ksa]"

Perintah ini mengikat KSA dengan akun layanan Google yang Anda buat di Mengambil dan mengonfigurasi kredensial dan menetapkan peran workloadIdentityUser.

Mungkin perlu waktu beberapa menit, bahkan hingga 7 menit atau lebih, agar perubahan identitas beban kerja diterapkan di seluruh sistem. Anda akan memverifikasi identitas ini di langkah berikutnya setelah operator diinstal.

Menginstal Definisi Resource Kustom (CRD) dan Operator Apigee untuk Kubernetes

Instal Definisi Resource Kustom (CRD) Kubernetes dan Apigee Operator untuk Kubernetes:

  1. Buat namespace untuk Apigee Operator for Kubernetes:
    kubectl create ns apim
  2. Instal CRD Apigee Operator untuk Kubernetes:
    helm install apigee-apim-crds -n apim \
      oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds \
      --version 1.1.1 \
      --atomic
  3. Instal Apigee Operator untuk Kubernetes:
    helm install apigee-apim-operator -n apim \
      oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm \
      --version 1.1.1 \
      --set projectId=$PROJECT_ID \
      --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \
      --set apigeeOrg=$PROJECT_ID \
      --set generateEnv=ENV_GENERATION_MODE \
      --atomic

    Ganti ENV_GENERATION_MODE dengan TRUE jika Anda ingin operator membuat lingkungan Apigee baru saat Apigee Operator untuk Kubernetes diinstal. Tetapkan ENV_GENERATION_MODE ke FALSE jika Anda ingin membuat lingkungan secara manual setelah operator diinstal. Lihat Membuat lingkungan Apigee untuk mengetahui informasi selengkapnya.

  4. Pastikan penginstalan berhasil diselesaikan:
    helm list -n apim

    Output-nya akan terlihat seperti berikut:

    NAME                  NAMESPACE REVISION  UPDATED                                 STATUS    CHART                           APP VERSION
    apigee-apim-crds      apim      1         2025-02-01 00:17:03.399810627 +0000 UTC deployed  apigee-apim-operator-crds-1.1.1 1.1.1
    apigee-apim-operator  apim      1         2025-02-01 00:15:00.362829981 +0000 UTC deployed  apigee-apim-operator-helm-1.1.1 1.1.1   
  5. Konfirmasi bahwa KSA dibuat dengan anotasi yang diperlukan:
    kubectl describe serviceaccounts apim-ksa -n apim

    Output-nya akan terlihat seperti berikut:

    Name:                apim-ksa
    Namespace:           apim
    ...
    Annotations:         iam.gke.io/gcp-service-account: apigee-apim-gsa@my-project-id.iam.gserviceaccount.com
  6. Pastikan operator APIM sudah aktif dan berjalan di pod cluster:
    kubectl get pods -n apim

    Output-nya akan terlihat seperti berikut:

    NAME                                    READY   STATUS    RESTARTS     AGE
    apigee-apim-operator-8559d4994b-h55fl   1/1     Running   0            8m34s
    

    Jika STATUS bukan Running, atau READY tidak menampilkan 1/1, lihat Memecahkan masalah Apigee Operator untuk Kubernetes untuk memecahkan masalah penginstalan.

  7. Untuk mengonfirmasi bahwa identitas beban kerja dikonfigurasi dengan benar, gunakan perintah berikut:
    gcloud config set project $PROJECT_ID
    kubectl run --rm -it --image google/cloud-sdk:slim \
      --namespace apim workload-identity-test \
      --overrides='{ "spec": { "serviceAccountName": "apim-ksa" } }'  \
      -- gcloud auth list

    Output-nya akan terlihat seperti berikut:

    Credentialed Accounts
      ACTIVE  ACCOUNT
      *       GSA@$PROJECT_ID.iam.gserviceaccount.com

Membuat lingkungan Apigee

Jika Anda menginstal Apigee Operator untuk Kubernetes menggunakan generateEnv=TRUE pada langkah sebelumnya, operator akan membuat lingkungan Apigee baru saat kebijakan Ekstensi APIM dibuat dan diterapkan. Nama lingkungan baru memiliki awalan: apim-enabled-dep-env.

Jika Anda menginstal Apigee Operator untuk Kubernetes dengan generateEnv=FALSE, Anda harus membuat lingkungan Apigee baru:

  1. Tetapkan TOKEN yang diperlukan untuk perintah curl:
    export TOKEN=$(gcloud auth print-access-token)
  2. Buat lingkungan menggunakan salah satu perintah berikut:
    • Untuk organisasi Subscription 2021 dan 2024:
      curl -i -X POST "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H \
        "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
          -d '{
            "name": "ENV_NAME",
            "displayName": "ENV_NAME",
            "state": "ACTIVE",
            "deploymentType": "PROXY",
            "apiProxyType": "PROGRAMMABLE",
            "properties": {
              "property": [
                {
                  "name": "apigee-service-extension-enabled",
                  "value": "true"
                }
              ]
            }
        }'

      Dengan ENV_NAME adalah nama lingkungan yang akan dibuat.

    • Untuk organisasi dengan paket Bayar sesuai penggunaan:
      curl -i -X POST -H "Authorization: Bearer $TOKEN"  "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H "Content-Type:application/json" -d '{
        "name": "ENV_NAME",
        "displayName": "ENV_NAME",
        "state": "ACTIVE",
        "deploymentType": "PROXY",
        "apiProxyType": "PROGRAMMABLE",
        "type" : "COMPREHENSIVE",
        "properties": {
          "property": [
            {
              "name": "apigee-service-extension-enabled",
              "value": "true"
            }
          ]
        }
      }'

      Dengan:

      • ENV_NAME adalah nama lingkungan yang akan dibuat.

    Untuk memeriksa apakah lingkungan berhasil dibuat:

    curl -i -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments"

  3. Lampirkan lingkungan ke instance Apigee Anda:
    curl -i -X POST -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/instances/INSTANCE_NAME/attachments" \
      -H "Content-Type:application/json" -d '{"environment": "ENV_NAME"}'

    Dengan:

    • INSTANCE_NAME adalah nama instance Apigee Anda.
    • ENV_NAME adalah nama lingkungan yang Anda buat di langkah sebelumnya.

    Untuk memeriksa status operasi lampiran lingkungan:

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/operations/OPERATION_ID"

    Dengan OPERATION_ID adalah ID operasi lampiran lingkungan.

Memecahkan masalah

Jika Anda mengalami masalah saat menginstal Apigee Operator untuk Kubernetes, lihat Memecahkan masalah Apigee Operator untuk Kubernetes untuk mengetahui solusi atas error umum.

Langkah berikutnya

Buat ekstensi layanan traffic menggunakan APIMExtensionPolicy atau ApigeeBackendService: