GKE dengan Workload Identity saja: Mengonfigurasi Workload Identity
Ikuti langkah-langkah berikut jika Anda menyiapkan file penggantian untuk Workload Identity di GKE pada Langkah 6: Mengonfigurasi cluster.
Jika Anda tidak menggunakan Workload Identity di GKE, lanjutkan ke Bagian 3, Langkah 1: Ekspos gateway ingress Apigee.
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_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $PROJECT_IDecho $ORG_NAME
Dengan:
APIGEECTL_HOMEadalah direktori tempat Anda menginstalapigeectl.CLUSTER_LOCATIONadalah region (atau zona) cluster Anda, misalnyaus-central1.ENV_NAMEadalah nama lingkungan Anda.HYBRID_FILESadalah direktori tempat Anda membuat direktorioverridesdancerts.NAMESPACEadalah namespace Apigee Anda.PROJECT_IDadalah project Google Cloud Anda.ORG_NAMEadalah nama organisasi Apigee Anda.
- Periksa apakah konfigurasi
gcloudsaat ini disetel ke project ID Google Cloud Anda dengan perintah berikut:gcloud config get project
- 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, jalankanapigeectl applydengan tanda--restore:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Pastikan Workload Identity diaktifkan untuk Cluster GKE Anda. Saat Anda membuat cluster
di Langkah 1: Buat cluster, langkah 6 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
nulldi hasil, jalankan perintah berikut untuk mengaktifkan Workload Identity bagi 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
-
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-datadanapigee-runtime. - 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 - 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
- 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
Jika perlu, tetapkan konfigurasi gcloud saat ini:
gcloud config set project $PROJECT_ID
Mengonfigurasi Workload Identity
Gunakan prosedur berikut untuk mengaktifkan Workload Identity untuk penginstalan Hybrid Anda:
-
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-accountdi 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.
- GSA_NAME: Nama akun layanan Google. Ini adalah
akun layanan yang Anda buat dengan alat
- Cassandra
Konfigurasi Workload Identity untuk komponen Cassandra.
Komponen Cassandra memiliki enam akun layanan Kubernetes terkait:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= validasi)apigee-cassandra-user-setupapigee-datastore-default
Non-prod
Konfigurasi akun layanan Kubernetes
apigee-cassandra-backup- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup" - 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
- 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
- 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- Tentukan ulang variabel lingkungan
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Konfigurasi akun layanan Kubernetes
apigee-cassandra-schema-setup- Tentukan ulang variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Konfigurasi akun layanan Kubernetes
apigee-cassandra-schema-val- Tentukan ulang variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Konfigurasi akun layanan Kubernetes
apigee-cassandra-user-setup- Tentukan ulang variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Konfigurasi akun layanan Kubernetes
apigee-datastore-default-sa- Tentukan ulang variabel lingkungan
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
Konfigurasi akun layanan Kubernetes
apigee-cassandra-backup- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup" - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- 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-cassandra@my-project-id.iam.gserviceaccount.com
Konfigurasi akun layanan Kubernetes
apigee-cassandra-restore- Tentukan ulang variabel lingkungan
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- 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
- 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- Tentukan ulang variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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
Konfigurasi akun layanan Kubernetes
apigee-cassandra-schema-val- Tentukan ulang variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Konfigurasi akun layanan Kubernetes
apigee-cassandra-user-setup- Tentukan ulang variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Konfigurasi akun layanan Kubernetes
apigee-datastore-default-sa- Tentukan ulang variabel lingkungan
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Konfigurasi Workload Identity untuk komponen Apigee Connect.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"apigee-connect-agent-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- MART
Konfigurasi Workload Identity untuk komponen MART.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"apigee-mart-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- Metrik Apigee
Konfigurasi Workload Identity untuk komponen metrik Apigee.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME:KSA_NAME="apigee-metrics-sa"
- 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa" - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- 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-sadenganmy-project-idadalah project ID nama. - Tingkat lingkungan:
apigee-udca-my-project-id-my-env-234bcde-sadenganmy-envadalah nama lingkungan.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa. - 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 - 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 - Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"apigee-udca-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tingkat organisasi:
- Apigee Watcher
Konfigurasi Workload Identity untuk komponen Apigee Watcher.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"apigee-watcher-hybrid-example-project-123abcd-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- Runtime
Konfigurasi Workload Identity untuk komponen Apigee Runtime.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- Synchronizer
Konfigurasi Workload Identity untuk komponen Synchronizer.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- UDCA (tingkat lingkungan)
Konfigurasi Workload Identity untuk komponen UDCA tingkat lingkungan.
Non-prod
- Tentukan variabel lingkungan
KSA_NAME: misalnya:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produksi
- Tentukan variabel lingkungan
KSA_NAMEdanGSA_NAME: misalnya:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"apigee-udca-hybrid-example-project-example-env-234bcde-sa. - 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
- 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
- Verifikasi anotasi:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Tentukan variabel lingkungan
- 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
- (Opsional) Anda dapat melihat status akun layanan Kubernetes di halaman Kubernetes: Workloads Overview di Google Cloud console.
- Untuk memeriksa status deployment lagi dengan
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml