Utiliser un compte de service multiprojet
Ce document explique comment utiliser un compte de service multiprojet lors de la création d'une VM TPU. Un compte de service multiprojet est un compte de service situé dans un projet différent de celui de la VM TPU.
Ces instructions ne tiennent pas compte du VPC partagé ni de VPC Service Controls. Des configurations ou des autorisations supplémentaires peuvent être nécessaires pour les utiliser. Pour en savoir plus, consultez Créer et modifier des réseaux VPC partagés et Présentation de VPC Service Controls.
Avant de commencer
- Créez deux projets Google Cloud . Le premier contiendra la VM TPU (
TPU_PROJECT) et l'autre contiendra le compte de service (SERVICE_PROJECT). Pour en savoir plus, consultez Créer et gérer des projets. - Créez un compte de service dans
SERVICE_PROJECT. Pour en savoir plus, consultez Créer et gérer des comptes de service. - Créez un réseau et activez l'accès privé à Google. Pour en savoir plus, consultez Créer et gérer des réseaux et Configurer l'accès privé à Google pour une adresse IP interne.
- Désactivez les règles d'administration suivantes. Pour en savoir plus, consultez Contraintes liées aux règles d'administration.
constraints/iam.disableCrossProjectServiceAccountUsagedans les deux projetsconstraints/compute.vmExternalIpAccess(pour accéder à la VM avec SSH, facultatif)
Définir les autorisations IAM
Attribuez à votre compte utilisateur le rôle Utilisateur du compte de service pour lui permettre d'associer le compte de service à l'instance de VM.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --member=user:USER_EMAIL \ --role=roles/iam.serviceAccountUserRemplacez les espaces réservés suivants :
SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service.SERVICE_PROJECT_ID: ID du projet contenant le compte de service.USER_EMAIL: adresse e-mail du compte utilisateur.
Si votre charge de travail s'exécute dans des conteneurs Docker, accordez à l'agent de service Compute Engine l'accès au serveur de métadonnées.
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.comRemplacez les espaces réservés suivants :
SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service.SERVICE_PROJECT_ID: ID du projet contenant le compte de service.TPU_PROJECT_ID: ID du projet contenant la VM TPU.
Créer une VM TPU dans le projet TPU
Créez une VM TPU dans le projet TPU à l'aide du compte de service dans le projet de service.
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
Remplacez les espaces réservés suivants :
TPU_NAME: nom de la VM TPU.MACHINE_TYPE: type de machine.IMAGE_FAMILY: famille d'images de l'OS pour la VM TPU. Pour installer une version spécifique de l'OS, utilisez l'option--image.IMAGE_PROJECT: projet contenant l'image de l'OS. Pour les images TPU, il s'agit deubuntu-os-accelerator-images.SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service.TPU_PROJECT_ID: ID du projet contenant la VM TPU.ZONE: zone de la VM TPU.