Prasyarat untuk cluster GKE di Google Cloud

Jika mendaftarkan cluster GKE di Google Cloud, Anda mungkin perlu melakukan satu atau beberapa hal berikut sebelum mendaftarkan cluster, bergantung pada opsi pendaftaran yang dipilih. Panduan ini mengasumsikan bahwa Anda telah menyelesaikan prasyarat umum untuk pendaftaran cluster.

Mengaktifkan Workload Identity Federation untuk GKE

Sebaiknya daftarkan cluster GKE Anda dengan Workload Identity Federation fleet yang diaktifkan, sehingga aplikasi di cluster dapat melakukan autentikasi ke API dan layanan Google Cloud dengan konsisten. Anda dapat mengetahui lebih lanjut manfaat mengaktifkan fleet Workload Identity Federation di Menggunakan fleet Workload Identity Federation.

Untuk menggunakan fitur ini, Anda harus memastikan Workload Identity Federation for GKE telah diaktifkan di cluster sebelum pendaftaran. Mendaftarkan cluster GKE ke fleet Workload Identity Federation tanpa mengaktifkan Workload Identity Federation for GKE di cluster, dapat mengakibatkan inkonsistensi terkait cara identitas dinyatakan oleh beban kerja di cluster, dan bukan merupakan konfigurasi yang didukung. Cluster Autopilot mengaktifkan Workload Identity Federation for GKE secara default.

gcloud

Untuk memeriksa apakah cluster Anda telah mengaktifkan Workload Identity Federation for GKE, jalankan perintah berikut untuk mencantumkan kumpulan identitas workload cluster. Jika belum menentukan zona atau region default untuk gcloud, Anda perlu 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 for GKE telah diaktifkan di cluster Anda:

GKE_PROJECT_ID.svc.id.goog

Jika tidak ada hasil, Workload Identity Federation for GKE tidak akan diaktifkan. Ikuti petunjuk di Mengaktifkan Workload Identity Federation untuk GKE.

Konsol

Untuk memeriksa apakah cluster Anda telah mengaktifkan Workload Identity Federation for GKE:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Dalam daftar cluster, klik nama cluster Anda.

  3. Pada halaman detail cluster, di bagian Keamanan, pastikan Workload Identity tercantum sebagai Enabled.

Jika Workload Identity disetel ke Disabled dan Anda ingin mengaktifkan fitur ini:

  1. Di halaman detail cluster, klik Edit Workload Identity.
  2. Pada dialog Edit Workload Identity, pilih kotak centang Enable Workload Identity
  3. Klik Simpan perubahan.

Memberikan izin untuk mendaftarkan cluster ke project lain

Mendaftarkan cluster GKE ke fleet dalam project-nya sendiri tidak memerlukan izin khusus selain yang telah dijelaskan dalam bagian Memberikan izin akses. Namun, jika Anda ingin mendaftarkan cluster GKE dari project-nya sendiri (GKE_PROJECT) ke fleet dalam 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 project host fleet gcp-sa-gkehub 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 sebagai ID project cluster Anda.

Jika project host fleet gcp-sa-gkehub memiliki peran yang diperlukan dalam project cluster Anda, project tersebut akan muncul di output dalam bentuk service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com. Contoh:

- members:
  - serviceAccount:service-1234567890@gcp-sa-gkehub.iam.gserviceaccount.com
  role: roles/gkehub.serviceAgent

Konsol

  1. Setelah memilih project cluster, buka halaman IAM & Admin di Google Cloud Console.

    Buka halaman IAM & Admin

  2. Pilih kotak centang Sertakan pemberian peran yang disediakan Google untuk melihat kebijakan izin yang 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.iam.gserviceaccount.com.

Jika Anda tidak melihat agen layanan tercantum dalam kebijakan izin IAM project, lakukan hal berikut untuk memperbarui izin yang diperlukan:

gcloud

  1. Untuk memberi gcp-sa-gkehub peran gkehub.serviceAgent, pertama-tama pastikan akun layanan ini ada dalam project host fleet. Jika Anda telah mendaftarkan cluster dalam project fleet ini sebelumnya, akun layanan ini harus 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
    
  2. 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.iam.gserviceaccount.com
    
  3. Jalankan perintah berikut untuk memberi akun layanan peran roles/gkehub.serviceAgent di kedua project dan roles/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.iam.gserviceaccount.com" \
      --role roles/gkehub.serviceAgent
    gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \
      --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \
      --role roles/gkehub.serviceAgent
    gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \
      --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \
      --role roles/gkehub.crossProjectServiceAgent
    

    dengan:

    • GKE_PROJECT_ID adalah project ID Google Cloud untuk cluster GKE.
    • FLEET_HOST_PROJECT_ID adalah ID project Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
  4. Untuk mengonfirmasi bahwa binding peran telah diberikan, jalankan lagi perintah berikut:

    gcloud projects get-iam-policy GKE_PROJECT_ID
    

    Jika Anda melihat nama akun layanan beserta peran gkehub.serviceAgent dan gkehub.crossProjectServiceAgent, berarti binding peran telah diberikan. Contoh:

    - members:
      - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
      role: roles/gkehub.serviceAgent
    - members:
      - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
      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 keanggotaan.

gcloud

  1. Buat akun layanan sebagai berikut:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
    
  2. Ikat peran IAM gkehub.admin dengan 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}.iam.gserviceaccount.com" \
       --role="roles/gkehub.admin"
    

    Jika ingin membuat cluster baru dengan Terraform lalu mendaftarkannya, Anda juga harus mengikat peran roles/container.admin ke akun layanan agar Terraform dapat menggunakan akun layanan ini untuk mengakses GKE API agar dapat 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}.iam.gserviceaccount.com" \
       --role="roles/container.admin"
    

    Ganti kode berikut:

    • FLEET_HOST_PROJECT_ID adalah ID project Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
    • SERVICE_ACCOUNT_NAME adalah nama tampilan yang Anda pilih untuk [Akun Layanan].
  3. Download file JSON kunci pribadi akun layanan, seperti yang dijelaskan dalam Membuat akun layanan Google Cloud menggunakan gcloud. Anda akan 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

  1. Pastikan Anda telah menginstal add-on Config Connector. Anda harus memiliki versi Config Connector di atas 1.47.0.

  2. Ikuti petunjuk Config Connector untuk membuat akun layanan.

  3. Ikat peran IAM gkehub.admin dengan 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}.iam.gserviceaccount.com" \
       --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 agar pengontrol Config Connector Anda dapat menggunakan akun layanan ini untuk mengakses GKE API untuk 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}.iam.gserviceaccount.com" \
       --role="roles/container.admin"
    

    Ganti kode berikut:

    • FLEET_HOST_PROJECT_ID adalah ID project Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
    • SERVICE_ACCOUNT_NAME adalah nama tampilan yang Anda pilih untuk [Akun Layanan].
  4. Ikuti petunjuk Config Connector untuk mengonfigurasi Config Connector Anda dengan akun layanan ini.

Apa langkah selanjutnya?

Ikuti petunjuk untuk mendaftarkan cluster.