Identità del piano dati
Managed Service for Apache Spark su GKE utilizza l'identità del carico di lavoro GKE per consentire ai pod all'interno del cluster Managed Service for Apache Spark su GKE di agire con l'autorità del service account VM Managed Service for Apache Spark predefinito (identità del piano dati). L'identità del carico di lavoro richiede le seguenti autorizzazioni per aggiornare i criteri IAM sul GSA utilizzato dal cluster virtuale Managed Service for Apache Spark su GKE:
compute.projects.getiam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy
L'identità del carico di lavoro GKE collega i seguenti service account GKE (KSA) al service account VM Managed Service for Apache Spark:
agentKSA (interagisce con il piano di controllo Managed Service for Apache Spark):
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 i ruoli
Concedi le autorizzazioni al
service account VM Managed Service for Apache Spark
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 Managed Service for Apache Spark predefinito per consentire ai carichi di lavoro Spark in esecuzione sulle VM del cluster Managed Service for Apache Spark 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
Managed Service for Apache Spark su GKE utilizza l'identità del carico di lavoro GKE per collegare il service account VM Managed Service for Apache Spark predefinito (identità del piano dati) ai tre service account GKE (KSA).
Per creare e utilizzare un altro account di servizio Google (GSA) da collegare ai KSA:
Crea il GSA (vedi Creazione e gestione degli account di servizio).
Esempio della gcloud CLI:
Note:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Managed Service for Apache Spark 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 Managed Service for Apache Spark su GKE.
Quando crei il cluster Managed Service for Apache Spark su GKE, aggiungi le seguenti proprietà per Managed Service for Apache Spark in modo che utilizzi 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}" \-
- 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