部署工作负载


工作负载操作员可以将选项传递给 Confidential Space 工作负载虚拟机,以确定其在运行之前的行为。虽然有些标志具有不会更改的必需值,但您仍需做出以下选择:

以下举例说明了如何根据最新的生产版 Confidential Space 映像在 us-west1-b 可用区中创建机密虚拟机,并运行名为 WORKLOAD_CONTAINER_NAME 的 Docker 容器:

gcloud compute instances create workload-vm-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=us-west1-b

下表中详细说明了此示例中使用的选项。

标志 说明
--confidential-compute-type

必需。告知 Compute Engine 在创建机密虚拟机实例时要使用哪种机密计算技术。

CONFIDENTIAL_COMPUTING_TECHNOLOGY 替换为以下某个值:

  • SEV
  • TDX

保密计算技术应与您选择的映像系列相匹配。

--machine-type 可选。指定机密虚拟机的机器类型名称。如需了解支持 AMD SEV 和 Intel TDX 的机器类型,请参阅 支持的配置
--maintenance-policy 对于使用 SEV 的 N2D 机器类型,请将此属性设置为 MIGRATE 以支持实时迁移。对于所有其他机器类型,请将此值设置为 TERMINATE,因为它们 不支持实时迁移
--shielded-secure-boot 必需。指示 Compute Engine 对实例使用 安全启动
--image-project=confidential-space-images 必需。指示 Compute Engine 在 confidential-space-images 项目中查找 Confidential Space 映像

--image-family

必需。指示 Compute Engine 使用 confidential-space-images 项目中的最新 Confidential Space 映像。

如需将生产映像用于处理机密数据的最终工作负载,请将 IMAGE_FAMILY 替换为 confidential-space

如需使用调试映像进行 监控和调试,请将 IMAGE_FAMILY 替换为 confidential-space-debug

您使用的映像系列应与您选择的机密计算技术相匹配。

--metadata

必需。通过传入变量来更改 Confidential Space 虚拟机的行为。tee-image-reference 键和值是必需的,并且会指示虚拟机实例在指定的 Confidential Space 映像之上运行指定的 Docker 容器。

如需查看可用的键值对,请参阅元数据变量

--service-account 可选。关联到运行工作负载的虚拟机实例的服务账号,并模拟其他项目中关联到工作负载身份池的服务账号。如果未指定,则使用默认 Compute Engine 服务账号。
--scopes=cloud-platform 必需。设置 访问权限范围cloud-platform 范围是 大多数 Google Cloud 服务的 OAuth 范围,可让虚拟机与证明验证程序通信。
--zone

必需。虚拟机实例在其中运行的可用区。Confidential Space 需要以下服务,这些服务可在特定位置中使用:

关联的服务账号

必须将服务账号附加到工作负载的机密虚拟机,才能运行工作负载。服务账号必须按以下方式设置:

  • 具有以下角色:

  • 具有对数据协作者存储其机密数据的位置(例如 Cloud Storage 存储桶或 BigQuery 表)的读取权限。

  • 具有对工作负载应输出数据的位置(例如 Cloud Storage 存储桶)的写入权限。数据协作者应具有对此位置的读取访问权限。

此外,数据协作者和工作负载操作员还需要设置以下内容:

  • 数据协作者必须将服务账号作为属性条件添加到其工作负载身份池提供方:

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • 工作负载操作员需要 roles/iam.serviceAccountUser 角色才能模拟服务账号。这样,他们就可以将该 GPU 附加到工作负载虚拟机,以便运行工作负载。

元数据变量

您可以在创建虚拟机时,通过将变量传递到 --metadata 选项来更改 Confidential Space 工作负载虚拟机的行为。

如需传入多个变量,请首先在 --metadata 值前面添加 ^~^ 来设置分隔符。这会将分隔符设置为 ~,因为变量值中使用了 ,

例如:

metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"

下表详细介绍了您可以为工作负载虚拟机设置的元数据变量。

元数据键 类型 说明和值

tee-image-reference

互动对象

字符串

必需。指向工作负载容器的位置。

示例
tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

tee-added-capabilities

互动对象

JSON 字符串数组

向工作负载容器添加额外的 Linux 功能

示例
tee-added-capabilities="[\"CAP_SYS_ADMIN\", \"CAP_SYS_CHROOT\"]"

tee-cgroup-ns

互动对象

布尔值

默认为 false。 设置为 true 时,会在 /sys/fs/cgroup 处启用命名空间 cgroup 装载。

示例
tee-cgroup-ns=true

tee-cmd

互动对象

JSON 字符串数组

替换工作负载容器的 Dockerfile 中指定的 CMD 指令。

示例
tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

互动对象

已定义的字符串

STDOUTSTDERR 从工作负载容器输出到 Cloud Logging 或串行控制台中的 confidential-space-launcher 字段下。

有效值包括:

  • false:(默认)不进行任何日志记录。
  • true:输出到串行控制台和 Cloud Logging。
  • cloud_logging:仅输出到 Cloud Logging。
  • serial:仅输出到串行控制台。

串行控制台中的日志量过大可能会影响工作负载性能。

示例
tee-container-log-redirect=true

tee-dev-shm-size-kb

整数

设置 /dev/shm 共享内存装载的大小(以 kB 为单位)。

示例
tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

互动对象

字符串

在工作负载容器中设置环境变量。 工作负载作者还必须将环境变量名称添加到 allow_env_override 启动政策中,否则无法设置这些变量。

示例
tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

互动对象

字符串

工作负载操作员可以模拟的服务账号列表。工作负载操作员必须能够模拟服务账号

可以列出多个服务账号(以英文逗号分隔)。

示例
tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com

tee-monitoring-memory-enable

互动对象

布尔值

默认为 false。 如果设置为 true,则启用内存用量监控。机密虚拟机收集的指标属于 guest/memory/bytes_used 类型,可以在 Cloud LoggingMetrics Explorer 中查看。

示例
tee-monitoring-memory-enable=true

tee-mount

互动对象

字符串

以英文分号分隔的装载定义列表。挂载定义由以英文逗号分隔的键值对列表组成,需要 typesourcedestinationdestination 必须是绝对路径,而 type/source 必须是 tmpfs

示例
type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-restart-policy

互动对象

已定义的字符串

工作负载停止时容器启动器的重启政策

有效值包括:

  • Never(默认)
  • Always
  • OnFailure

此变量仅受生产 Confidential Space 映像支持。

示例
tee-restart-policy=OnFailure

tee-signed-image-repos

互动对象

字符串

以英文逗号分隔的容器代码库列表,用于存储由 Sigstore Cosign 生成的签名。

示例
tee-signed-image-repos=us-docker.pkg.dev/projectA/repo/example,us-docker.pkg.dev/projectB/repo/example,us-docker.pkg.dev/projectC/repo/example

扩缩

如需了解如何伸缩生产 Confidential Space 工作负载并实现其高可用性,请参阅托管式实例组