Identidade do plano de dados
O Dataproc no GKE usa a identidade da carga de trabalho do GKE para permitir que os pods no cluster do Dataproc no GKE atuem com a autoridade da conta de serviço padrão da VM do Dataproc (identidade do plano de dados). A identidade da carga de trabalho requer as permissões a seguir para atualizar as políticas do IAM no gerador usado pelo cluster virtual do Dataproc no GKE:
compute.projects.get
iam.serviceAccounts.getIamPolicy
iam.serviceAccounts.setIamPolicy
A identidade da carga de trabalho do GKE vincula as seguintes contas de serviço do GKE (KSAs) à conta de serviço da VM do Dataproc:
agent
KSA (interage com o plano de controle do Dataproc):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
spark-driver
KSA (executa drivers do Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
spark-executor
KSA (executa executores do Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
Atribuir papéis
Conceda permissões à
conta de serviço da VM do Dataproc
para permitir que spark-driver
e spark-executor
acessem recursos do projeto,
fontes de dados, coletores de dados e outros serviços exigidos pela carga de trabalho.
Exemplo:
O comando a seguir atribui papéis à conta de serviço padrão da VM do Dataproc para permitir que cargas de trabalho do Spark em execução no Dataproc em VMs de cluster do GKE acessem buckets do Cloud Storage e 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 do IAM
O Dataproc no GKE usa a identidade da carga de trabalho do GKE para vincular a conta de serviço da VM do Dataproc (identidade do plano de dados) às três contas de serviço do GKE (KSAs).
Para criar e usar outra conta de serviço do Google (GSA, na sigla em inglês) para vincular às KSAs, siga estas etapas:
Crie a dele. Consulte Como criar e gerenciar contas de serviço.
Exemplo da CLI gcloud:
gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."
Observações:- O exemplo define o nome do GCS como "dataproc-${USER}", mas é possível usar um nome diferente.
Defina as variáveis de ambiente:
PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace
Observações:DPGKE_GSA
: os exemplos são definidos e usamDPGKE_GSA
como o nome da variável que contém o endereço de e-mail do Google Cloud. Você pode definir e usar um nome de variável diferente.DPGKE_NAMESPACE
: o namespace do GKE padrão é o nome do Dataproc no cluster do GKE.
Ao criar o cluster do Dataproc no GKE, adicione as seguintes propriedades para que o Dataproc use seu dele em vez do ISRC padrão:
--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 permissões necessárias da Identidade da carga de trabalho às contas de serviço:
- Atribua a função
dataproc.worker
à sua conta para permitir que ela atue como agente:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}"
Atribua o papel
iam.workloadIdentityUser
à KSAagent
para permitir que ela atue como seu Currents:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"
Conceda à KSA
spark-driver
o papeliam.workloadIdentityUser
para permitir que ela atue como seu Currents: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 à KSA
spark-executor
o papeliam.workloadIdentityUser
para permitir que ela atue como seu Currents: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 a função