创建机密虚拟机实例

您可以在创建新的 Compute Engine 虚拟机时创建机密虚拟机实例。

准备工作

在创建机密虚拟机实例之前,您需要按如下方式设置环境:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. 可选:如需使用本指南中的 gcloud CLI 示例,请执行以下操作:
  6. 可选:如需使用本指南中的 API 示例,请为请求设置身份验证。详细了解 OAuth 2.0

创建实例

如需使用 Google Cloud 控制台创建 AMD SEV 机密虚拟机,请完成以下步骤。

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 点击创建实例

  3. 机密虚拟机服务部分中,点击启用

  4. 然后,在启用机密计算对话框中,查看启用该服务时更新的设置列表。如果以下字段设置为不兼容的值,则列表可能包括这些字段。

  5. 点击启用

  6. 机器配置部分中,展开高级配置

  7. 对于 CPU 平台,请选择 AMD Milan 或更高版本

  8. 确认您对这些设置感到满意,然后点击创建

点击创建后,系统会打开虚拟机实例页面。在此页面上,您可以查看新实例的状态和详细信息。当机密虚拟机实例的状态列中显示 绿色对勾标记 可用图标时,即表示该实例已准备就绪,可以使用。

如需使用 gcloud CLI 创建机密虚拟机实例,请使用带有 --confidential-compute-type 标志的 instances create 子命令。

gcloud compute instances create INSTANCE_NAME \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --min-cpu-platform="CPU_PLATFORM" \
    --maintenance-policy="MAINTENANCE_POLICY" \
    --zone=ZONE_NAME \
    --image-family=IMAGE_FAMILY_NAME \
    --image-project=IMAGE_PROJECT \
    --project=PROJECT_ID

请提供以下值:

  • INSTANCE_NAME:新虚拟机实例的名称。

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的机密计算技术类型。请选择以下某个值:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME:虚拟机机器类型,例如 n2d-standard-2。机密虚拟机实例的有效机器类型取决于您选择的机密计算技术。请参阅机器类型、CPU 和可用区

  • CPU_PLATFORM:请选择以下某个值:

    • 对于 AMD SEV:AMD Milan(C2D 或 N2D 机器类型)或 AMD Genoa(C3D 机器类型)。

    • 对于 AMD SEV-SNP:AMD Milan(N2D 机器类型)。

    • 对于 Intel TDX:移除此标志。

  • MAINTENANCE_POLICY:对于使用 SEV 的 N2D 机器类型,请将此值设置为 MIGRATE,以便获得实时迁移支持。对于所有其他机器类型,请将此值设置为 TERMINATE,因为它们不支持实时迁移

  • ZONE_NAME:要在其中创建实例的机密虚拟机支持的可用区

  • IMAGE_FAMILY_NAME机密虚拟机支持的操作系统映像的系列。如果您未额外指定 --image,系统会选择最新的映像版本。

  • IMAGE_PROJECT:包含受支持的操作系统映像的项目。

  • PROJECT_ID:可选。要在其中创建虚拟机的项目的 ID。

示例

运行以下命令,使用 AMD SEV-SNP 在 us-central1-a 可用区中创建一个名为 my-instancen2d-standard-2 实例:

gcloud compute instances create my-instance \
    --machine-type=n2d-standard-2 \
    --min-cpu-platform="AMD Milan" \
    --zone=us-central1-a \
    --confidential-compute-type=SEV_SNP \
    --maintenance-policy=TERMINATE \
    --image-family=ubuntu-2404-lts-amd64 \
    --image-project=ubuntu-os-cloud

响应

对创建请求的响应类似于以下示例:

Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance].
NAME: my-instance
ZONE: us-central1-a
MACHINE_TYPE: n2d-standard-2
PREEMPTIBLE:
INTERNAL_IP: 0.0.0.0
EXTERNAL_IP: 0.0.0.0
STATUS: RUNNING

如需创建机密虚拟机实例,您需要发送包含适当正文内容的 POST 请求。

HTTP 方法和网址:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances

请求 JSON 正文:

{
  "name": "INSTANCE_NAME",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
  },
  "machineType": "zones/ZONE_NAME/machineTypes/MACHINE_TYPE_NAME",
  "minCpuPlatform": "CPU_PLATFORM",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
      }
    }
  ],
  "networkInterfaces": [
    {
      "nicType": "gVNIC"
    }
  ],
  "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "preemptible": false,
    "onHostMaintenance": MAINTENANCE_POLICY
  }
}

