Usar una cuenta de servicio entre proyectos

En este documento se explica cómo usar una cuenta de servicio entre proyectos al crear una VM de TPU. Una cuenta de servicio entre proyectos es una cuenta de servicio que se encuentra en un proyecto distinto al de la VM de TPU.

Ten en cuenta que las siguientes instrucciones no tienen en cuenta la VPC compartida ni los Controles de Servicio de VPC. Es posible que se necesiten configuraciones o permisos adicionales para poder usarlos. Para obtener más información, consulta los artículos Crear y modificar redes de VPC compartida y Descripción general de Controles de Servicio de VPC.

Antes de empezar

Definir variables de entorno

export TPU_PROJECT_ID=tpu-project-id
export SERVICE_PROJECT_ID=service-project-id
export SERVICE_ACCOUNT_EMAIL=your_service_account@$(SERVICE_PROJECT_ID).iam.gserviceaccount.com
export ZONE=your-zone
export TPU_NAME=your-tpu-name
export NETWORK=your-network
export SUBNET=your-subnet

Establecer permisos de gestión de identidades y accesos

  1. Permite que tu cuenta de servicio use el rol Agente de servicio de TPU en tpu_project.

    gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \
    --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
    --role=roles/cloudtpu.serviceAgent
  2. Añade el rol serviceAccountUser al agente de servicio de TPU.

    gcloud projects add-iam-policy-binding $SERVICE_PROJECT_ID \
    --member=serviceAccount:service-$TPU_PROJECT_ID@gcp-sa-tpu.iam.gserviceaccount.com \
    --role=roles/iam.serviceAccountUser
  3. Si tu carga de trabajo se ejecuta en contenedores Docker, permite que el agente de servicio de Compute Engine acceda al servidor de metadatos.

    gcloud iam service-accounts add-iam-policy-binding  \
    --project $SERVICE_PROJECT_ID $SERVICE_ACCOUNT_EMAIL \
    --role roles/iam.serviceAccountTokenCreator \
    --member serviceAccount:service-$TPU_PROJECT_ID@compute-system.iam.gserviceaccount.com

Crea una VM de TPU en tpu_project.

Crea una VM de TPU en tpu_project con la cuenta de servicio de service_project.

gcloud alpha compute tpus tpu-vm create $TPU_NAME \
    --description=$TPU_NAME \
    --accelerator-type=v5litepod-8 \
    --version=tpu-vm-tf-2.17.0-pod \
    --network=projects/$PROJECT_A/global/networks/$NETWORK \
    --subnetwork=$SUBNET \
    --internal-ips \
    --service-account=$SERVICE_ACCOUNT_EMAIL \
    --project=$TPU_PROJECT_ID \
    --zone=$ZONE