Utilizzare un account di servizio tra progetti
Questo documento illustra come utilizzare un account di servizio tra progetti quando crei 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 istruzioni riportate di seguito 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 le 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 l'account di servizio (service_project
). Per ulteriori informazioni, consulta Creare e gestire i progetti. - Crea un account di servizio in
service_project
. Per scoprire di più, consulta la pagina Creare e gestire gli account di servizio. - Crea una rete e abilita l'accesso privato Google. Per ulteriori informazioni, consulta Creare e gestire le reti e Configurare l'accesso privato Google per un indirizzo IP interno.
- Disattiva i seguenti criteri dell'organizzazione. Per ulteriori informazioni, consulta
Vincoli delle norme dell'organizzazione.
constraints/iam.disableCrossProjectServiceAccountUsage
in 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
Impostazione delle 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 carico di lavoro viene eseguito in container Docker, consenti all'agente di servizio 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 l'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