Topik ini menjelaskan cara mengaktifkan Workload Identity untuk Apigee Hybrid di GKE.
Jika Anda menggunakan AKS atau EKS hybrid Apigee, ikuti petunjuk dalam Mengaktifkan Workload Identity Federation di AKS dan EKS.
Ringkasan
Workload Identity adalah cara aplikasi yang berjalan dalam GKE (Google Kubernetes Engine) untuk mengakses layanan Google Cloud. Untuk mengetahui ringkasan Workload Identity, lihat:
- Memperkenalkan Workload Identity: Autentikasi yang lebih baik untuk aplikasi GKE Anda
- Menggunakan Workload Identity
Akun layanan IAM Google Cloud adalah identitas yang dapat digunakan aplikasi untuk membuat permintaan Google API. Akun layanan ini disebut sebagai GSA (Layanan Google) Akun) di dokumen. Untuk informasi lebih lanjut tentang GSA, lihat Akun layanan.
Secara terpisah, Kubernetes juga memiliki konsep akun layanan. Akun layanan menyediakan identitas untuk proses yang berjalan dalam Pod. Akun layanan Kubernetes adalah resource Kubernetes, sementara akun layanan Google khusus untuk Google Cloud. Untuk mengetahui informasi tentang layanan Kubernetes akun, 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 bagan Helm untuk komponen tersebut. Dengan mengaktifkan Workload Identity, hybrid komponen untuk berinteraksi dengan akun layanan.
Variabel lingkungan yang digunakan dalam prosedur ini
Prosedur ini menggunakan variabel lingkungan berikut. Pilih salah satu di shell perintah Anda atau ganti dalam contoh kode dengan nilai sebenarnya:
CLUSTER_LOCATION
: Region atau zona cluster Kubernetes Anda, misalnya:us-west1
.CLUSTER_NAME
: Nama cluster Anda.ENV_NAME
: Lalu, nama lingkungan Apigee.ORG_NAME
: Nama organisasi Apigee Anda.PROJECT_ID
: ID project Google Cloud Anda.NAMESPACE
: Namespace Apigee Anda (biasanya "apigee").
Verifikasi variabel lingkungan:
echo $PROJECT_IDecho $ORG_NAME
echo $ENV_NAME
echo $NAMESPACE
echo $CLUSTER_LOCATION
echo $CLUSTER_NAME
CLUSTER_NAME
Lakukan inisialisasi variabel apa pun yang Anda perlukan:
export PROJECT_ID=my-project-idexport ORG_NAME=$PROJECT_ID
export ENV_NAME=my-environment-name
export NAMESPACE=apigee
export CLUSTER_LOCATION=my-cluster-location
export CLUSTER_NAME=hybrid-base-directory/apigeectl
File kunci Workload Identity dan akun layanan
Saat menjalankan Apigee Hybrid di GKE, praktik standarnya adalah membuat dan mendownload data pribadi
(.json
file) untuk setiap akun layanan. Saat menggunakan Workload Identity,
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 hybrid Apigee, Anda dapat menghapusnya setelah mengaktifkan Workload Identity. Di sebagian besar instalasi, mereka berada di untuk setiap karakter komponen.
Mengaktifkan Workload Identity untuk Apigee Hybrid
Ikuti petunjuk ini untuk mengonfigurasi Workload Identity untuk project Anda.
Penginstalan yang dimigrasikan dan Workload Identity
Jika Anda memigrasikan cluster dari apigeectl
terkelola dengan alat migrasi Helm hybrid Apigee,
penggantian sintaksis untuk Workload Identity akan berubah. Anda harus memeriksa
properti berikut dalam file penggantian:
namespace
wajib diisi. Contoh:instanceID: "hybrid-instance-1" namespace: "apigee"
gcp.workloadIdentity.enabled
menggantikangcp.workloadIdentityEnabled
saat ini. Contoh:gcp: workloadIdentity: enabled: true
- Untuk penginstalan produksi, setiap komponen memiliki properti
gsa
. Nilai untuk properti ini adalah alamat email untuk akun layanan IAM Google untuk properti komponen. Contoh:watcher gsa: apigee-watcher@my-hybrid-project.
- Untuk pemasangan non-produksi, Anda dapat menyediakan satu GSA di
gcp.workloadIdentity.gsa
saat ini.gcp workloadIdentity gsa: apigee-watcher@my-hybrid-project.
- Dengan chart Helm untuk Apigee Hybrid, gabung GSA prod dan non-produk untuk Workload Identity. Anda
dapat menentukan satu nilai untuk
gcp.workloadIdentity.gsa
dan menentukan GSA individual untuk komponen tertentu. Nilai-nilai yang Anda berikan masing-masing komponen akan menggantikan nilai yang Anda berikangcp.workloadIdentity.gsa
hanya untuk komponen itu.
Persiapan untuk mengonfigurasi Workload Identity
- Pastikan Workload Identity diaktifkan di file penggantian Anda. Opsi ini harus diaktifkan di
mengganti file dan Anda seharusnya memiliki nilai untuk properti konfigurasi berikut:
- Untuk semua penginstalan:
gcp.workloadIdentity.enabled
harustrue
. Contoh:gcp: workloadIdentity: enabled: true
- Untuk penginstalan produksi:
- Untuk pemasangan non-produksi, berikan alamat GSA non-produk (dengan semua
peran IAM) di
gcp.workloadIdentity.gsa
saat ini.
- Untuk semua penginstalan:
- Pastikan konfigurasi
gcloud
saat ini disetel ke project ID Google Cloud Anda dengan perintah berikut:gcloud config get project
- Pastikan Workload Identity sudah aktif untuk Cluster GKE Anda. Saat Anda membuat cluster
pada Langkah 1: Membuat cluster, langkah 6 adalah Mengaktifkannya
Workload Identity. Anda dapat mengonfirmasi apakah Workload Identity diaktifkan dengan menjalankan perintah berikut
berikut:
Cluster regional
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Cluster zona
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Output Anda akan terlihat seperti berikut:
--- workloadPool: PROJECT_ID.svc.id.goog
Jika Anda melihat
null
dalam hasil Anda, jalankan perintah berikut untuk mengaktifkan Workload Identity untuk cluster Anda:Cluster regional
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
Cluster zona
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
-
Aktifkan Workload Identity untuk setiap node pool dengan perintah berikut. Operasi ini dapat memerlukan waktu hingga 30 menit untuk setiap node:
Cluster regional
gcloud container node-pools update NODE_POOL_NAME \ -cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
Cluster zona
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
Dengan NODE_POOL_NAME adalah nama setiap kumpulan node. Di sebagian besar Apigee Hybrid penginstalan, dua kumpulan node default bernama
apigee-data
danapigee-runtime
. - Pastikan Workload Identity diaktifkan pada kumpulan node Anda dengan perintah berikut:
Cluster regional
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
Cluster zona
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
Output Anda akan terlihat seperti:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA
Jika perlu, setel konfigurasi gcloud
saat ini:
gcloud config set project $PROJECT_ID
Mengonfigurasi Workload Identity
Gunakan prosedur berikut untuk mengaktifkan Workload Identity untuk komponen Hybrid berikut:
apigee-telemetry
apigee-org
apigee-env
Saat Anda menjalankan helm upgrade
dengan
Flag --dry-run
untuk apigee-datastore
, apigee-env
,
diagram apigee-org
, dan apigee-telemetry
, output-nya akan mencakup
Anda harus mengonfigurasi Workload Identity dengan nama GSA dan KSA yang benar.
Contoh:
helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
NAME: datastore ... For C* backup GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective kubernetes SA (KSA). gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-backup-sa]" \ --project :my-project
- Dapatkan perintah guna menyiapkan Workload Identity untuk
apigee-datastore
dan jalankan perintah tersebut di bagianNOTES:
pada output.helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Dapatkan perintah guna menyiapkan Workload Identity untuk
apigee-telemetry
dan jalankan perintah di bagianNOTES:
pada output.helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Dapatkan perintah guna menyiapkan Workload Identity untuk
apigee-org
dan jalankan perintah di bagianNOTES:
pada output.helm upgrade $ORG_NAME apigee-org/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Dapatkan perintah guna menyiapkan Workload Identity untuk
apigee-env
dan jalankan perintah di bagianNOTES:
pada output.helm upgrade $ENV_NAME apigee-env/ \ --namespace $NAMESPACE \ --set env=ENV_NAME \ -f overrides.yaml \ --dry-run
Ulangi langkah ini untuk setiap lingkungan dalam penginstalan Anda.
Memverifikasi Workload Identity
- Validasi apakah langkah-langkah tersebut 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-langkah tersebut dijalankan dengan benar, Anda akan melihat respons seperti berikut:
Credentialed Accounts ACTIVE ACCOUNT * GSA@PROJECT_ID.
- Jika mengupgrade dari penginstalan sebelumnya, bersihkan rahasia 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 Kubernetes: Workloads Overview di Google Cloud Console.