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 tengono conto di VPC condiviso o Controlli di servizio VPC. Per supportarne l'utilizzo potrebbero essere necessarie configurazioni o autorizzazioni aggiuntive. Per saperne di più, consulta Creare e modificare reti VPC condiviso e Panoramica di 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 saperne di più, consulta Creare e gestire i progetti. - Crea un account di servizio in
service_project. Per saperne di più, consulta Creare e gestire i service account. - Crea una rete e attiva l'accesso privato Google. Per saperne di più, consulta Creare e gestire le reti e Configurare 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)
Definire 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
Impostare le autorizzazioni IAM
Consenti al tuo account di servizio di utilizzare il ruolo Service Agent 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 al Service Agent 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 carico di lavoro è in esecuzione nei 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
Creare 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