部署工作负载


工作负载操作员可以将选项传递给 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 替换为以下某个值:

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

--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 映像,该映像属于 confidential-space-images 项目。

如需将生产映像用于处理机密数据的最终工作负载,请将 IMAGE_FAMILY 替换为以下值之一:

  • confidential-space - 适用于 AMD SEV
  • confidential-space-preview-tdx - 适用于 Intel TDX(预览版

如需将调试映像用于 监控和调试,请将 IMAGE_FAMILY 替换为以下值之一:

  • confidential-space-debug - 适用于 AMD SEV
  • confidential-space-debug-preview-tdx - 适用于 Intel TDX(预览版

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

--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 角色才能模拟服务账号。这样,他们就可以将其附加到工作负载虚拟机,以便其运行工作负载。

元数据变量

您可以在创建虚拟机时将变量传递到 --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-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 工作负载的高可用性,请参阅托管实例组