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.
Diese Anleitung berücksichtigt weder freigegebene VPC noch VPC Service Controls. Möglicherweise sind zusätzliche Konfigurationen oder Berechtigungen erforderlich, um ihre Verwendung zu unterstützen. Weitere Informationen finden Sie unter Gemeinsam freigegebene VPC 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)
IAM-Berechtigungen festlegen
Weisen Sie Ihrem Nutzerkonto die Rolle Dienstkontonutzer zu, damit es das Dienstkonto an die VM-Instanz anhängen kann.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --member=user:USER_EMAIL \ --role=roles/iam.serviceAccountUserErsetzen Sie die folgenden Platzhalter:
SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des Dienstkontos.SERVICE_PROJECT_ID: Die ID des Projekts, das das Dienstkonto enthält.USER_EMAIL: Die E-Mail-Adresse des Nutzerkontos.
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 \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --role=roles/iam.serviceAccountTokenCreator \ --member=serviceAccount:service-TPU_PROJECT_ID@compute-system.iam.gserviceaccount.comErsetzen Sie die folgenden Platzhalter:
SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des Dienstkontos.SERVICE_PROJECT_ID: Die ID des Projekts, das das Dienstkonto enthält.TPU_PROJECT_ID: Die ID des Projekts, das die TPU-VM enthält.
TPU-VM im TPU-Projekt erstellen
Erstellen Sie im TPU-Projekt eine TPU-VM mit dem Dienstkonto im Dienstprojekt.
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
Ersetzen Sie die folgenden Platzhalter:
TPU_NAME: Der Name der TPU-VM.MACHINE_TYPE: Der Maschinentyp.IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Verwenden Sie das Flag--image, um eine bestimmte Betriebssystemversion zu installieren.IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Bei TPU-Images ist diesubuntu-os-accelerator-images.SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des Dienstkontos.TPU_PROJECT_ID: Die ID des Projekts, das die TPU-VM enthält.ZONE: Die Zone der TPU-VM.