Langkah 10 (Opsional): Konfigurasikan Workload Identity di GKE

GKE dengan Workload Identity saja: Mengonfigurasi Workload Identity

Ikuti langkah-langkah berikut jika Anda menyiapkan file pengganti untuk Workload Identity di GKE di Langkah 6: Konfigurasi cluster.

Jika Anda tidak menggunakan Workload Identity di GKE, lanjutkan ke Bagian 3, Langkah 1: Ekspos gateway masuk Apigee.

Akun layanan Google Cloud dan akun layanan Kubernetes

Akun layanan Google Cloud adalah jenis akun khusus yang dapat digunakan untuk panggilan API dengan mengautentikasi sebagai akun layanan itu sendiri. Akun layanan Google Cloud dapat peran dan izin tertentu yang mirip dengan pengguna individu. Ketika sebuah aplikasi melakukan otentikasi sebagai akun layanan, akses ke semua resource yang dapat diakses oleh akun layanan. Jika Anda ingin mempelajari lebih lanjut akun layanan Google Cloud, lihat Ringkasan akun layanan.

Anda telah membuat akun layanan Google Cloud untuk penginstalan hybrid Apigee pada Langkah 4: Buat akun layanan. Apigee menggunakan layanan ini akun untuk mengotentikasi komponen hibrida.

Akun layanan Kubernetes mirip dengan akun layanan Google Cloud. Layanan Kubernetes memberikan identitas untuk proses yang berjalan di Pod, dan memungkinkannya melakukan autentikasi ke Server API serupa dengan pengguna. Jika Anda ingin mempelajari lebih lanjut akun layanan Kubernetes, lihat Konfigurasi Akun Layanan untuk Pod.

Alat apigeectl membuat sebagian besar akun layanan Kubernetes yang diperlukan oleh Apigee Hybrid saat Anda menjalankan apigeectl apply di prosedur sebelumnya.

Saat mengonfigurasi Workload Identity di GKE, Anda mengaitkan akun layanan Google Cloud dengan akun layanan Kubernetes di cluster Kubernetes. Dengan begitu, layanan Kubernetes dapat meniru akun layanan Google Cloud dan menggunakan peran yang ditetapkan serta izin akses untuk mengotentikasi dengan komponen hybrid.

Ikuti petunjuk ini untuk mengonfigurasi Workload Identity untuk project Anda.

Persiapan untuk mengonfigurasi Workload Identity

Prosedur ini menggunakan variabel lingkungan berikut. Periksa apakah mereka telah ditetapkan dan mendefinisikan setiap peristiwa yang tidak:

echo $APIGEECTL_HOME
echo $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $PROJECT_ID
echo $ORG_NAME
  1. Pastikan konfigurasi gcloud saat ini disetel ke project ID Google Cloud Anda dengan perintah berikut:
    gcloud config get project
  2. Jika perlu, setel konfigurasi gcloud saat ini:

    gcloud config set project $PROJECT_ID
  3. Buat akun layanan Kubernetes apigee-cassandra-restore.

    Ketika Anda menerapkan konfigurasi dengan menjalankan apigeectl apply, perintah membuat sebagian besar akun layanan Kubernetes yang diperlukan untuk Workload Identity.

    Untuk membuat akun layanan Kubernetes apigee-cassandra-restore, jalankan apigeectl apply dengan flag --restore:

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  4. Pastikan Workload Identity sudah aktif untuk Cluster GKE Anda. Saat Anda membuat cluster pada Langkah 1: Membuat cluster, langkah 6 adalah Mengaktifkannya Workload Identity. Anda dapat mengonfirmasi apakah Workload Identity diaktifkan dengan menjalankan perintah berikut berikut:

    Cluster regional

    gcloud container clusters describe $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Cluster zona

    gcloud container clusters describe $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Output Anda akan terlihat seperti berikut:

      ---
      workloadPool: PROJECT_ID.svc.id.goog

    Jika Anda melihat null dalam hasil Anda, jalankan perintah berikut untuk mengaktifkan Workload Identity untuk cluster Anda:

    Cluster regional

    gcloud container clusters update $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --project $PROJECT_ID \
      --region $CLUSTER_LOCATION

    Cluster zona

    gcloud container clusters update  $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID
  5. Aktifkan Workload Identity untuk setiap node pool dengan perintah berikut. Operasi ini dapat memerlukan waktu hingga 30 menit untuk setiap node:

    Cluster regional

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Cluster zona

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Dengan NODE_POOL_NAME adalah nama setiap kumpulan node. Di sebagian besar Apigee Hybrid penginstalan, dua kumpulan node default bernama apigee-data dan apigee-runtime.

  6. Pastikan Workload Identity diaktifkan pada kumpulan node Anda dengan perintah berikut:

    Cluster regional

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    Cluster zona

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    Output Anda akan terlihat seperti:

    ---
    diskSizeGb: 100
    diskType: pd-standard
    ...
    workloadMetadataConfig:
      mode: GKE_METADATA
        
  7. Dapatkan daftar nama akun layanan Google Cloud untuk project Anda. Anda akan membutuhkannya nama klien untuk mengaitkan akun layanan Kubernetes untuk mengonfigurasi Workload Identity. Sebagai penginstalan non-produksi, hanya boleh ada satu akun layanan Google. Untuk produksi instalasi harus ada delapan.

    Gunakan perintah berikut untuk mendapatkan daftar nama:

    gcloud iam service-accounts list --project $PROJECT_ID

    Output Anda akan terlihat seperti:

    Non-produk

    Untuk lingkungan non-produksi:

    DISPLAY NAME         EMAIL                                                      DISABLED
    apigee-non-prod      apigee-non-prod@my_project_id.      False
    

    Produksi

    Untuk lingkungan non-produksi:

    DISPLAY NAME         EMAIL                                                      DISABLED
    apigee-cassandra     apigee-cassandra@my_project_id.     False
    apigee-logger        apigee-logger@my_project_id.        False
    apigee-mart          apigee-mart@my_project_id.          False
    apigee-metrics       apigee-metrics@my_project_id.       False
    apigee-runtime       apigee-runtime@my_project_id.       False
    apigee-synchronizer  apigee-synchronizer@my_project_id.  False
    apigee-udca          apigee-udca@my_project_id.          False
    apigee-watcher       apigee-watcher@my_project_id.       False
    
  8. Mendapatkan daftar nama akun layanan Kubernetes. Anda akan membutuhkan daftar nama ini untuk dengan akun layanan Google Cloud Anda nanti dalam prosedur ini. Gunakan perintah berikut:
    kubectl get sa -n $NAMESPACE

    Output Anda akan terlihat seperti berikut. Akun layanan Kubernetes di bold adalah nama yang harus Anda kaitkan dengan akun layanan Google Cloud Anda:

    NAME                                                         SECRETS   AGE
    apigee-cassandra-backup                                      1         11m
    apigee-cassandra-restore                                     1         11m
    apigee-cassandra-schema-setup-my-project-id-123abcd-sa       1         11m
    apigee-cassandra-schema-val-my-project-id-123abcd            1         11m
    apigee-cassandra-user-setup-my-project-id-123abcd-sa         1         11m
    apigee-connect-agent-my-project-id-123abcd-sa                1         11m
    apigee-datastore-default-sa                                  1         11m
    apigee-ingressgateway                                        1         11m
    apigee-ingressgateway-my-project-id-123abcd                  1         11m
    apigee-ingressgateway-manager                                1         11m
    apigee-init                                                  1         11m
    apigee-mart-my-project-id-123abcd-sa                         1         11m
    apigee-metrics-sa                                            1         11m
    apigee-mint-task-scheduler-my-project-id-123abcd-sa          1         11m
    apigee-redis-default-sa                                      1         11m
    apigee-redis-envoy-default-sa                                1         11m
    apigee-runtime-my-project-id-env-name-234bcde-sa             1         11m
    apigee-synchronizer-my-project-id-env-name-234bcde-sa        1         11m
    apigee-udca-my-project-id-123abcd-sa                         1         11m
    apigee-udca-my-project-id-env-name-234bcde-sa                1         11m
    apigee-watcher-my-project-id-123abcd-sa                      1         11m
    default                                                      1         11m
        

Mengonfigurasi Workload Identity