请提供以下值:

  • PROJECT_ID:要在其中创建虚拟机的项目的 ID。

  • ZONE_NAME:要在其中创建实例的机密虚拟机支持的可用区

  • INSTANCE_NAME:新虚拟机实例的名称。

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的机密计算技术类型。请选择以下某个值:

    • SEV

    • SEV_SNP

    • TDX

  • MACHINE_TYPE_NAME:虚拟机机器类型,例如 n2d-standard-2。机密虚拟机实例的有效机器类型取决于您选择的机密计算技术。请参阅机器类型、CPU 和可用区

  • CPU_PLATFORM:请选择以下某个值:

    • 对于 AMD SEV:AMD Milan(C2D 或 N2D 机器类型)或 AMD Genoa(C3D 机器类型)。

    • 对于 AMD SEV-SNP:AMD Milan(N2D 机器类型)。

    • 对于 Intel TDX:移除此键值对。

  • IMAGE_PROJECT:包含受支持的操作系统映像的项目。

  • IMAGE_FAMILY_NAME机密虚拟机支持的操作系统映像的系列。如果您未额外指定 --image,系统会选择最新的映像版本。

  • MAINTENANCE_POLICY:对于使用 SEV 的 N2D 机器类型,请将此值设置为 MIGRATE,以便获得实时迁移支持。对于所有其他机器类型,请将此值设置为 TERMINATE,因为它们不支持实时迁移

示例

运行以下命令之一,使用 AMD SEV-SNP 在 my-project 项目的 us-central1-a 可用区中创建一个名为 my-instancen2d-standard-2 实例:

curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
            "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
            "name": "my-instance",
            "minCpuPlatform": "AMD Milan",
            "confidentialInstanceConfig": {
              "confidentialInstanceType": "SEV_SNP"
            },
            "disks": [
              {
                "boot": true,
                "initializeParams": {
                  "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
                }
              }
            ],
            "networkInterfaces": [
              {
                "nicType": "gVNIC"
              }
            ],
            "scheduling": {
              "automaticRestart": true,
              "nodeAffinities": [],
              "preemptible": false,
              "onHostMaintenance": "TERMINATE"
            }
          }' \
      https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
$body = @"
{
  "machineType": "zones/us-central1-a/machineTypes/n2d-standard-2",
  "name": "my-instance",
  "minCpuPlatform": "AMD Milan",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "SEV_SNP"
  },
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts-amd64"
      }
    }
  ],
  "networkInterfaces": [
    {
      "nicType": "gVNIC"
    }
  ],
  "scheduling": {
    "automaticRestart": true,
    "nodeAffinities": [],
    "preemptible": false,
    "onHostMaintenance": "TERMINATE"
  }
}
"@
Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://compute.googleapis.com/compute/projects/my-project/zones/us-central1-a/instances" | Select-Object -Expand Content

响应

对创建请求的响应类似于以下示例:

{
  "kind": "compute#operation",
  "id": "0000000000000000000",
  "name": "operation-0000000000000-0000000000000-00000000-00000000",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "operationType": "insert",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance",
  "targetId": "0000000000000000000",
  "status": "RUNNING",
  "user": "alex@example.com",
  "progress": 0,
  "insertTime": "2024-09-29T18:06:52.174-07:00",
  "startTime": "2024-09-29T18:06:52.175-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-0000000000000-0000000000000-00000000-00000000"
}

您可以向 selfLink 发出 GET 请求来检查虚拟机创建进度:

GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/operations/OPERATION_ID

为 C2D 机器类型启用更高的网络带宽

三个最大的 C2D Compute Engine 虚拟机类型(32、56 和 112)支持高带宽网络。选择层级 1 网络带宽配置时,数据传出带宽从默认的 32 Gbps 增加到 50 或 100 Gbps。如需获得更高的层级 1 带宽速度,实例必须运行 gVNIC 虚拟网络驱动程序。详细了解如何配置具有较高带宽的虚拟机

后续步骤

了解如何使用 Cloud Monitoring 验证您的机密虚拟机实例