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

Definir as permissões do IAM

  1. 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.serviceAccountUser
    

    Substitua 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.
  2. 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.com
    

    Substitua 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 --image flag.
  • 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.