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

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

  1. 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
  2. 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
  3. 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