Projektübergreifendes Dienstkonto verwenden
In diesem Dokument wird beschrieben, wie Sie ein projektübergreifendes Dienstkonto beim Erstellen einer TPU-VM verwenden. Ein projektübergreifendes Dienstkonto ist ein Dienstkonto, das sich in einem anderen Projekt als der TPU-VM befindet.
In der folgenden Anleitung werden keine freigegebene VPC oder VPC Service Controls berücksichtigt. Möglicherweise sind zusätzliche Konfigurationen oder Berechtigungen erforderlich, um die Verwendung zu unterstützen. Weitere Informationen finden Sie unter Freigegebene VPC-Netzwerke erstellen und ändern und VPC Service Controls.
Hinweis
- Erstellen Sie zwei Google Cloud -Projekte. Eines für die TPU-VM (
tpu_project
) und eines für das Dienstkonto (service_project
). Weitere Informationen finden Sie unter Projekte erstellen und verwalten. - Erstellen Sie ein Dienstkonto in der
service_project
. Weitere Informationen finden Sie unter Dienstkonten erstellen und verwalten. - Erstellen Sie ein Netzwerk und aktivieren Sie den privater Google-Zugriff. Weitere Informationen finden Sie unter Netzwerke erstellen und verwalten und Privaten Google-Zugriff für eine interne IP-Adresse konfigurieren.
- Deaktivieren Sie die folgenden Organisationsrichtlinien. Weitere Informationen finden Sie unter Einschränkungen für Organisationsrichtlinien.
constraints/iam.disableCrossProjectServiceAccountUsage
in beiden Projektenconstraints/compute.vmExternalIpAccess
(für den Zugriff auf die VM über SSH, optional)
Umgebungsvariablen definieren
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
IAM-Berechtigungen festlegen
Erlauben Sie Ihrem Dienstkonto, die Rolle „TPU-Dienst-Agent“ in der
tpu_project
zu verwenden.gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \ --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \ --role=roles/cloudtpu.serviceAgent
Weisen Sie dem TPU-Dienst-Agent die Rolle „serviceAccountUser“ zu.
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
Wenn Ihre Arbeitslast in Docker-Containern ausgeführt wird, gewähren Sie dem Compute Engine-Dienst-Agent Zugriff auf den Metadatenserver.
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
TPU-VM in der tpu_project
erstellen
Erstellen Sie eine TPU-VM in der tpu_project
mit dem Dienstkonto in der 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