Identidade do plano de dados
O Dataproc no GKE usa o Workload Identity do GKE para permitir que os pods no cluster do Dataproc no GKE atuem com a autoridade da conta de serviço da VM do Dataproc predefinida (identidade do plano de dados). O Workload Identity requer as seguintes autorizações para atualizar as políticas da IAM na GSA usada pelo seu cluster virtual do Dataproc no GKE:
compute.projects.getiam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy
A identidade de carga de trabalho do GKE associa as seguintes contas de serviço do GKE (KSAs) à conta de serviço da VM do Dataproc:
agentKSA (interage com o plano de controlo do Dataproc):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]spark-driverKSA (runs Spark drivers):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]spark-executorKSA (executa executores do Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Atribuir funções
Conceda autorizações à
conta de serviço da VM do Dataproc
para permitir que o spark-driver e o spark-executor acedam aos recursos do projeto,
às origens de dados, aos destinos de dados e a quaisquer outros serviços exigidos pela sua carga de trabalho.
Exemplo:
O comando seguinte atribui funções à conta de serviço da VM do Dataproc predefinida para permitir que as cargas de trabalho do Spark em execução nas VMs do cluster do Dataproc no GKE acedam aos contentores do Cloud Storage e aos conjuntos de dados do BigQuery no projeto.
gcloud projects add-iam-policy-binding \
--role=roles/storage.objectAdmin \
--role=roles/bigquery.dataEditor \
--member="project-number-compute@developer.gserviceaccount.com" \
"${PROJECT}"
Configuração personalizada da IAM
O Dataproc no GKE usa a identidade de carga de trabalho do GKE para associar a conta de serviço da VM do Dataproc predefinida (identidade do plano de dados) às três contas de serviço do GKE (KSAs).
Para criar e usar uma conta de serviço Google (GSA) diferente para associar aos KSAs:
Crie a GSA (consulte o artigo Criar e gerir contas de serviço).
Exemplo da CLI gcloud:
Notas:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."- O exemplo define o nome da GSA como "dataproc-${USER}", mas pode usar um nome diferente.
Defina variáveis de ambiente:
Notas:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespaceDPGKE_GSA: os exemplos definem e usamDPGKE_GSAcomo o nome da variável que contém o endereço de email do seu ASA. Pode definir e usar um nome de variável diferente.DPGKE_NAMESPACE: O espaço de nomes do GKE predefinido é o nome do seu cluster do Dataproc no GKE.
Quando criar o cluster do Dataproc no GKE, adicione as seguintes propriedades para que o Dataproc use a sua GSA em vez da GSA predefinida:
--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}" \Execute os seguintes comandos para atribuir as autorizações necessárias da identidade da carga de trabalho às contas de serviço:
- Atribua à sua GSA a função de
dataproc.workerpara lhe permitir agir como agente:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}" Atribua à
agentArábia Saudita a função deiam.workloadIdentityUserpara lhe permitir agir como a sua GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"Conceda à
spark-drivera função deiam.workloadIdentityUserpara lhe permitir agir como o seu 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}"Conceda à
spark-executora função deiam.workloadIdentityUserpara lhe permitir agir como o seu 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}"
- Atribua à sua GSA a função de