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.
Queste istruzioni non includono considerazioni per 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 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)
Imposta autorizzazioni IAM
Concedi al tuo account utente il ruolo Utente service account per consentirgli di collegare il account di servizio all'istanza VM.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --member=user:USER_EMAIL \ --role=roles/iam.serviceAccountUserSostituisci i seguenti segnaposto:
SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio.SERVICE_PROJECT_ID: l'ID del progetto che contiene il account di servizio.USER_EMAIL: l'indirizzo email dell'account utente.
Se il tuo carico di lavoro viene eseguito in container Docker, concedi al service agent Compute Engine l'accesso al server di metadati.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --role=roles/iam.serviceAccountTokenCreator \ --member=serviceAccount:service-TPU_PROJECT_ID@compute-system.iam.gserviceaccount.comSostituisci i seguenti segnaposto:
SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio.SERVICE_PROJECT_ID: l'ID del progetto che contiene il account di servizio.TPU_PROJECT_ID: l'ID del progetto che contiene la VM TPU.
Crea una VM TPU nel progetto TPU
Crea una VM TPU nel progetto TPU utilizzando il account di servizio nel progetto di servizio.
gcloud compute instances create TPU_NAME \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--service-account=SERVICE_ACCOUNT_EMAIL \
--project=TPU_PROJECT_ID \
--zone=ZONE \
--maintenance-policy=TERMINATE
Sostituisci i seguenti segnaposto:
TPU_NAME: il nome della VM TPU.MACHINE_TYPE: il tipo di macchina.IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Per installare una versione specifica del sistema operativo, utilizza il flag--image.IMAGE_PROJECT: Il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, questo valore èubuntu-os-accelerator-images.SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio.TPU_PROJECT_ID: l'ID del progetto che contiene la VM TPU.ZONE: la zona della VM TPU.