Projektübergreifendes Dienstkonto verwenden
In diesem Dokument wird beschrieben, wie Sie beim Erstellen einer TPU-VM ein projektübergreifendes Dienstkonto verwenden. Ein projektübergreifendes Dienstkonto ist ein Dienstkonto, das sich in einem anderen Projekt als die TPU-VM befindet.
Die folgenden Anleitungen berücksichtigen weder gemeinsam genutzte VPCs noch VPC Service Controls. Für deren Verwendung sind möglicherweise zusätzliche Konfigurationen bzw. Berechtigungen erforderlich. Weitere Informationen finden Sie unter Freigegebene VPC-Netzwerke erstellen und ändern und VPC Service Controls.
Vorbereitung
- Erstellen Sie zwei Projekte für Google Cloud . 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 im
service_project. Weitere Informationen finden Sie unter Dienstkonten erstellen und verwalten. - Erstellen Sie ein Netzwerk und aktivieren Sie den privaten 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.disableCrossProjectServiceAccountUsagein beiden Projektenconstraints/compute.vmExternalIpAccess(optional, für den Zugriff auf die VM über SSH)
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 dem Dienstkonto, in
tpu_projectdie Rolle „TPU-Dienst-Agent“ zu verwenden.gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \ --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \ --role=roles/cloudtpu.serviceAgent
Fügen Sie dem TPU-Dienst-Agent die Rolle „serviceAccountUser“ hinzu.
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-Dienstagent 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 tpu_project erstellen
Erstellen Sie in tpu_project mit dem Dienstkonto aus service_project eine TPU-VM.
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