Langkah 9: Instal runtime hybrid

Terapkan konfigurasi ke cluster

Gunakan langkah-langkah berikut untuk menginstal Apigee Hybrid ke dalam cluster Anda:

  1. Pastikan Anda berada di direktori hybrid-base-directory/hybrid-files.
    cd $HYBRID_FILES
  2. Pastikan kubectl disetel ke konteks yang benar menggunakan perintah berikut. Konteks saat ini harus disetel ke cluster tempat Anda men-deploy Apigee hybrid.
    kubectl config current-context

    Hasilnya harus menyertakan nama cluster tempat Anda men-deploy Apigee hybrid. Misalnya, di GKE, nama konteks biasanya dalam bentuk gke_project-id_cluster-location_cluster-name, seperti dalam:

    gke_my-project_us-central1_my-cluster

    Jika nama cluster dalam konteks tidak cocok, perintah berikut akan mendapatkan kredensial gcloud cluster dan menetapkan konteks kubectl:

    Cluster regional

    gcloud container clusters get-credentials $CLUSTER_NAME \
    --region $CLUSTER_LOCATION \
    --project $PROJECT_ID

    Cluster zona

    gcloud container clusters get-credentials $CLUSTER_NAME \
    --zone $CLUSTER_LOCATION \
    --project $PROJECT_ID
  3. Khusus untuk platform Anthos di bare metal, AWS di GKE, EKS, dan GKE secara lokal, Verifikasi bahwa variabel KUBECONFIG ditetapkan menggunakan perintah berikut:
    echo ${KUBECONFIG}
  4. Lakukan inisialisasi uji coba. Dengan melakukan uji coba, Anda dapat memeriksa apakah ada error sebelum perubahan dilakukan pada cluster. Jalankan perintah init dengan flag --dry-run sebagai berikut:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
  5. Jika tidak ada error, jalankan perintah init sebagai berikut:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml

    Perintah init menginstal layanan deployment Apigee Apigee Deployment Controller dan Apigee Admission Webhook.

  6. Untuk memeriksa status deployment, Anda dapat menggunakan perintah berikut:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
    kubectl get pods -n apigee-system
    kubectl get pods -n apigee

    Setelah pod siap, lanjutkan ke langkah berikutnya.

  7. Lakukan penginstalan uji coba. Jalankan perintah apply dengan flag --dry-run.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  8. Jika tidak ada error, Anda dapat menerapkan komponen runtime khusus Apigee ke cluster dengan perintah berikut:
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
  9. Untuk memeriksa status deployment, jalankan perintah berikut:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml

    Ulangi langkah ini hingga semua pod siap. Pod mungkin memerlukan waktu beberapa menit untuk dimulai.

GKE dengan Workload Identity

Untuk penginstalan hybrid Apigee di GKE, Google Cloud menawarkan opsi yang disebut Workload identity untuk mengautentikasi komponen runtime hybrid.

Akun layanan Google Cloud dan akun layanan Kubernetes

Akun layanan Google Cloud adalah jenis akun khusus yang dapat digunakan untuk melakukan panggilan API yang diotorisasi dengan mengautentikasi sebagai akun layanan itu sendiri. Akun layanan Google Cloud dapat diberi peran dan izin yang serupa dengan pengguna perorangan. Saat aplikasi melakukan autentikasi sebagai akun layanan, aplikasi memiliki akses ke semua resource yang boleh 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 di Langkah 4: Buat akun layanan. Apigee menggunakan akun layanan ini untuk mengautentikasi komponen hybrid.

Akun layanan Kubernetes mirip dengan akun layanan Google Cloud. Akun layanan Kubernetes memberikan identitas untuk proses yang berjalan di Pod, dan memungkinkannya mengautentikasi ke server API dengan cara yang sama seperti pengguna. Jika Anda ingin mempelajari lebih lanjut akun layanan Kubernetes, lihat Mengonfigurasi Akun Layanan untuk Pod.

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

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

Ikuti petunjuk ini untuk mengonfigurasi Workload Identity untuk project Anda.

Bersiap untuk mengonfigurasi workload identity

