Identité du plan de données
Managed Service pour Apache Spark sur GKE utilise l'identité de charge de travail GKE pour permettre aux pods du cluster Managed Service pour Apache Spark sur GKE d'agir avec l'autorité du compte de service de VM Managed Service pour Apache Spark par défaut (identité du plan de données). L'identité de charge de travail nécessite les autorisations suivantes pour mettre à jour les stratégies IAM sur le GSA utilisé par votre cluster virtuel Managed Service pour Apache Spark sur GKE :
compute.projects.getiam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy
L'identité de charge de travail GKE associe les comptes de service GKE (KSA) suivants au compte de service de VM Managed Service pour Apache Spark :
agentKSA (interagit avec le plan de contrôle Managed Service pour Apache Spark) :
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]- KSA
spark-driver(exécute les pilotes Spark) :serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver] - KSA
spark-executor(exécute les exécuteurs Spark) :serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Attribuer des rôles
Accordez des autorisations au
compte de service de VM Managed Service pour Apache Spark
afin de permettre à spark-driver et spark-executor d'accéder aux ressources de projet,
aux sources de données, aux récepteurs de données et à tous les autres services requis par votre charge de travail.
Exemple :
La commande suivante attribue des rôles au compte de service de VM Managed Service pour Apache Spark par défaut afin de permettre aux charges de travail Spark exécutées sur des VM de cluster Managed Service pour Apache Spark sur GKE d'accéder aux buckets Cloud Storage et aux ensembles de données BigQuery du projet.
gcloud projects add-iam-policy-binding \
--role=roles/storage.objectAdmin \
--role=roles/bigquery.dataEditor \
--member="project-number-compute@developer.gserviceaccount.com" \
"${PROJECT}"
Configuration IAM personnalisée
Managed Service pour Apache Spark sur GKE utilise l'identité de charge de travail GKE pour lier le compte de service de VM Managed Service pour Apache Spark par défaut (identité du plan de données) aux trois comptes de service GKE (KSA).
Pour créer et utiliser un autre compte de service Google (GSA) à lier aux KSA :
Créez le GSA (consultez Créer et gérer des comptes de service).
Exemple gcloud CLI :
Remarques :gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Managed Service for Apache Spark on GKE workloads."- L'exemple définit le nom du GSA sur "dataproc-${USER}", mais vous pouvez utiliser un autre nom.
Définissez des variables d'environnement :
Remarques :PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespaceDPGKE_GSA: les exemples définissent et utilisentDPGKE_GSAcomme nom de la variable contenant l'adresse e-mail de votre GSA. Vous pouvez définir et utiliser un autre nom de variable.DPGKE_NAMESPACE: l'espace de noms GKE par défaut correspond au nom de votre cluster Managed Service pour Apache Spark sur GKE.
Lorsque vous créez le cluster Managed Service pour Apache Spark sur GKE, ajoutez les propriétés suivantes pour que Managed Service pour Apache Spark utilise votre GSA au lieu du GSA par défaut :
--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}" \-
- Attribuez le rôle
dataproc.workerà votre GSA pour lui permettre d'agir en tant qu'agent :gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}" Attribuez le rôle
iam.workloadIdentityUserau KSAagentpour lui permettre d'agir en tant que GSA :gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"Attribuez le rôle
iam.workloadIdentityUserau KSAspark-driverpour lui permettre d'agir en tant que 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}"Attribuez le rôle
iam.workloadIdentityUserau KSAspark-executorpour lui permettre d'agir en tant que 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}"
- Attribuez le rôle