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

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 dem Dienstkonto, in tpu_project die Rolle „TPU-Dienst-Agent“ zu verwenden.

    gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \
    --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
    --role=roles/cloudtpu.serviceAgent
  2. 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
  3. 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