Topik ini menjelaskan cara mengaktifkan Workload Identity Federation untuk GKE untuk Apigee hybrid.
Jika Anda menggunakan Apigee hybrid AKS atau EKS, ikuti petunjuk di Mengaktifkan Workload Identity Federation di AKS dan EKS.
Ringkasan
Workload Identity Federation for GKE adalah cara bagi aplikasi yang berjalan dalam GKE (Google Kubernetes Engine) untuk mengakses Google Cloud layanan. Untuk ringkasan Workload Identity Federation for GKE, lihat:
- Tentang Workload Identity Federation untuk GKE
- Mengautentikasi ke Google Cloud API dari workload GKE
Akun layanan IAM Google Cloud adalah identitas yang dapat digunakan aplikasi untuk membuat permintaan ke Google API. Akun layanan ini disebut sebagai GSA (Akun Layanan Google) dalam dokumen. Untuk mengetahui informasi selengkapnya tentang GSA, lihat Akun layanan.
Secara terpisah, Kubernetes juga memiliki konsep akun layanan. Akun layanan menyediakan identitas untuk proses yang berjalan di Pod. Akun layanan Kubernetes adalah resource Kubernetes, sedangkan akun layanan Google khusus untuk Google Cloud. Untuk mengetahui informasi tentang akun layanan Kubernetes, lihat Mengonfigurasi Akun Layanan untuk Pod dalam dokumentasi Kubernetes.
Apigee membuat dan menggunakan akun layanan Kubernetes untuk setiap jenis komponen saat Anda pertama kali menginstal diagram Helm untuk komponen tersebut. Dengan mengaktifkan Workload Identity Federation untuk GKE, komponen hybrid dapat berinteraksi dengan akun layanan Kubernetes.
Variabel lingkungan yang digunakan dalam prosedur ini
Prosedur ini menggunakan variabel lingkungan berikut. Tetapkan nilai ini di shell perintah atau ganti di contoh kode dengan nilai sebenarnya:
PROJECT_ID: ID project Google Cloud Anda.ORG_NAME: Nama organisasi Apigee Anda.ENV_NAME: Nama lingkungan Apigee.NAMESPACE: Namespace Apigee Anda (biasanyaapigee).CLUSTER_LOCATION: Region atau zona cluster Kubernetes Anda, misalnya:us-west1.CLUSTER_NAME: Nama cluster Anda.
Verifikasi variabel lingkungan:
echo $PROJECT_IDecho $ORG_NAMEecho $ENV_NAMEecho $NAMESPACEecho $CLUSTER_LOCATIONecho $CLUSTER_NAME
Lakukan inisialisasi variabel yang Anda butuhkan:
export PROJECT_ID=MY_PROJECT_IDexport ORG_NAME=MY_ORG_NAMEexport ENV_NAME=MY_ENV_NAMEexport NAMESPACE=APIGEE_NAMESPACEexport CLUSTER_LOCATION=MY_CLUSTER_LOCATIONexport CLUSTER_NAME=MY_CLUSTER_NAME
Workload Identity Federation for GKE dan file kunci akun layanan
Saat menjalankan Apigee Hybrid di GKE, praktik standarnya adalah membuat dan mendownload kunci pribadi (file .json) untuk setiap akun layanan. Saat menggunakan Workload Identity Federation untuk GKE,
Anda tidak perlu mendownload kunci pribadi akun layanan dan menambahkannya ke cluster GKE.
Jika Anda telah mendownload file kunci akun layanan sebagai bagian dari penginstalan Apigee Hybrid, Anda dapat menghapusnya setelah mengaktifkan Workload Identity Federation untuk GKE. Di sebagian besar penginstalan, file ini berada di direktori untuk setiap diagram komponen.
Mengaktifkan Workload Identity Federation for GKE untuk Apigee hybrid
Ikuti petunjuk berikut untuk mengonfigurasi project Anda agar menggunakan Workload Identity Federation untuk GKE.
Bersiap untuk mengonfigurasi Workload Identity Federation untuk GKE
- Pastikan Workload Identity Federation untuk GKE diaktifkan dalam file penggantian Anda. Fitur ini harus diaktifkan di
file penggantian dan Anda harus memiliki nilai untuk properti konfigurasi berikut:
- Untuk semua penginstalan:
gcp.workloadIdentity.enabledharustrue. Contoh:gcp: workloadIdentity: enabled: true - Untuk penginstalan produksi:
connectAgent.gsaenvs.gsa.runtimeenvs.gsa.synchronizerenvs.gsa.udcalogger.gsamart.gsametrics.gsamintTaskscheduler.gsa
(Jika menggunakan Monetisasi untuk Apigee Hybrid di v1.15.1 dan yang lebih baru)udca.gsawatcher.gsa
- Untuk penginstalan non-produksi, berikan alamat GSA non-prod (dengan semua peran IAM yang diperlukan) di properti
gcp.workloadIdentity.gsa.
- Untuk semua penginstalan:
- Periksa apakah konfigurasi
gcloudsaat ini disetel ke project ID Google Cloud Anda dengan perintah berikut:gcloud config get project
- Pastikan Workload Identity Federation for GKE diaktifkan untuk Cluster GKE Anda. Saat Anda membuat cluster
di Langkah 1: Buat cluster, langkah 6 adalah Mengaktifkan
Workload Identity Federation untuk GKE. Pastikan Workload Identity Federation untuk GKE diaktifkan dengan 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 Federation untuk GKE 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 Federation untuk GKE bagi 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. - Pastikan Workload Identity Federation untuk GKE 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
Jika perlu, tetapkan konfigurasi gcloud saat ini:
gcloud config set project $PROJECT_ID
Mengonfigurasi penginstalan Anda untuk menggunakan Workload Identity Federation for GKE
Gunakan prosedur berikut untuk mengaktifkan Workload Identity Federation untuk GKE bagi komponen Hybrid berikut:
apigee-datastoreapigee-telemetryapigee-orgapigee-env
Saat Anda menjalankan helm upgrade dengan tanda
--dry-run atau --dry-run=server untuk diagram apigee-datastore, apigee-env,
apigee-org, dan apigee-telemetry, output akan menyertakan
perintah yang akan Anda perlukan untuk mengonfigurasi Federasi Identitas Beban Kerja untuk GKE dengan nama GSA dan KSA yang benar.
Contoh:
helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
Akan menghasilkan output seperti:
NAME: datastore
...
For Cassandra backup, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
gcloud iam service-accounts add-iam-policy-binding apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:PROJECT_ID.svc.id.goog[APIGEE_NAMESPACE/apigee-cassandra-default]" \
--project PROJECT_ID
kubectl annotate serviceaccount apigee-cassandra-default \
iam.gke.io/gcp-service-account=apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com \
--namespace APIGEE_NAMESPACE
Dengan:
apigee-cassandraadalah nama akun layanan Google (GSA) untuk Cassandra. Lihat Tentang akun layanan.PROJECT_IDdiganti dengan project ID Google Cloud Anda.APIGEE_NAMESPACEdiganti dengan namespace Apigee Anda,apigeesecara default.apigee-cassandra-defaultadalah nama akun layanan Kubernetes untuk pod Cassandra yang dibuat oleh diagramapigee-datastore.
- Dapatkan perintah untuk menyiapkan Workload Identity Federation for GKE untuk
apigee-datastoredan jalankan perintah di bagianNOTES:dalam output.helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
- Dapatkan perintah untuk menyiapkan Workload Identity Federation for GKE untuk
apigee-telemetrydan jalankan perintah di bagianNOTES:dalam output.helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
- Dapatkan perintah untuk menyiapkan Workload Identity Federation for GKE untuk
apigee-orgdan jalankan perintah di bagianNOTES:dalam output.helm upgrade $ORG_NAME apigee-org/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
- Dapatkan perintah untuk menyiapkan Workload Identity Federation for GKE untuk
apigee-envdan jalankan perintah di bagianNOTES:dalam output.helm upgrade $ENV_NAME apigee-env/ \ --namespace $NAMESPACE \ --set env=$ENV_NAME \ -f OVERRIDES_FILE \ --dry-run
Ulangi langkah ini untuk setiap lingkungan dalam penginstalan Anda.
Memverifikasi Workload Identity Federation for GKE
- Validasi apakah langkah-langkahnya berhasil:
gcloud config set project $PROJECT_ID
kubectl run --rm -it --image google/cloud-sdk:slim \ --namespace $NAMESPACE workload-identity-test\ -- gcloud auth list
Jika Anda tidak melihat command prompt, coba tekan Enter.
Jika langkah-langkahnya dijalankan dengan benar, Anda akan melihat respons seperti berikut:
Credentialed Accounts ACTIVE ACCOUNT * GSA@PROJECT_ID.iam.gserviceaccount.com - Jika mengupgrade dari penginstalan sebelumnya, hapus secret yang berisi kunci pribadi akun layanan:
kubectl delete secrets -n $NAMESPACE $(k get secrets -n $NAMESPACE | grep svc-account | awk '{print $1}') - Periksa log:
kubectl logs -n $NAMESPACE -l app=apigee=synchronizer,env=$ENV_NAME,org=$ORG_NAME apigee-synchronizer
- (Opsional) Anda dapat melihat status akun layanan Kubernetes di halaman Kubernetes: Workloads Overview di Google Cloud console.