Usar uma conta de serviço entre projetos
Este documento descreve como usar uma conta de serviço entre projetos ao criar uma VM de TPU. Essa conta de serviço fica em um projeto diferente da VM de TPU.
Estas instruções não incluem considerações sobre a VPC compartilhada ou o VPC Service Controls. Outras configurações ou permissões podem ser necessárias para oferecer suporte ao uso delas. Para mais informações, consulte Criar e modificar redes VPC compartilhadas e Visão geral do VPC Service Controls.
Antes de começar
- Crie dois projetos do Google Cloud . Um deles é destinado à VM de TPU (
TPU_PROJECT) e o outro à conta de serviço (SERVICE_PROJECT). Para mais informações, consulte Criar e gerenciar projetos. - Crie uma conta de serviço no
SERVICE_PROJECT. Para mais informações, consulte Como criar e gerenciar contas de serviço. - Crie uma rede e ative o Acesso privado do Google. Para mais informações, consulte Criar e gerenciar redes e Configurar o Acesso privado do Google para um endereço IP interno.
- Desative as políticas da organização abaixo. Para mais informações, consulte
Restrições de políticas da organização.
constraints/iam.disableCrossProjectServiceAccountUsagenos dois projetos;constraints/compute.vmExternalIpAccess(para acessar a VM com SSH, opcional).
Definir as permissões do IAM
Conceda à conta de usuário o papel Usuário da conta de serviço para permitir que ela anexe a conta de serviço à instância de VM.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --member=user:USER_EMAIL \ --role=roles/iam.serviceAccountUserSubstitua os seguintes marcadores de posição:
SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço.SERVICE_PROJECT_ID: o ID do projeto que contém a conta de serviço.USER_EMAIL: o endereço de e-mail da conta de usuário.
Se a carga de trabalho for executada em contêineres do Docker, conceda ao Agente de serviço do Compute Engine acesso ao servidor de metadados.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --role=roles/iam.serviceAccountTokenCreator \ --member=serviceAccount:service-TPU_PROJECT_ID@compute-system.iam.gserviceaccount.comSubstitua os seguintes marcadores de posição:
SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço.SERVICE_PROJECT_ID: o ID do projeto que contém a conta de serviço.TPU_PROJECT_ID: o ID do projeto que contém a VM de TPU.
Criar uma VM de TPU no projeto de TPU
Crie uma VM de TPU no projeto de TPU usando a conta de serviço no projeto de serviço.
gcloud compute instances create TPU_NAME \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--service-account=SERVICE_ACCOUNT_EMAIL \
--project=TPU_PROJECT_ID \
--zone=ZONE \
--maintenance-policy=TERMINATE
Substitua os seguintes marcadores de posição:
TPU_NAME: o nome da VM de TPU.MACHINE_TYPE: o tipo de máquina.IMAGE_FAMILY: a família de imagens do SO para a VM de TPU. Para instalar uma versão específica do SO, use a--imageflag.IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, esse éubuntu-os-accelerator-images.SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço.TPU_PROJECT_ID: o ID do projeto que contém a VM de TPU.ZONE: a zona da VM de TPU.