プロジェクト間サービス アカウントを使用する
このドキュメントでは、TPU VM の作成時にプロジェクト間サービス アカウントを使用する方法について概説します。プロジェクト間サービス アカウントは、TPU VM とは異なるプロジェクトにあるサービス アカウントです。
この手順では、共有 VPC または VPC Service Controls は考慮されていません。 これらの使用をサポートするには、追加の構成または権限が必要になる場合があります。詳細については、共有 VPC ネットワークの作成と変更 と VPC Service Controls の概要をご覧ください。
始める前に
- Google Cloud プロジェクトを 2 つ作成します。1 つは TPU VM 用(
TPU_PROJECT)、もう 1 つはサービス アカウント用(SERVICE_PROJECT)です。詳細については、プロジェクトの作成と管理をご覧ください。 SERVICE_PROJECTにサービス アカウントを作成します。詳細については、サービス アカウントの作成と管理に関する記事をご覧ください。- ネットワークを作成し、プライベート Google アクセスを有効にします。詳細については、ネットワークの作成と管理と内部 IP アドレス用のプライベート Google アクセスを構成するをご覧ください。
- 次の組織のポリシーを無効にします。詳しくは、組織のポリシーの制約をご覧ください。
- 両方のプロジェクトの
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 Service エージェントにメタデータ サーバーへのアクセス権を付与します。
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 イメージ ファミリー 。特定の OS バージョンをインストールするには、--imageフラグを使用します。IMAGE_PROJECT: OS イメージが含まれているプロジェクト。 TPU イメージの場合、これはubuntu-os-accelerator-imagesです。SERVICE_ACCOUNT_EMAIL: サービス アカウントのメールアドレス。TPU_PROJECT_ID: TPU VM が含まれているプロジェクトの ID。ZONE: TPU VM のゾーン。