ワークロード オペレーターは、Confidential Space ワークロード VM インスタンスにオプションを渡して、実行前に動作を決定できます。一部のフラグには変更されない必須の値がありますが、次の選択を行う必要があります。
VM インスタンスを本番環境またはデバッグの Confidential Space イメージのどちらに基づいて作成するか。
ワークロード データのプライバシーを保護するために、AMD SEV、インテル TDX、または NVIDIA Confidential Computing を使用したインテル TDX(プレビュー)を使用するかどうか。
渡す必要がある VM メタデータ変数。これには、実行するワークロード コンテナ イメージ、Cloud Logging にログを記録するかどうか、設定する環境変数などの詳細が含まれます。
ワークロードを実行するために VM に接続するサービス アカウントと、他のプロジェクトの機密データにアクセスして結果をどこかに書き込むために必要な権限。
VM インスタンスが実行されるゾーン。
Confidential VM を作成し、WORKLOAD_CONTAINER_NAME という Docker コンテナを実行する例を次に示します。
CPU ベースのワークロード
gcloud compute instances create INSTANCE_NAME \
--confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
--machine-type=MACHINE_TYPE_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--zone=ZONE_NAME \
--project=PROJECT_ID
次の値を指定します。
INSTANCE_NAME
: 新しい VM インスタンスの名前。CONFIDENTIAL_COMPUTING_TECHNOLOGY
: 使用する Confidential Computing テクノロジーのタイプ。次のいずれかの値を選択します。SEV
TDX
MACHINE_TYPE_NAME
: VM のマシンタイプ(例:n2d-standard-2
)。Confidential VM インスタンスの有効なマシンタイプは、選択した Confidential Computing テクノロジー(AMD SEV または Intel TDX)によって決まります。マシンタイプ、CPU、ゾーンをご覧ください。MAINTENANCE_POLICY
: SEV を使用する N2D マシンタイプの場合は、ライブ マイグレーションをサポートするためにMIGRATE
に設定します。他のすべてのマシンタイプでは、ライブ マイグレーションをサポートしていないため、この値をTERMINATE
に設定します。IMAGE_FAMILY_NAME
: Confidential Space イメージのファミリー。次のいずれかを選択します。本番環境ワークロードの
confidential-space
デバッグ ワークロード用の
confidential-space-debug
WORKLOAD_AUTHOR_PROJECT
: ワークロード コンテナが保存されている Artifact Registry リポジトリをホストするプロジェクトの ID。REPOSITORY_NAME
: ワークロード コンテナが保存されている Artifact Registry リポジトリ名。WORKLOAD_CONTAINER_NAME
: ワークロード コンテナの名前。WORKLOAD_SERVICE_ACCOUNT_NAME
: ワークロードを実行するサービス アカウントの名前。WORKLOAD_OPERATOR_PROJECT_ID
: ワークロードを実行するプロジェクトの ID。ZONE_NAME
: VM インスタンスが実行されるゾーン(us-west1-b
など)。Confidential Space には、特定のロケーションで使用可能な次のサービスが必要です。使用中の Confidential Computing テクノロジーに基づく Confidential VM
PROJECT_ID
: 省略可。VM インスタンスを作成するプロジェクトの ID。
GPU ベースのワークロード
始める前に
Confidential Space は、H100 GPU での NVIDIA Confidential Computing(プレビュー)のみをサポートしています。
リクエストするリソースに十分な GPU 割り当てがあることを確認するには、GPU 割り当てを確認します。GPU を使用する Confidential VM インスタンスの場合は、リソースを使用するためにプリエンプティブル GPU 割り当てをリクエストします。GPU 割り当てをリクエストするときは、各リージョンで作成する GPU モデルに対する割り当てに加え、すべてのリージョンにおけるすべてのタイプの GPU の合計数に対するグローバル割り当て(
GPUs (all regions)
)もリクエストする必要があります。割り当ての使用量については、GPU VM とプリエンプティブルの数量に基づく割り当てをご覧ください。
MIG でサイズ変更リクエストを作成する際の制限事項を確認します。
NVIDIA Confidential Computing(プレビュー)に必要なドライバをインストールするには、値が
true
のメタデータ変数tee-install-gpu-driver
を渡す必要があります。NVIDIA ドライバと CUDA ツールキットには、30 GB 以上の容量の VM ブートディスクをおすすめします。
GPU ベースのワークロードをデプロイする
GPU ベースのワークロードをデプロイするには、スポットまたは Flex Start(プレビュー)プロビジョニング モデルを使用して Confidential VM インスタンスを作成する必要があります。
スポット
Spot プロビジョニング モデルを使用するには、アクセラレータ最適化 VM インスタンスを作成します。
gcloud compute instances create INSTANCE_NAME \
--provisioning-model=SPOT \
--confidential-compute-type=TDX \
--machine-type=a3-highgpu-1g \
--maintenance-policy=TERMINATE \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY_NAME \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest~tee-install-gpu-driver=true" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--boot-disk-size=30G \
--zone=ZONE_NAME \
--project=PROJECT_ID
次の値を指定します。
INSTANCE_NAME
: 新しい VM インスタンスの名前。IMAGE_FAMILY_NAME
: Confidential Space イメージのファミリー。次のいずれかを選択します。本番環境ワークロードの
confidential-space-preview-cgpu
デバッグ ワークロード用の
confidential-space-debug-preview-cgpu
WORKLOAD_AUTHOR_PROJECT
: ワークロードが実行されているプロジェクト ID。REPOSITORY_NAME
: Artifact Registry リポジトリ名。WORKLOAD_CONTAINER_NAME
: ワークロード コンテナの名前。WORKLOAD_SERVICE_ACCOUNT_NAME
: ワークロードを実行するサービス アカウントの名前。WORKLOAD_OPERATOR_PROJECT_ID
: ワークロードを実行するプロジェクトの ID。ZONE_NAME
: NVIDIA Confidential Computing をサポートするゾーン(プレビュー)のいずれか。PROJECT_ID
: 省略可。VM インスタンスを作成するプロジェクトの ID。
Flex Start
Flex Start(プレビュー)プロビジョニング モデルを使用するには、インスタンス テンプレートを作成してから、マネージド インスタンス グループ(MIG)を作成します。
インスタンス テンプレートの作成:
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --provisioning-model=FLEX_START \ --confidential-compute-type=TDX \ --machine-type=a3-highgpu-1g \ --maintenance-policy=TERMINATE \ --shielded-secure-boot \ --image-project=confidential-space-images \ --image-family=IMAGE_FAMILY_NAME \ --metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest~tee-install-gpu-driver=true" \ --service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \ --scopes=cloud-platform \ --boot-disk-size=30G \ --reservation-affinity=none \ --max-run-duration=RUN_DURATION \ --instance-termination-action=DELETE \ --project=PROJECT_ID
次の値を指定します。
INSTANCE_TEMPLATE_NAME
: 新しい VM インスタンス テンプレートの名前。IMAGE_FAMILY_NAME
: Confidential Space イメージのファミリー。次のいずれかを選択します。本番環境ワークロードの
confidential-space-preview-cgpu
デバッグ ワークロード用の
confidential-space-debug-preview-cgpu
WORKLOAD_AUTHOR_PROJECT
: ワークロードが実行されているプロジェクト ID。REPOSITORY_NAME
: Artifact Registry リポジトリ名。WORKLOAD_CONTAINER_NAME
: ワークロード コンテナの名前。WORKLOAD_SERVICE_ACCOUNT_NAME
: ワークロードを実行するサービス アカウントの名前。WORKLOAD_OPERATOR_PROJECT_ID
: ワークロードを実行するプロジェクトの ID。RUN_DURATION
: リクエストされた VM インスタンスの実行期間。値は、日数、時間、分、秒として指定し、その後にそれぞれd
、h
、m
、s
を続ける必要があります。たとえば、30 分の場合は30m
を指定し、1 日と 2 時間 3 分 4 秒の場合は1d2h3m4s
を指定します。値は 10 分~ 7 日の範囲で指定してください。PROJECT_ID
: 省略可。VM インスタンスを作成するプロジェクトの ID。
instance-groups managed create
コマンドを使用して、ゾーン MIG を作成します。gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template=INSTANCE_TEMPLATE_NAME \ --size=0 \ --zone=ZONE_NAME \ --default-action-on-vm-failure=do_nothing
次の値を指定します。
INSTANCE_GROUP_NAME
: MIG の名前。INSTANCE_TEMPLATE_NAME
: GPU VM のインスタンス テンプレートの名前。ZONE_NAME
: NVIDIA Confidential Computing をサポートするゾーン(プレビュー)のいずれか。
MIG で、サイズ変更リクエストを作成します。必要な GPU VM インスタンスの数と、それらの VM インスタンスを実行する期間を指定します。
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
次の値を指定します。
INSTANCE_GROUP_NAME
: MIG の名前。INSTANCE_TEMPLATE_NAME
: GPU VM インスタンスのインスタンス テンプレートの名前。ZONE_NAME
: NVIDIA Confidential Computing をサポートするゾーン(プレビュー)のいずれか。RESIZE_REQUEST_NAME
: サイズ変更リクエストの名前。COUNT
: グループに一度にすべて追加する VM インスタンスの数。
作成するサイズ変更リクエストは、MIG がリクエストされたすべての GPU VM インスタンスを作成するまで
ACCEPTED
状態で保持されます。グループ内にすべての GPU VM インスタンスが作成されると、リクエストの状態がSUCCEEDED
に変わります。サイズ変更リクエストに十分なリソースが使用可能になると、VM インスタンスが MIG に追加され、ワークロードを実行するために起動されます。MIG に存在するインスタンスを一覧表示するには、次のコマンドを実行します。
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
次の値を指定します。
INSTANCE_GROUP_NAME
: MIG の名前。ZONE_NAME
: VM インスタンスのリストを取得するサポートされているゾーン。PROJECT_ID
: 省略可。VM インスタンスのリストを取得するプロジェクトの ID。
接続されたサービス アカウント
ワークロードを実行するには、サービス アカウントをワークロードの Confidential VM に接続する必要があります。サービス アカウントは次のように設定する必要があります。
次のロールを使用します。
roles/confidentialcomputing.workloadUser
を使用して証明書トークンを生成します。roles/artifactregistry.reader
: Artifact Registry に保存されているワークロード コンテナ イメージを取得します。STDOUT
とSTDERR
を Cloud Logging にリダイレクトする場合は、roles/logging.logWriter
。
データ コラボレーターが機密データを保存する場所(Cloud Storage バケットや BigQuery テーブルなど)への読み取りアクセス権。
ワークロードがデータを出力する場所(Cloud Storage バケットなど)への書き込みアクセス権。データ コラボレーターには、この場所に対する読み取りアクセス権が必要です。
また、データ コラボレーターとワークロード オペレーターは、次の設定を行う必要があります。
データ コラボレーターがリソースへの直接アクセスではなくサービス アカウントの権限借用を使用している場合は、サービス アカウントを属性条件として Workload Identity プール プロバイダに追加する必要があります。
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
ワークロード オペレーターがサービス アカウントの権限を借用するには、
roles/iam.serviceAccountUser
ロールが必要です。これにより、ワークロード VM インスタンスにアタッチしてワークロードを実行できます。
メタデータ変数
VM の作成時に --metadata
オプションに変数を渡すことで、Confidential Space ワークロード VM の動作を変更できます。
複数の変数を渡すには、まず --metadata
値の前に ^~^
を付けて区切り文字を設定します。これは、変数値で ,
が使用されているため、区切り文字を ~
に設定します。
次に例を示します。
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
次の表に、ワークロード VM に設定できるメタデータ変数を示します。
メタデータキー | Type | 説明と値 |
---|---|---|
連携するサービス:
|
文字列 |
必須。これは、ワークロード コンテナの場所を指します。 例
|
連携するサービス:
|
JSON 文字列配列 |
ワークロード コンテナに Linux 機能を追加します。 例
|
連携するサービス:
|
ブール値 |
デフォルトは 例
|
連携するサービス:
|
JSON 文字列配列 |
ワークロード コンテナの 例
|
連携するサービス:
|
定義された文字列 |
ワークロード コンテナの confidential-space-launcher フィールドで 有効な値は次のとおりです。
シリアル コンソールのログ量が多いと、ワークロードのパフォーマンスに影響する可能性があります。 例
|
|
Integer |
例
|
連携するサービス:
|
文字列 |
ワークロード コンテナの環境変数を設定します。ワークロード作成者は、環境変数名を
例
|
連携するサービス:
|
文字列 |
ワークロード オペレーターによって権限を借用できるサービス アカウントのリスト。ワークロード オペレーターが、サービス アカウントの権限借用を許可されている必要があります。 複数のサービス アカウントをカンマで区切って指定できます。 例
|
連携するサービス:
|
ブール値 |
NVIDIA の Confidential Computing GPU ドライバをインストールするかどうか。NVIDIA Confidential Computing(プレビュー)をサポートするマシンタイプが必要です。 例
|
連携するサービス:
|
ブール値 |
デフォルトは 例
|
連携するサービス:
|
文字列 |
セミコロンで区切られたマウント定義のリスト。マウント定義は、Key-Value ペアのカンマ区切りリストで構成され、 例
|
連携するサービス:
|
定義された文字列 |
ワークロードが停止したときのコンテナ ランチャーの再起動ポリシー 有効な値は次のとおりです。
この変数は、本番環境の Confidential Space イメージでのみサポートされています。 例
|
連携するサービス:
|
文字列 |
Sigstore Cosign によって生成された署名を保存するコンテナ リポジトリのカンマ区切りのリスト。 例
|
スケーリング
本番環境の Confidential Space ワークロードのスケーリングと高可用性については、マネージド インスタンス グループをご覧ください。