Utilizzare un account di servizio tra progetti

Questo documento descrive come utilizzare un account di servizio tra progetti durante la creazione di una VM TPU. Un account di servizio tra progetti è un account di servizio che si trova in un progetto diverso dalla VM TPU.

Tieni presente che le seguenti istruzioni non prendono in considerazione il VPC condiviso o i Controlli di servizio VPC. Per supportarne l'utilizzo potrebbero essere necessarie configurazioni o autorizzazioni aggiuntive. Per saperne di più, consulta Creare e modificare VPC condiviso condivise e Panoramica dei Controlli di servizio VPC.

Prima di iniziare

Definisci le variabili di ambiente

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

Imposta autorizzazioni IAM

  1. Consenti al tuo account di servizio di utilizzare il ruolo Agente di servizio TPU in tpu_project.

    gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \
    --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
    --role=roles/cloudtpu.serviceAgent
  2. Aggiungi il ruolo serviceAccountUser all'agente di servizio 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. Se il tuo carico di lavoro è in esecuzione in container Docker, consenti al service agent Compute Engine di accedere al server di metadati.

    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 TPU in tpu_project

Crea una VM TPU in tpu_project utilizzando il account di servizio in 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