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
- Crea due Google Cloud progetti. Uno per contenere la VM TPU (
tpu_project) e uno per contenere il account di servizio (service_project). Per maggiori informazioni, vedi Creazione e gestione dei progetti. - Crea un account di servizio in
service_project. Per saperne di più, vedi Creazione e gestione dei service account. - Crea una rete e abilita l'accesso privato Google. Per saperne di più, consulta Creazione e gestione delle reti e Configura l'accesso privato Google per un indirizzo IP interno.
- Disattiva le seguenti policy dell'organizzazione. Per saperne di più, consulta Vincoli delle policy dell'organizzazione.
constraints/iam.disableCrossProjectServiceAccountUsagein entrambi i progetticonstraints/compute.vmExternalIpAccess(per accedere alla VM con SSH, facoltativo)
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
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
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
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