Jika mendaftarkan cluster GKE di Google Cloud, Anda mungkin perlu melakukan satu atau beberapa hal berikut sebelum mendaftarkan cluster, bergantung pada opsi pendaftaran yang Anda pilih. Panduan ini mengasumsikan bahwa Anda telah menyelesaikan prasyarat umum untuk pendaftaran cluster.
Mengaktifkan Workload Identity Federation untuk GKE
Sebaiknya daftarkan cluster GKE Anda dengan mengaktifkan Workload Identity Federation fleet, yang menyediakan cara yang konsisten bagi aplikasi di cluster untuk melakukan autentikasi ke API dan layanan Google Cloud. Anda dapat mengetahui lebih lanjut manfaat mengaktifkan Workload Identity Federation fleet di Menggunakan Workload Identity Federation fleet.
Untuk menggunakan fitur ini, Anda harus memastikan Workload Identity Federation for GKE diaktifkan di cluster sebelum pendaftaran. Mendaftarkan cluster GKE dengan Workload Identity Federation fleet tanpa mengaktifkan Workload Identity Federation untuk GKE di cluster dapat menyebabkan inkonsistensi pada cara identitas dinyatakan oleh beban kerja di cluster, dan bukan merupakan konfigurasi yang didukung. Workload Identity Federation for GKE diaktifkan secara default di cluster Autopilot.
gcloud
Untuk memeriksa apakah cluster Anda telah mengaktifkan Workload Identity Federation untuk GKE, jalankan perintah berikut untuk mencantumkan workload identity pool cluster. Jika belum menentukan zona atau region default untuk gcloud
, Anda harus menentukan flag --region
atau --zone
saat menjalankan perintah ini.
gcloud container clusters describe CLUSTER_NAME --format="value(workloadIdentityConfig.workloadPool)"
Ganti kode berikut:
- CLUSTER_NAME:
name
cluster GKE.
Jika Anda melihat hasil yang mirip dengan berikut ini, berarti Workload Identity Federation untuk GKE sudah diaktifkan di cluster Anda:
GKE_PROJECT_ID.svc.id.goog
Jika tidak ada hasil, berarti Workload Identity Federation for GKE tidak diaktifkan. Ikuti petunjuk di Mengaktifkan Workload Identity Federation untuk GKE.
Konsol
Untuk memeriksa apakah cluster Anda telah mengaktifkan Workload Identity Federation for GKE:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster Anda.
Di halaman detail cluster, di bagian Security, pastikan Workload Identity tercantum sebagai Enabled.
Jika Workload Identity dinonaktifkan dan Anda ingin mengaktifkan fitur ini:
- Di halaman detail cluster, klik Edit Workload Identity.
- Pada dialog Edit Workload Identity, pilih kotak centang Enable Workload Identity
- Klik Simpan perubahan.
Memberikan izin untuk mendaftarkan cluster ke project lain
Mendaftarkan cluster GKE ke fleet di project-nya sendiri tidak memerlukan izin khusus selain yang dijelaskan dalam Memberikan izin akses. Namun, jika Anda ingin mendaftarkan cluster GKE dari project-nya sendiri (GKE_PROJECT) ke fleet di project berbeda (FLEET_HOST_PROJECT), akun agen layanan gcp-sa-gkehub
FLEET_HOST_PROJECT harus memiliki peran gkehub.serviceAgent
di project GKE_PROJECT. Peran ini memberikan izin kepada akun layanan untuk mengelola resource cluster dalam project tersebut.
Anda dapat memeriksa apakah akun layanan gcp-sa-gkehub
project host fleet memiliki peran yang diperlukan dalam project cluster Anda menggunakan gcloud CLI atau Konsol Google Cloud, sebagai berikut.
gcloud
Jalankan perintah berikut:
gcloud projects get-iam-policy GKE_PROJECT_ID | grep gcp-sa-gkehub
dengan GKE_PROJECT_ID adalah ID project cluster Anda.
Jika project host fleet gcp-sa-gkehub
memiliki peran yang diperlukan dalam project cluster Anda, project tersebut akan muncul dalam output dalam bentuk
service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.
. Contoh:
- members:
- serviceAccount:service-1234567890@gcp-sa-gkehub.
role: roles/gkehub.serviceAgent
Konsol
Setelah project cluster dipilih, buka halaman IAM & Admin di konsol Google Cloud.
Centang kotak Sertakan pemberian peran yang disediakan Google untuk melihat kebijakan izin lengkap, termasuk agen layanan.
Jika akun layanan project host fleet gcp-sa-gkehub
memiliki peran yang diperlukan dalam project cluster Anda, akun tersebut akan muncul dalam daftar ini dalam bentuk
service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.
.
Jika Anda tidak melihat agen layanan yang tercantum dalam kebijakan izin IAM project, lakukan tindakan berikut untuk memperbarui izin yang diperlukan:
gcloud
Untuk memberikan peran
gkehub.serviceAgent
kegcp-sa-gkehub
, pertama-tama pastikan akun layanan ini ada di project host fleet. Jika Anda telah mendaftarkan cluster di project fleet ini sebelumnya, akun layanan ini seharusnya sudah ada. Anda dapat memeriksanya dengan melihat kebijakan izin IAM untuk project host fleet:gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID | grep gcp-sa-gkehub
Jika Anda perlu membuat akun layanan
gcp-sa-gkehub
, jalankan perintah berikut:gcloud beta services identity create --service=gkehub.googleapis.com --project=FLEET_HOST_PROJECT_ID
Perintah ini akan menghasilkan output berikut:
Service identity created: service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.
Jalankan perintah berikut untuk memberikan peran
roles/gkehub.serviceAgent
kepada akun layanan di kedua project danroles/gkehub.crossProjectServiceAgent
di project cluster:GKE_PROJECT_ID=GKE_PROJECT_ID FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud projects add-iam-policy-binding "${FLEET_HOST_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub." \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub." \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub." \ --role roles/gkehub.crossProjectServiceAgent
dengan:
- GKE_PROJECT_ID adalah project ID Google Cloud cluster GKE.
- FLEET_HOST_PROJECT_ID adalah project ID Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
Untuk mengonfirmasi bahwa penetapan peran telah diberikan, jalankan kembali perintah berikut:
gcloud projects get-iam-policy GKE_PROJECT_ID
Jika Anda melihat nama akun layanan beserta peran
gkehub.serviceAgent
dangkehub.crossProjectServiceAgent
, binding peran telah diberikan. Contoh:- members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub. role: roles/gkehub.serviceAgent - members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub. role: roles/gkehub.crossProjectServiceAgent
Mengonfigurasi akun layanan untuk Terraform
Jika ingin menggunakan Terraform untuk mendaftarkan cluster Google Kubernetes Engine, Anda harus membuat akun layanan yang dapat digunakan Terraform untuk mengakses Fleet API guna membuat langganan.
gcloud
Buat akun layanan sebagai berikut:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
Ikat peran IAM
gkehub.admin
ke akun layanan agar Terraform dapat menggunakannya dengan Fleet API:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}." \ --role="roles/gkehub.admin"
Jika ingin membuat cluster baru dengan Terraform, lalu mendaftarkannya, Anda juga perlu mengikat peran
roles/container.admin
ke akun layanan sehingga Terraform dapat menggunakan akun layanan ini untuk mengakses GKE API guna membuat cluster.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}." \ --role="roles/container.admin"
Ganti kode berikut:
- FLEET_HOST_PROJECT_ID adalah project ID Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
- SERVICE_ACCOUNT_NAME adalah nama tampilan yang Anda pilih untuk [Service Account].
Download file JSON kunci pribadi akun layanan, seperti yang dijelaskan dalam Membuat akun layanan Google Cloud menggunakan
gcloud
. Anda memerlukan file ini untuk membuat dan mendaftarkan cluster menggunakan Terraform.
Mengonfigurasi akun layanan untuk Config Connector
Jika Anda ingin menggunakan Config Connector untuk mendaftarkan cluster GKE, lakukan hal berikut:
gcloud
Pastikan Anda telah menginstal add-on Konektor Konfigurasi. Anda harus memiliki versi Config Connector di atas 1.47.0.
Ikuti petunjuk Config Connector untuk membuat akun layanan.
Ikat peran IAM
gkehub.admin
ke akun layanan ini sehingga Config Connector Anda dapat menggunakan akun layanan ini untuk mengakses Fleet API:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}." \ --role="roles/gkehub.admin"
Jika ingin membuat cluster baru dengan Config Connector, lalu mendaftarkannya, Anda juga harus mengikat peran
roles/container.admin
ke akun layanan sehingga pengontrol Config Connector dapat menggunakan akun layanan ini untuk mengakses GKE API guna membuat cluster.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}." \ --role="roles/container.admin"
Ganti kode berikut:
- FLEET_HOST_PROJECT_ID adalah project ID Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
- SERVICE_ACCOUNT_NAME adalah nama tampilan yang Anda pilih untuk [Service Account].
Ikuti petunjuk Config Connector untuk mengonfigurasi Config Connector dengan akun layanan ini.
Apa langkah selanjutnya?
Ikuti petunjuk untuk mendaftarkan cluster.