Identität der Datenebene
Dataproc in GKE verwendet die GKE-Arbeitslast-Identität, damit Pods innerhalb des Dataproc in GKE-Clusters mit der Autorisierung 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 GSA, die von Dataproc in GKE verwendet wird virtueller Cluster:
compute.projects.get
iam.serviceAccounts.getIamPolicy
iam.serviceAccounts.setIamPolicy
GKE Workload Identity verknüpft folgende Verknüpfungen GKE-Dienstkonten (KSAs) zum Dataproc-VM-Dienstkonto hinzufügen:
agent
KSA (interagiert mit der Dataproc-Steuerungsebene):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
spark-driver
KSA (führt Spark-Treiber aus):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
Berechtigungen für die
Dataproc-VM-Dienstkonto
um spark-driver
und spark-executor
Zugriff auf Projektressourcen zu gewähren,
Datenquellen, Datensenken und anderen Diensten, die für die Arbeitslast erforderlich sind.
Beispiel:
Mit dem folgenden Befehl werden dem Standarddienstkonto für Dataproc-VM damit Spark-Arbeitslasten auf Dataproc auf GKE-Cluster-VMs für den Zugriff auf Cloud Storage-Buckets und BigQuery-Datasets im Projekt
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
In Dataproc on GKE wird GKE Workload Identity verwendet, um das Standard-Dataproc-VM-Dienstkonto (Identität der Datenebene) mit den drei GKE-Dienstkonten (KSAs) zu verknüpfen.
Um ein anderes Google-Dienstkonto (GSA) für die Verknüpfung zu erstellen und zu verwenden der 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 Dataproc on GKE workloads."
- Im Beispiel wird der GSA-Name als „Dataproc-${USER}“ festgelegt, Sie können aber einen mit einem anderen Namen.
Legen Sie Umgebungsvariablen fest:
Hinweise:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace
DPGKE_GSA
: In den Beispielen wirdDPGKE_GSA
als Name der Variablen festgelegt und verwendet, die die E-Mail-Adresse Ihres GSA enthält. Sie können eine andere Variablenname.DPGKE_NAMESPACE
: Der Standardwert GKE-Namespace ist der Name Ihres Dataproc on GKE-Clusters.
Fügen Sie beim Erstellen des Dataproc-Clusters in GKE die folgenden Eigenschaften hinzu, damit Dataproc 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}" \
Run the following commands to assign necessary Workload Identity permissions to the service accounts:
- Assign your GSA the
dataproc.worker
role to allow it to act as agent:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}"
Weisen Sie dem KSA
agent
die Rolleiam.workloadIdentityUser
zu: als GSA verwenden:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"
Gewähren Sie dem KSA
spark-driver
die Rolleiam.workloadIdentityUser
für als GSA verwenden:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"
Gewähren Sie dem KSA
spark-executor
die Rolleiam.workloadIdentityUser
für als GSA verwenden:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- Assign your GSA the