Identität der Datenebene
Managed Service for Apache Spark in GKE verwendet GKE-Arbeitslastidentität, damit Pods im Managed Service for Apache Spark in GKE-Cluster mit der Berechtigung des standardmäßigen Managed Service for Apache Spark-VM-Dienstkontos (Identität der Datenebene) agieren können. Für Workload Identity sind die folgenden Berechtigungen erforderlich, um IAM-Richtlinien für das GSA zu aktualisieren, das von Ihrem Managed Service for Apache Spark in GKE-Cluster verwendet wird:
compute.projects.getiam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy
GKE Workload Identity verknüpft die folgenden GKE-Dienstkonten (Kubernetes Service Accounts, KSAs) mit dem VM-Dienstkonto für Managed Service for Apache Spark:
agentKSA (interagiert mit der Steuerungsebene von Managed Service for Apache Spark):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]spark-driverKSA (führt Spark-Treiber aus):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]spark-executorKSA (führt Spark-Executors aus):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Rollen zuweisen
Erteilen Sie dem VM-Dienstkonto für Managed Service for Apache Spark Berechtigungen, damit die spark-driver und spark-executor auf Projektressourcen, Datenquellen, Datensenken und alle anderen Dienste zugreifen können, die für Ihre Arbeitslast erforderlich sind.
Beispiel:
Mit dem folgenden Befehl werden Rollen dem standardmäßigen Dienstkonto für Managed Service for Apache Spark-VMs zugewiesen, damit Spark-Arbeitslasten, die auf VMs des Managed Service for Apache Spark on GKE-Clusters ausgeführt werden, auf Cloud Storage-Buckets und BigQuery-Datasets im Projekt zugreifen können.
gcloud projects add-iam-policy-binding \
--role=roles/storage.objectAdmin \
--role=roles/bigquery.dataEditor \
--member="project-number-compute@developer.gserviceaccount.com" \
"${PROJECT}"
Benutzerdefinierte IAM-Konfiguration
Managed Service for Apache Spark in GKE verwendet GKE-Workload Identity, um das standardmäßige Managed Service for Apache Spark-VM-Dienstkonto (Identität der Datenebene) mit den drei GKE-Dienstkonten (KSAs) zu verknüpfen.
So erstellen und verwenden Sie ein anderes Google-Dienstkonto (GSA) zum Verknüpfen mit den KSAs:
Erstellen Sie das GSA (siehe Dienstkonten erstellen und verwalten).
Beispiel für die gcloud CLI:
Hinweise:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Managed Service for Apache Spark on GKE workloads."- Im Beispiel wird der Name des Dienstkontos auf „dataproc-${USER}“ festgelegt. Sie können aber auch einen anderen Namen verwenden.
Umgebungsvariablen festlegen:
Hinweise:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespaceDPGKE_GSA: In den Beispielen wirdDPGKE_GSAals Name der Variablen festgelegt und verwendet, die die E-Mail-Adresse Ihres GSA enthält. Sie können einen anderen Variablennamen festlegen und verwenden.DPGKE_NAMESPACE: Der Standard-GKE-Namespace ist der Name Ihres Managed Service for Apache Spark on GKE-Clusters.
Wenn Sie den Managed Service for Apache Spark-Cluster in GKE erstellen, fügen Sie die folgenden Eigenschaften hinzu, damit Managed Service for Apache Spark Ihre GSA anstelle der Standard-GSA verwendet:
--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}" \Führen Sie die folgenden Befehle aus, um den Dienstkonten die erforderlichen Workload Identity-Berechtigungen zuzuweisen:
- Weisen Sie Ihrem GSA die Rolle
dataproc.workerzu, damit es als Agent fungieren kann:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}" Weisen Sie dem KSA
agentdie Rolleiam.workloadIdentityUserzu, damit es als Ihr GSA fungieren kann:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"Weisen Sie dem KSA
spark-driverdie Rolleiam.workloadIdentityUserzu, damit es als Ihr GSA fungieren kann:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"Weisen Sie dem KSA
spark-executordie Rolleiam.workloadIdentityUserzu, damit es als Ihr GSA fungieren kann:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- Weisen Sie Ihrem GSA die Rolle