使用跨專案服務帳戶
本文說明如何建立 TPU VM 時使用跨專案服務帳戶。跨專案服務帳戶是指與 TPU VM 位於不同專案的服務帳戶。
這些操作說明未納入 Shared VPC 或 VPC Service Controls 的注意事項。可能需要額外設定或權限才能使用。詳情請參閱「建立及修改共用虛擬私有雲網路」和「VPC Service Controls 總覽」。
事前準備
- 建立兩個 Google Cloud 專案。一個用於存放 TPU VM (
TPU_PROJECT),另一個用於存放服務帳戶 (SERVICE_PROJECT)。詳情請參閱「建立及管理專案」。 - 在
SERVICE_PROJECT中建立服務帳戶。詳情請參閱「建立及管理服務帳戶」。 - 建立網路並啟用 Private Google 存取權。詳情請參閱「建立及管理網路」和「為內部 IP 位址設定 Private Google Access」。
- 停用下列組織政策。詳情請參閱「組織政策限制」。
constraints/iam.disableCrossProjectServiceAccountUsage兩個專案中constraints/compute.vmExternalIpAccess(透過 SSH 存取 VM,選用)
設定 IAM 權限
將服務帳戶使用者角色授予使用者帳戶,允許該帳戶將服務帳戶附加至 VM 執行個體。
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:使用者帳戶的電子郵件地址。
如果工作負載是在 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 VM 的專案 ID。
在 TPU 專案中建立 TPU VM
使用服務專案中的服務帳戶,在 TPU 專案中建立 TPU VM。
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 VM 的名稱。MACHINE_TYPE:機型。IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用--image標記。IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為ubuntu-os-accelerator-images。SERVICE_ACCOUNT_EMAIL:服務帳戶的電子郵件地址。TPU_PROJECT_ID:包含 TPU VM 的專案 ID。ZONE:TPU VM 的可用區。