Prosedur ini menggunakan variabel lingkungan berikut. Pastikan variabel ditentukan dan tentukan variabel yang belum ditentukan:

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

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

    Saat 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 tanda --restore:

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  4. Pastikan Workload Identity diaktifkan untuk Cluster GKE Anda. Saat Anda membuat cluster di Langkah 1: Buat cluster, langkah 11 adalah Mengaktifkan Workload Identity. Anda dapat mengonfirmasi apakah Workload Identity diaktifkan dengan menjalankan perintah 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 di hasil, 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 node pool. Pada sebagian besar penginstalan Apigee hybrid, dua kumpulan node default diberi nama apigee-data dan apigee-runtime.

  6. Verifikasi bahwa Workload Identity diaktifkan di node pool 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 ini:

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

    Gunakan perintah berikut untuk mendapatkan daftar nama:

    gcloud iam service-accounts list --project $PROJECT_ID

    Output Anda akan terlihat seperti ini:

    Non-prod

    Untuk lingkungan non-produksi:

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

    Produksi

    Untuk lingkungan non-produksi:

    DISPLAY NAME         EMAIL                                                      DISABLED
    apigee-cassandra     apigee-cassandra@my_project_id.iam.gserviceaccount.com     False
    apigee-logger        apigee-logger@my_project_id.iam.gserviceaccount.com        False
    apigee-mart          apigee-mart@my_project_id.iam.gserviceaccount.com          False
    apigee-metrics       apigee-metrics@my_project_id.iam.gserviceaccount.com       False
    apigee-runtime       apigee-runtime@my_project_id.iam.gserviceaccount.com       False
    apigee-synchronizer  apigee-synchronizer@my_project_id.iam.gserviceaccount.com  False
    apigee-udca          apigee-udca@my_project_id.iam.gserviceaccount.com          False
    apigee-watcher       apigee-watcher@my_project_id.iam.gserviceaccount.com       False
    
  8. Dapatkan daftar nama akun layanan Kubernetes. Anda akan memerlukan daftar nama ini untuk dikaitkan 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 yang ditandai dengan huruf tebal adalah akun yang perlu 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 untuk mengaktifkan workload identity untuk penginstalan Hybrid Anda:

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

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

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

      Konfigurasi 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-prod

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

        Output Anda akan memiliki baris yang menjelaskan anotasi, seperti:

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

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Produksi

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. Output Anda akan memiliki baris yang menjelaskan anotasi, seperti:

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

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Konfigurasi 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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Konfigurasi Workload Identity untuk komponen Apigee Connect.

      Non-prod

      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Konfigurasi Workload Identity untuk komponen MART.

      Non-prod

      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Metrik Apigee

      Konfigurasi Workload Identity untuk komponen metrik Apigee.

      Non-prod

      1. Tentukan variabel lingkungan KSA_NAME:

        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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
        --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
        --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (tingkat organisasi)

      Konfigurasi Workload Identity untuk komponen UDCA tingkat organisasi.

      UDCA diimplementasikan dalam cakupan tingkat organisasi dan tingkat lingkungan. Oleh karena itu, ada dua akun layanan Kubernetes terpisah untuk UDCA, satu untuk setiap cakupan. Anda dapat membedakannya berdasarkan nama akun. Akun env-scope menyertakan nama lingkungan dalam nama akun layanan. Contoh:

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

      Non-prod

      1. Tentukan variabel lingkungan KSA_NAME:

        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.iam.gserviceaccount.com \
            --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
          kubectl annotate serviceaccount \
            --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Konfigurasi Workload Identity untuk komponen Apigee Watcher.

      Non-prod

      1. Tentukan variabel lingkungan KSA_NAME:

        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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Runtime

      Konfigurasi Workload Identity untuk komponen Apigee Runtime.

      Non-prod

      1. Tentukan variabel lingkungan KSA_NAME:

        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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Synchronizer

      Konfigurasi Workload Identity untuk komponen Synchronizer.

      Non-prod

      1. Tentukan variabel lingkungan KSA_NAME:

        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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifikasi anotasi:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (tingkat lingkungan)

      Konfigurasi Workload Identity untuk komponen UDCA tingkat lingkungan.

      Non-prod

      1. Tentukan variabel lingkungan KSA_NAME:

        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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Beri anotasi pada akun layanan:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      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, alat tersebut mungkin telah membuat kunci akun layanan dan mendownload file kunci .json. Saat 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 halaman Kubernetes: Workloads Overview di Google Cloud console.

    Buka Workloads

  2. Untuk memeriksa status deployment lagi dengan apigeectl check-ready:
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
1 2 3 4 5 6 7 8 9 (NEXT) Langkah 10: Ekspos ingress Apigee 11