Gunakan prosedur berikut guna mengaktifkan Workload Identity untuk penginstalan Hybrid Anda:

  1. Untuk setiap komponen Apigee, anotasikan akun layanan Kubernetes yang sesuai dengan tag Akun layanan Google untuk komponen tersebut.

    Langkah-langkah berikut menggunakan dua variabel lingkungan. Anda akan mereset nilai variabel sebelum setiap set perintah:

    • GSA_NAME: Nama akun layanan Google. Berikut adalah akun layanan yang Anda buat dengan alat create-service-account di Langkah 4: Buat akun layanan.
    • KSA_NAME: Nama akun layanan Kubernetes. Berikut adalah akun yang tercantum di atas dengan kubectl get sa -n $NAMESPACE , misalnya: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
    • Cassandra

      Mengonfigurasi Workload Identity untuk komponen Cassandra.

      Komponen Cassandra memiliki enam akun layanan Kubernetes terkait:

      • apigee-cassandra-backup
      • apigee-cassandra-restore
      • apigee-cassandra-schema-setup
      • apigee-cassandra-schema-val (val = validasi)
      • apigee-cassandra-user-setup
      • apigee-datastore-default

      Non-produk

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-backup

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

        Output Anda harus memiliki baris yang menjelaskan anotasi, mirip dengan:

        Annotations:         iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-restore

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-schema-setup

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        misalnya: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-schema-val

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        misalnya: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-user-setup

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        misalnya: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-datastore-default-sa

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-datastore-default-sa"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-backup

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. Output Anda harus memiliki baris yang menjelaskan anotasi, mirip dengan:

        Annotations:         iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.
      6. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-restore

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-schema-setup

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        misalnya: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:

        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-schema-val

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        misalnya: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-cassandra-user-setup

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        misalnya: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Mengonfigurasi akun layanan Kubernetes apigee-datastore-default-sa

      1. Tentukan ulang variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-datastore-default-sa"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Mengonfigurasi Workload Identity untuk komponen Apigee Connect.

      Non-produk

      1. Tentukan variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        misalnya: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:
        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        misalnya: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Mengonfigurasi Workload Identity untuk komponen MART.

      Non-produk

      1. Tentukan variabel lingkungan KSA_NAME:

        KSA_NAME="apigee-mart-service-account-name-sa"
        misalnya: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-mart-service-account-name-sa"
        misalnya: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Metrik Apigee

      Mengonfigurasi Workload Identity untuk komponen metrik Apigee.

      Non-produk

      1. Tentukan KSA_NAMEvariabel lingkungan:

        KSA_NAME="apigee-metrics-sa"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-metrics"
        KSA_NAME="apigee-metrics-sa"
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
        $GSA_NAME@$PROJECT_ID. \
        --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
        --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (tingkat organisasi)

      Mengonfigurasi Workload Identity untuk komponen UDCA tingkat organisasi.

      UDCA diterapkan baik dalam cakupan tingkat organisasi maupun tingkat lingkungan. Oleh karena itu, ada dua akun layanan Kubernetes terpisah untuk UDCA, satu untuk setiap cakupan. Anda dapat membedakannya berdasarkan nama akun. Akun {i>env-scope<i} mencakup lingkungan dalam nama akun layanan. Contoh:

      • Tingkat organisasi: apigee-udca-my-project-id-123abcd-sa tempat my-project-id adalah nama project ID.
      • Tingkat Env: apigee-udca-my-project-id-my-env-234bcde-sa dengan my-env adalah nama lingkungannya.

      Non-produk

      1. Tentukan KSA_NAMEvariabel lingkungan:

        KSA_NAME="apigee-udca-service-account-name-sa"
        misalnya: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
          gcloud iam service-accounts add-iam-policy-binding \
            --role roles/iam.workloadIdentityUser \
            --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
            $GSA_NAME@$PROJECT_ID. \
            --project $PROJECT_ID
      3. Anotasikan akun layanan:
          kubectl annotate serviceaccount \
            --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-service-account-name-sa"
        misalnya: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Mengonfigurasi Workload Identity untuk komponen Apigee Watcher.

      Non-produk

      1. Tentukan KSA_NAMEvariabel lingkungan:

        KSA_NAME="apigee-watcher-service-account-name-sa"
        misalnya: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-watcher"
        KSA_NAME="apigee-watcher-service-account-name-sa"
        misalnya: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Runtime

      Mengonfigurasi Workload Identity untuk komponen Runtime Apigee.

      Non-produk

      1. Tentukan KSA_NAMEvariabel lingkungan:

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        misalnya: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-runtime"
        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        misalnya: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Sinkronisasi

      Mengonfigurasi Workload Identity untuk komponen Synchronizer.

      Non-produk

      1. Tentukan KSA_NAMEvariabel lingkungan:

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        misalnya: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-synchronizer"
        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        misalnya: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (tingkat env)

      Mengonfigurasi Workload Identity untuk komponen UDCA tingkat lingkungan.

      Non-produk

      1. Tentukan KSA_NAMEvariabel lingkungan:

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        misalnya: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      1. Tentukan variabel lingkungan KSA_NAME dan GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        misalnya: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Ikat peran IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID. \
          --project $PROJECT_ID
      3. Anotasikan akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  2. Opsional: Hapus semua file kunci akun layanan yang didownload.

    Jika Anda membuat akun layanan Google dengan alat create-service-account, perangkat tersebut mungkin telah membuat kunci akun layanan dan mendownload file kunci .json. Kapan menggunakan Workload Identity di GKE, Anda tidak memerlukan file kunci ini.

    Anda dapat menghapus file kunci dengan perintah berikut:

    rm $HYBRID_FILES/service-accounts/*.json

Memverifikasi Workload Identity

  1. (Opsional) Anda dapat melihat status akun layanan Kubernetes di Kubernetes: Workloads Overview di Google Cloud Console.

    Buka Workloads

  2. Untuk memeriksa kembali status deployment dengan apigeectl check-ready:
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
(BERIKUTNYA) Langkah 1: Ekspos traffic masuk Apigee 2