Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengelola akun layanan dan peran IAM, minta administrator untuk memberi Anda peran IAM berikut:
-
Security Admin (
roles/iam.securityAdmin) di project cluster -
Konfigurasi akun layanan di project terpisah:
Security Admin (
roles/iam.securityAdmin) di project akun layanan
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memberikan peran minimum yang diperlukan untuk GKE
GKE menggunakan akun layanan IAM yang terlampir ke node Anda untuk menjalankan tugas sistem seperti logging dan pemantauan. Setidaknya, akun layanan node ini harus memiliki peran
Kubernetes Engine Default Node Service Account
(roles/container.defaultNodeServiceAccount) di project Anda. Secara default,
GKE menggunakan
akun layanan default Compute Engine,
yang otomatis dibuat di project Anda, sebagai akun layanan node.
Jika organisasi Anda menerapkan
batasan kebijakan organisasi iam.automaticIamGrantsForDefaultServiceAccounts, akun layanan Compute Engine default di project Anda mungkin
tidak otomatis mendapatkan izin yang diperlukan untuk GKE.
Bagian berikut menunjukkan cara memberikan peran
roles/container.defaultNodeServiceAccount ke akun layanan Compute Engine default atau ke akun layanan kustom baru yang Anda buat.
Mengonfigurasi akun layanan Compute Engine default
Untuk memberikan peran roles/container.defaultNodeServiceAccount ke akun layanan default Compute Engine, selesaikan langkah-langkah berikut:
Konsol
- Buka halaman Selamat Datang:
- Di kolom Project number, klik Copy to clipboard.
- Buka halaman IAM:
- Klik Grant access.
- Di kolom Akun utama baru, tentukan nilai berikut:
GantiPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERdengan nomor project yang Anda salin. - Di menu Select a role, pilih peran Kubernetes Engine Default Node Service Account.
- Klik Simpan.
gcloud
- Temukan Google Cloud nomor project Anda:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Ganti
PROJECT_IDdengan project ID Anda.Outputnya mirip dengan hal berikut ini:
12345678901
- Berikan peran
roles/container.defaultNodeServiceAccountke akun layanan default Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Ganti
PROJECT_NUMBERdengan nomor project dari langkah sebelumnya.
Mengonfigurasi akun layanan node kustom
Untuk membuat akun layanan kustom dan memberikan peran yang diperlukan untuk GKE, selesaikan langkah-langkah berikut:
Konsol
- Buka halaman Akun Layanan.
- Klik Buat akun layanan.
- Masukkan nama untuk akun layanan. Kolom Service account ID secara otomatis membuat ID unik untuk akun layanan berdasarkan nama.
- Klik Buat dan lanjutkan.
- Di menu Select a role, pilih peran Kubernetes Engine Default Node Service Account.
- Klik Done.
gcloud
- Buat akun layanan:
gcloud iam service-accounts create SA_NAME
Ganti
SA_NAMEdengan nama unik yang mengidentifikasi akun layanan. - Berikan peran
Kubernetes Engine Default Node Service Account
(
roles/container.defaultNodeServiceAccount) ke akun layanan:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
Ganti kode berikut:
PROJECT_ID: Google Cloud Project ID Anda.SA_NAME: nama akun layanan yang Anda buat.
Terraform
Buat akun layanan IAM dan berikan peran
roles/container.defaultNodeServiceAccount di project:
Config Connector
Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.
- Untuk membuat akun layanan, download resource berikut sebagai
service-account.yaml:Ganti kode berikut:
[SA_NAME]: nama akun layanan baru.[DISPLAY_NAME]: nama tampilan untuk akun layanan.
- Buat akun layanan:
kubectl apply -f service-account.yaml
- Terapkan peran
roles/logging.logWriterke akun layanan:- Download
resource berikut sebagai
policy-logging.yaml.Ganti kode berikut:
[SA_NAME]: nama akun layanan.[PROJECT_ID]: Google Cloud Project ID Anda.
- Terapkan peran ke akun layanan:
kubectl apply -f policy-logging.yaml
- Download
resource berikut sebagai
- Terapkan peran
roles/monitoring.metricWriterke akun layanan:- Download resource berikut sebagai
policy-metrics-writer.yaml. Ganti[SA_NAME]dan[PROJECT_ID]dengan informasi Anda sendiri.Ganti kode berikut:
[SA_NAME]: nama akun layanan.[PROJECT_ID]: Google Cloud Project ID Anda.
- Terapkan peran ke akun layanan:
kubectl apply -f policy-metrics-writer.yaml
- Download resource berikut sebagai
- Terapkan peran
roles/monitoring.viewerke akun layanan:- Download resource berikut sebagai
policy-monitoring.yaml.Ganti kode berikut:
[SA_NAME]: nama akun layanan.[PROJECT_ID]: Google Cloud Project ID Anda.
- Terapkan peran ke akun layanan:
kubectl apply -f policy-monitoring.yaml
- Download resource berikut sebagai
- Terapkan peran
roles/autoscaling.metricsWriterke akun layanan:- Download resource berikut sebagai
policy-autoscaling-metrics-writer.yaml.Ganti kode berikut:
[SA_NAME]: nama akun layanan.[PROJECT_ID]: Google Cloud Project ID Anda.
- Terapkan peran ke akun layanan:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Download resource berikut sebagai
Anda juga dapat menggunakan akun layanan ini untuk resource dalam project lain. Untuk mendapatkan petunjuk, lihat Mengaktifkan peniruan identitas akun layanan di seluruh project.
Mengizinkan akun utama melampirkan akun layanan kustom
Anda dapat melampirkan akun layanan kustom saat membuat cluster atau node pool. Agar akun utama (seperti administrator platform) dapat menggunakan akun layanan kustom untuk membuat resource GKE, berikan peran
Service Account User
(roles/iam.serviceAccountUser) pada akun layanan kustom tersebut kepada akun utama. Untuk memberikan peran ini, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud , buka halaman Service accounts:
Di pemilih resource, pilih project yang berisi akun layanan kustom Anda.
Centang kotak untuk akun layanan kustom yang Anda buat untuk digunakan dengan node GKE.
Klik Kelola akses. Panel Kelola Akses akan terbuka.
Klik Add principal. Panel Berikan akses akan terbuka.
Di kolom New principals, tentukan akun utama, seperti grup administrator.
Di menu drop-down Select a role, pilih peran Service Account User.
Klik Simpan. Panel Berikan akses akan ditutup.
Tutup panel Kelola Akses.
gcloud
Berikan peran roles/iam.serviceAccountUser:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
Ganti kode berikut:
SA_NAME: nama akun layanan kustom.SERVICE_ACCOUNT_PROJECT_ID: project ID yang berisi akun layanan kustom.PRINCIPAL: ID akun utama, sepertiuser:baklavainthebalkans@example.com.
Config Connector
Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.
Terapkan peran iam.serviceAccountUser ke akun layanan Anda. Download
resource berikut sebagai policy-service-account-user.yaml. Ganti [SA_NAME]
dan [PROJECT_ID] dengan informasi Anda sendiri.
kubectl apply -f policy-service-account-user.yaml
Setelah Anda memberikan peran di akun layanan, akun utama tersebut dapat menggunakan akun layanan tersebut untuk membuat cluster dan node pool. Untuk informasi selengkapnya, lihat dokumen berikut:
Mengonfigurasi penggunaan akun layanan di seluruh project
Jika akun layanan node Anda tidak berada dalam project yang sama dengan cluster, agen layanan di project cluster memerlukan izin tambahan pada akun layanan. Untuk mengetahui informasi selengkapnya, lihat Akun layanan node dan agen layanan project.
Untuk memberikan peran yang diperlukan pada akun layanan node yang tidak ada di project cluster Anda, ikuti langkah-langkah berikut:
- Untuk mengaktifkan lampiran akun layanan lintas project, perbarui kebijakan organisasi Anda.
Untuk memberikan peran yang diperlukan pada akun layanan kustom kepada agen layanan di project cluster Anda, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud , buka halaman Service accounts.
Centang kotak untuk akun layanan kustom yang Anda buat untuk digunakan dengan node GKE.
Klik Kelola akses. Panel Kelola Akses akan terbuka.
Berikan peran Service Account Token Creator kepada agen layanan Compute Engine di project cluster Anda:
- Di panel Manage Access, klik Add principal. Panel Berikan akses akan terbuka.
Di kolom New principals, tentukan alamat email agen layanan Compute Engine di project cluster Anda:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comGanti
CLUSTER_PROJECT_NUMBERdengan nomor project project cluster Anda.Di menu Select a role, pilih peran Service Account Token Creator.
Klik Simpan. Panel Berikan akses akan ditutup.
Berikan peran Service Account User kepada agen layanan GKE di project cluster Anda:
- Di panel Manage Access, klik Add principal. Panel Berikan akses akan terbuka.
Di kolom New principals, tentukan alamat email agen layanan GKE di project cluster Anda:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comDi menu Select a role, pilih peran Service Account User.
Klik Simpan. Panel Berikan akses akan ditutup.
Tutup panel Kelola Akses.
gcloud
Dapatkan nomor project project cluster Anda:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Ganti
CLUSTER_PROJECT_IDdengan project ID project cluster Anda.Outputnya mirip dengan
123456789.Berikan peran
roles/iam.serviceAccountTokenCreatorpada akun layanan kustom kepada agen layanan Compute Engine di project cluster Anda:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorGanti kode berikut:
SA_NAME: nama akun layanan kustom.SERVICE_ACCOUNT_PROJECT_ID: project ID project yang berisi akun layanan kustom Anda.CLUSTER_PROJECT_NUMBER: nomor project dari project cluster Anda.
Beri peran
roles/iam.serviceAccountUserpada akun layanan kustom kepada agen layanan GKE di project cluster Anda:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Mengizinkan penarikan image dari repositori pribadi
Jika memiliki image di repositori Artifact Registry pribadi, Anda harus memberi akun layanan node akses ke repositori tersebut. Meskipun Anda menggunakan akun layanan Compute Engine default, Anda mungkin perlu memberikan akses akun layanan ke repositori Anda jika repositori tersebut berada di project lain.
Untuk menarik image pribadi dari Artifact Registry, berikan
peran Pembaca Artifact Registry
(roles/artifactregistry.reader) di repositori ke akun layanan node Anda.
Konsol
Di konsol Google Cloud , buka halaman Repositories.
Centang kotak untuk repositori Anda.
Klik Tampilkan panel info. Panel informasi repositori akan terbuka.
Di tab Permissions, klik Add principal. Panel Berikan akses akan terbuka.
Di kolom New principals, tentukan alamat email akun layanan node Anda.
Klik Select a role untuk membuka dialog pemilihan peran.
Pilih peran Artifact Registry Reader.
Klik Simpan.
gcloud
Berikan peran roles/artifactregistry.reader pada repositori:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
Ganti kode berikut:
REPOSITORY_NAME: nama repositori Artifact Registry.SERVICE_ACCOUNT_EMAIL: alamat email akun layanan node.REPOSITORY_PROJECT_ID: project ID dari project yang berisi repositori Anda.
Config Connector
Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.
Simpan manifes berikut sebagai
policy-artifact-registry-reader.yaml:Ganti kode berikut:
- SA_NAME: nama akun layanan IAM Anda.
- PROJECT_ID: Google Cloud Project ID Anda.
- REPOSITORY_NAME: nama repositori Artifact Registry Anda.
Berikan peran Pembaca Artifact Registry ke akun layanan:
kubectl apply -f policy-artifact-registry-reader.yaml