使用跨项目服务账号

本文档介绍了在创建 TPU 虚拟机时如何使用跨项目服务账号。跨项目服务账号是指与 TPU 虚拟机位于不同项目中的服务账号。

这些说明未考虑共享 VPC 或 VPC Service Controls。可能需要进行其他配置或获得其他权限才能支持使用这些服务。如需了解详情,请参阅创建和修改共享 VPC 网络以及 VPC Service Controls 概览

准备工作

设置 IAM 权限

  1. 为您的用户账号授予 Service Account User 角色,以便该账号将服务账号附加到虚拟机实例。

    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --project=SERVICE_PROJECT_ID \
      --member=user:USER_EMAIL \
      --role=roles/iam.serviceAccountUser
    

    替换以下占位符:

    • SERVICE_ACCOUNT_EMAIL:服务账号的电子邮件地址。
    • SERVICE_PROJECT_ID:包含服务账号的项目的 ID。
    • USER_EMAIL:用户账号的电子邮件地址。
  2. 如果您的工作负载在 Docker 容器中运行,请向 Compute Engine 服务代理授予对元数据服务器的访问权限。

    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.com
    

    替换以下占位符:

    • SERVICE_ACCOUNT_EMAIL:服务账号的电子邮件地址。
    • SERVICE_PROJECT_ID:包含服务账号的项目的 ID。
    • TPU_PROJECT_ID:包含 TPU 虚拟机的项目的 ID。

在 TPU 项目中创建 TPU 虚拟机

在 TPU 项目中使用服务项目中的服务账号创建 TPU 虚拟机。

  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

替换以下占位符:

  • TPU_NAME:TPU 虚拟机的名称。
  • MACHINE_TYPE机器类型
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。如需安装特定操作系统版本,请使用 --image 标志。
  • IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为 ubuntu-os-accelerator-images
  • SERVICE_ACCOUNT_EMAIL:服务账号的电子邮件地址。
  • TPU_PROJECT_ID:包含 TPU 虚拟机的项目的 ID。
  • ZONE:TPU 虚拟机所在的可用区。