Menerapkan konfigurasi ke cluster
Gunakan langkah-langkah berikut untuk menginstal Apigee Hybrid ke dalam cluster Anda:
- Pastikan Anda berada di direktori
hybrid-base-directory/hybrid-files
.cd $HYBRID_FILES
- Pastikan
kubectl
disetel ke konteks yang benar menggunakan perintah berikut. Konteks saat ini harus ditetapkan 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 nama dalam konteks tidak cocok, perintah berikut akan mendapatkan kredensial
gcloud
cluster dan menetapkan kontekskubectl
: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
- Untuk Anthos on bare metal, AWS on GKE, EKS, dan GKE on prem khusus platform, Pastikan
bahwa variabel
KUBECONFIG
ditetapkan menggunakan perintah berikut:echo ${KUBECONFIG}
- Lakukan inisialisasi uji coba. Dengan melakukan uji coba, Anda dapat memeriksa apakah ada error sebelum melakukan perubahan pada cluster. Jalankan perintah
init
dengan flag--dry-run
sebagai berikut:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- 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 Webhook Pendaftaran Apigee. - 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
Saat pod sudah siap, lanjutkan ke langkah berikutnya.
- Lakukan penginstalan uji coba. Jalankan perintah
apply
dengan flag--dry-run
.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
-
Jika tidak ada error, Anda dapat menerapkan
komponen runtime khusus Apigee ke cluster dengan perintah berikut:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
- Untuk memeriksa status deployment, jalankan perintah berikut:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
Ulangi langkah ini sampai semua pod sudah siap. Pod mungkin memerlukan waktu beberapa menit untuk dimulai.
GKE dengan Workload Identity
Untuk penginstalan Apigee hybrid 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 melakukan autentikasi sebagai akun layanan itu sendiri. Akun layanan Google Cloud dapat diberi peran dan izin yang mirip dengan pengguna perorangan. Jika aplikasi mengautentikasi sebagai akun layanan, aplikasi tersebut memiliki akses ke semua resource yang boleh diakses oleh akun layanan. Jika ingin mempelajari akun layanan Google Cloud lebih lanjut, 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 untuk melakukan autentikasi ke server API yang mirip dengan pengguna. Jika ingin mempelajari akun layanan Kubernetes lebih lanjut, lihat Mengonfigurasi 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 akan mengaitkan akun layanan Google Cloud dengan akun layanan Kubernetes di cluster Kubernetes. Dengan begitu, akun layanan Kubernetes dapat meniru identitas akun layanan Google Cloud serta menggunakan peran dan 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. Periksa apakah tag tersebut didefinisikan dan menentukan fungsi yang tidak:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $PROJECT_ID
echo $ORG_NAME
- Pastikan konfigurasi
gcloud
saat ini telah disetel ke project ID Google Cloud Anda dengan perintah berikut:gcloud config get project
- Membuat akun layanan Kubernetes
apigee-cassandra-restore
.Saat Anda menerapkan konfigurasi dengan menjalankan
apigeectl apply
, perintah tersebut membuat sebagian besar akun layanan Kubernetes yang diperlukan untuk workload identity.Untuk membuat akun layanan Kubernetes
apigee-cassandra-restore
, jalankanapigeectl apply
dengan flag--restore
:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Pastikan Workload Identity diaktifkan untuk Cluster GKE Anda. Saat membuat cluster di Langkah 1: Buat cluster, langkah 11 adalah Mengaktifkan Workload Identity. Anda dapat memastikan apakah Workload Identity sudah aktif 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
dalam 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
-
Aktifkan Workload Identity untuk setiap kumpulan node dengan perintah berikut. Operasi ini dapat memakan 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. Pada sebagian besar penginstalan hybrid Apigee, dua kumpulan node default diberi nama
apigee-data
danapigee-runtime
. - Pastikan 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-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-produksi
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 dalam format tebal adalah akun yang harus dikaitkan 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, setel konfigurasi gcloud
saat ini:
gcloud config set project $PROJECT_ID
Mengonfigurasi workload identity
Gunakan prosedur berikut guna mengaktifkan workload identity untuk penginstalan Hybrid Anda:
-
Untuk setiap komponen Apigee, anotasikan akun layanan Kubernetes yang terkait dengan akun layanan Google untuk komponen tersebut.
Langkah-langkah berikut menggunakan dua variabel lingkungan. Anda akan mereset nilai variabel ini sebelum setiap serangkaian 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. Ini 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. Berikut adalah
akun layanan yang Anda buat dengan alat
- 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-produksi
Mengonfigurasi
apigee-cassandra-backup
akun layanan Kubernetes- Tentukan variabel lingkungan
KSA_NAME
danGSA_NAME
:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- Lakukan binding pada 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
- Anotasikan 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 harus memiliki baris yang menjelaskan anotasi tersebut, mirip dengan:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
Mengonfigurasi
apigee-cassandra-restore
akun layanan Kubernetes- Tentukan ulang variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-cassandra-schema-setup
akun layanan Kubernetes- 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
. - Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-cassandra-schema-val
akun layanan Kubernetes- Tentukan ulang variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
misalnya:apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-cassandra-user-setup
akun layanan Kubernetes- 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
. - Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-datastore-default-sa
akun layanan Kubernetes- Tentukan ulang variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-datastore-default-sa"
- Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-cassandra-backup
akun layanan Kubernetes- Tentukan variabel lingkungan
KSA_NAME
danGSA_NAME
:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- Lakukan binding pada 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
- Anotasikan 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 harus memiliki baris yang menjelaskan anotasi tersebut, mirip dengan:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
Mengonfigurasi
apigee-cassandra-restore
akun layanan Kubernetes- Tentukan ulang variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Lakukan binding pada 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
- Anotasikan akun layanan:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
Mengonfigurasi
apigee-cassandra-schema-setup
akun layanan Kubernetes- 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
. - Anotasikan 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
Mengonfigurasi
apigee-cassandra-schema-val
akun layanan Kubernetes- Tentukan ulang variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
misalnya:apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-cassandra-user-setup
akun layanan Kubernetes- 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
. - Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi
apigee-datastore-default-sa
akun layanan Kubernetes- Tentukan ulang variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-datastore-default-sa"
- Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi Workload identity untuk komponen Apigee Connect.
Non-produksi
- Tentukan variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-connect-agent-service-account-name-sa"
misalnya:apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-mart"
misalnya:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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
Mengonfigurasi Workload identity untuk komponen MART.
Non-produksi
- Tentukan variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-mart-service-account-name-sa"
misalnya:apigee-mart-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-mart"
misalnya:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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-produksi
- Tentukan variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-metrics-sa"
- Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa"
- Lakukan binding pada 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
- Anotasikan 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 org)
Konfigurasi Workload identity untuk komponen UDCA tingkat organisasi.
UDCA diterapkan baik pada cakupan tingkat organisasi maupun tingkat lingkungan. Oleh karena itu, ada dua akun layanan Kubernetes terpisah untuk UDCA, satu untuk setiap cakupan. Anda dapat membedakannya melalui nama akun. Akun env-scope menyertakan nama lingkungan dalam nama akun layanan. Contoh:
- Tingkat organisasi:
apigee-udca-my-project-id-123abcd-sa
denganmy-project-id
sebagai project ID nama. - Tingkat Env:
apigee-udca-my-project-id-my-env-234bcde-sa
denganmy-env
sebagai nama lingkungan.
Non-produksi
- Tentukan variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-udca-service-account-name-sa"
misalnya:apigee-udca-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-udca"
misalnya:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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:
- Pengamat Apigee
Mengonfigurasi Workload identity untuk komponen Apigee Watcher.
Non-produksi
- Tentukan variabel lingkungan
KSA_NAME
:KSA_NAME="apigee-watcher-service-account-name-sa"
misalnya:apigee-watcher-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-watcher"
misalnya:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Lakukan binding pada 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
- Anotasikan 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 Runtime Apigee.
Non-produksi
- 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
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-runtime"
misalnya:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Lakukan binding pada 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
- Anotasikan 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
- Sinkronisasi
Mengonfigurasi Workload identity untuk komponen Synchronizer.
Non-produksi
- 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
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-synchronizer"
misalnya:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Lakukan binding pada 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
- Anotasikan 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-produksi
- 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
. - Lakukan binding pada 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
- Anotasikan 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_NAME
danGSA_NAME
:GSA_NAME="apigee-udca"
misalnya:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Lakukan binding pada 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
- Anotasikan 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 kembali status deployment dengan
apigeectl check-ready
:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml