Identitas bidang data
Dataproc di GKE menggunakan Workload Identity GKE untuk mengizinkan pod dalam cluster Dataproc di GKE bertindak dengan otoritas akun layanan VM Dataproc default (identitas bidang data). Workload Identity memerlukan izin berikut untuk memperbarui kebijakan IAM pada GSA yang digunakan oleh cluster virtual Dataproc di GKE:
compute.projects.get
iam.serviceAccounts.getIamPolicy
iam.serviceAccounts.setIamPolicy
Workload identity GKE menautkan Akun Layanan GKE (KSA) berikut ke Akun Layanan VM Dataproc:
agent
KSA (berinteraksi dengan bidang kontrol Dataproc):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
spark-driver
KSA (menjalankan driver Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
spark-executor
KSA (menjalankan eksekutor Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Tetapkan peran
Berikan izin ke
akun layanan VM Dataproc
agar spark-driver
dan spark-executor
dapat mengakses resource project,
sumber data, tujuan data, dan layanan lain yang diperlukan oleh workload Anda.
Contoh:
Perintah berikut menetapkan peran ke akun layanan VM Dataproc default untuk mengizinkan beban kerja Spark yang berjalan di VM cluster Dataproc di GKE mengakses bucket Cloud Storage dan set data BigQuery dalam project.
gcloud projects add-iam-policy-binding \ --role=roles/storage.objectAdmin \ --role=roles/bigquery.dataEditor \ --member="project-number-compute@developer.gserviceaccount.com" \ "${PROJECT}"
Konfigurasi IAM kustom
Dataproc di GKE menggunakan Workload Identity GKE untuk menautkan akun layanan VM Dataproc default (identitas bidang data) ke tiga akun layanan GKE (KSA).
Untuk membuat dan menggunakan akun layanan Google (GSA) yang berbeda untuk ditautkan ke KSA:
Buat GSA (lihat Membuat dan mengelola akun layanan).
Contoh gcloud CLI:
Catatan:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."
- Contoh ini menetapkan nama GSA sebagai "dataproc-${USER}", tetapi Anda dapat menggunakan nama yang berbeda.
Tetapkan variabel lingkungan:
Catatan:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace
DPGKE_GSA
: Contoh menetapkan dan menggunakanDPGKE_GSA
sebagai nama variabel yang berisi alamat email GSA Anda. Anda dapat menetapkan dan menggunakan nama variabel yang berbeda.DPGKE_NAMESPACE
: Namespace GKE default adalah nama cluster Dataproc di GKE Anda.
Saat membuat cluster Dataproc di GKE, tambahkan properti berikut agar Dataproc menggunakan GSA Anda, bukan GSA default:
--properties "dataproc:dataproc.gke.agent.google-service-account=${DPGKE_GSA}" \ --properties "dataproc:dataproc.gke.spark.driver.google-service-account=${DPGKE_GSA}" \ --properties "dataproc:dataproc.gke.spark.executor.google-service-account=${DPGKE_GSA}" \
Run the following commands to assign necessary Workload Identity permissions to the service accounts:
- Assign your GSA the
dataproc.worker
role to allow it to act as agent:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}"
Tetapkan peran
iam.workloadIdentityUser
ke KSAagent
agar KSA tersebut dapat bertindak sebagai GSA Anda:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"
Berikan peran
iam.workloadIdentityUser
ke KSAspark-driver
agar KSA tersebut dapat bertindak sebagai GSA Anda:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"
Berikan peran
iam.workloadIdentityUser
ke KSAspark-executor
agar KSA tersebut dapat bertindak sebagai GSA Anda:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- Assign your GSA the