Identität der Datenebene
Dataproc in GKE verwendet die GKE-Arbeitslastidentität, damit Pods im Dataproc on GKE-Cluster mit der Berechtigung des standardmäßigen Dataproc-VM-Dienstkontos (Identität der Datenebene) agieren können. Workload Identity erfordert die folgenden Berechtigungen zum Aktualisieren von IAM-Richtlinien in der Google Search Appliance, die vom virtuellen Dataproc in GKE-Cluster verwendet wird:
compute.projects.get
iam.serviceAccounts.getIamPolicy
iam.serviceAccounts.setIamPolicy
Die GKE-Workload Identity verknüpft die folgenden GKE-Dienstkonten (KSAs) mit dem Dataproc-VM-Dienstkonto:
agent
KSA (interagiert mit der Dataproc-Steuerungsebene):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
spark-driver
KSA (mit Spark-Treibern):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
spark-executor
KSA (führt Spark-Executors aus):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Rollen zuweisen
Erteilen Sie dem Dataproc-VM-Dienstkonto Berechtigungen, damit spark-driver
und spark-executor
auf Projektressourcen, Datenquellen, Datensenken und andere Dienste zugreifen können, die für Ihre Arbeitslast erforderlich sind.
Beispiel:
Mit dem folgenden Befehl werden dem Dataproc-VM-Standarddienstkonto Rollen zugewiesen, damit Spark-Arbeitslasten, die auf Dataproc auf GKE-Cluster-VMs 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
Dataproc in GKE verwendet die GKE-Arbeitslastidentität, um das standardmäßige Dataproc-VM-Dienstkonto (Identität der Datenebene) mit den drei GKE-Dienstkonten zu verknüpfen.
So erstellen Sie ein anderes Google-Dienstkonto (GSA) und verwenden es für die Verknüpfung mit den KSAs:
Erstellen Sie die Google Search Appliance (siehe Dienstkonten erstellen und verwalten).
Beispiel für die gcloud CLI:
gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."
Hinweise:- Im Beispiel wird der Name der Google Search Appliance auf „dataproc-${USER}“ festgelegt, Sie können aber auch einen anderen Namen verwenden.
Legen Sie Umgebungsvariablen fest:
PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace
Hinweise:DPGKE_GSA
: In den Beispielen wirdDPGKE_GSA
als Name für die Variable festgelegt, die die E-Mail-Adresse der Google Search Appliance enthält. Sie können einen anderen Variablennamen festlegen und verwenden.DPGKE_NAMESPACE
: Der standardmäßige GKE-Namespace ist der Name Ihres Dataproc on GKE-Clusters.
Fügen Sie beim Erstellen des Dataproc on GKE-Clusters die folgenden Attribute hinzu, damit Dataproc Ihre Google Search Appliance 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 Berechtigungen für Workload Identity zuzuweisen:
- Weisen Sie Ihrer Google Search Appliance die Rolle
dataproc.worker
zu, damit sie als Kundenservicemitarbeiter fungieren kann:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}"
Weisen Sie dem KSA
agent
die Rolleiam.workloadIdentityUser
zu, damit es als Ihre Google Search Appliance 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-driver
die Rolleiam.workloadIdentityUser
zu, damit es als Ihre Google Search Appliance 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-executor
die Rolleiam.workloadIdentityUser
zu, damit es als Ihre Google Search Appliance 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 Ihrer Google Search Appliance die Rolle