Identità del piano dati
Dataproc su GKE utilizza l'identità dei carichi di lavoro GKE per consentire ai pod all'interno del cluster Dataproc su GKE di agire con l'autorità del service account VM Dataproc predefinito (identità del piano dati). L'identità dei carichi di lavoro richiede le seguenti autorizzazioni per aggiornare i criteri IAM sul GSA utilizzato dal cluster virtuale Dataproc su GKE:
compute.projects.getiam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy
L'identità dei carichi di lavoro GKE collega i seguenti service account GKE (KSA) al service account VM Dataproc:
agentKSA (interagisce con il piano di controllo Dataproc):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]- KSA
spark-driver(esegue i driver Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver] - KSA
spark-executor(esegue gli executor Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Assegna ruoli
Concedi le autorizzazioni al
service account VM Dataproc
per consentire a spark-driver e spark-executor di accedere alle risorse del progetto,
alle origini dati, ai sink di dati e a qualsiasi altro servizio richiesto dal carico di lavoro.
Esempio:
Il seguente comando assegna i ruoli al service account VM Dataproc predefinito per consentire ai carichi di lavoro Spark in esecuzione sulle VM del cluster Dataproc su GKE di accedere ai bucket Cloud Storage e ai set di dati BigQuery nel progetto.
gcloud projects add-iam-policy-binding \
--role=roles/storage.objectAdmin \
--role=roles/bigquery.dataEditor \
--member="project-number-compute@developer.gserviceaccount.com" \
"${PROJECT}"
Configurazione IAM personalizzata
Dataproc su GKE utilizza l'identità dei carichi di lavoro GKE per collegare il service account VM Dataproc predefinito (identità del piano dati) ai tre service account GKE (KSA).
Per creare e utilizzare un altro service account Google (GSA) da collegare a i KSA:
Crea il GSA (vedi Creazione e gestione dei service account).
Esempio dell'interfaccia a riga di comando gcloud:
Note:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."- L'esempio imposta il nome del GSA come "dataproc-${USER}", ma puoi utilizzare un nome diverso.
Imposta le variabili di ambiente:
Note:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespaceDPGKE_GSA: gli esempi impostano e utilizzanoDPGKE_GSAcome nome della variabile che contiene l'indirizzo email del tuo GSA. Puoi impostare e utilizzare un nome di variabile diverso.DPGKE_NAMESPACE: lo spazio dei nomi GKE predefinito è il nome del cluster Dataproc su GKE.
Quando crei il cluster Dataproc su GKE, aggiungi le seguenti proprietà per consentire a Dataproc di utilizzare il tuo GSA anziché quello predefinito:
--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}" \Esegui i seguenti comandi per assegnare le autorizzazioni dell'identità dei carichi di lavoro necessarie Workload Identity ai service account:
- Assegna al tuo GSA il ruolo
dataproc.workerper consentirgli di fungere da agente:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}" Assegna al KSA
agentil ruoloiam.workloadIdentityUserper consentirgli di fungere da GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"Assegna al KSA
spark-driveril ruoloiam.workloadIdentityUserper consentirgli di fungere da GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"Assegna al KSA
spark-executoril ruoloiam.workloadIdentityUserper consentirgli di fungere da GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- Assegna al tuo GSA il ruolo