Usa una cuenta de servicio entre proyectos
En este documento, se describe cómo usar una cuenta de servicio entre proyectos cuando creas una VM de TPU. Una cuenta de servicio entre proyectos es una cuenta de servicio que reside en un proyecto diferente al de la VM de TPU.
Estas instrucciones no incluyen consideraciones sobre la VPC compartida ni los Controles del servicio de VPC. Es posible que se requieran parámetros de configuración o permisos adicionales para admitir su uso. Para obtener más información, consulta Crea y modifica redes de VPC compartida y Descripción general de los Controles del servicio de VPC.
Antes de comenzar
- Crea dos proyectos de Google Cloud . Uno destinado a contener la VM de TPU (
TPU_PROJECT) y otro a contener la cuenta de servicio (SERVICE_PROJECT). Para obtener más información, consulta Crea y administra proyectos. - Crea una cuenta de servicio en
SERVICE_PROJECT. Para obtener más información, consulta Crea y administra cuentas de servicio. - Crea una red y habilita el Acceso privado a Google. Para obtener más información, consulta Crea y administra redes y Configura el Acceso privado a Google para una dirección IP interna.
- Inhabilita las siguientes políticas de la organización. Para obtener más información, consulta
Restricciones de las políticas de la organización.
constraints/iam.disableCrossProjectServiceAccountUsageen ambos proyectosconstraints/compute.vmExternalIpAccess(para acceder a la VM con SSH, opcional)
Configura los permisos de IAM
Otorga a tu cuenta de usuario el rol de Usuario de cuenta de servicio para permitirle adjuntar la cuenta de servicio a la instancia de VM.
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --project=SERVICE_PROJECT_ID \ --member=user:USER_EMAIL \ --role=roles/iam.serviceAccountUserReemplaza los marcadores de posición que se indican más abajo:
SERVICE_ACCOUNT_EMAIL: Es la dirección de correo electrónico de la cuenta de servicio.SERVICE_PROJECT_ID: Es el ID del proyecto que contiene la cuenta de servicio.USER_EMAIL: Es la dirección de correo electrónico de la cuenta de usuario.
Si tu carga de trabajo se ejecuta en contenedores de Docker, otorga acceso al agente de servicio de Compute Engine al servidor de metadatos.
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.comReemplaza los marcadores de posición que se indican más abajo:
SERVICE_ACCOUNT_EMAIL: Es la dirección de correo electrónico de la cuenta de servicio.SERVICE_PROJECT_ID: Es el ID del proyecto que contiene la cuenta de servicio.TPU_PROJECT_ID: Es el ID del proyecto que contiene la VM de TPU.
Crea una VM de TPU en el proyecto de TPU
Crea una VM de TPU en el proyecto de TPU con la cuenta de servicio en el proyecto de servicio.
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
Reemplaza los marcadores de posición que se indican más abajo:
TPU_NAME: Es el nombre de la VM de TPU.MACHINE_TYPE: Es el tipo de máquina.IMAGE_FAMILY: Es la familia de imágenes del SO de la VM de TPU. Para instalar una versión específica del SO, usa la marca--image.IMAGE_PROJECT: Es el proyecto que contiene la imagen de SO. Para las imágenes de TPU, esubuntu-os-accelerator-images.SERVICE_ACCOUNT_EMAIL: Es la dirección de correo electrónico de la cuenta de servicio.TPU_PROJECT_ID: Es el ID del proyecto que contiene la VM de TPU.ZONE: Es la zona de la VM de TPU.