创建机密虚拟机实例

您可以在创建新的 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  7. Enable the Compute Engine API.

    Enable the API

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

创建实例

控制台

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

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

    转到虚拟机实例

  2. 点击创建实例

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

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

  5. 点击启用

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

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

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

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

gcloud

如需使用 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

REST

如需创建机密虚拟机实例,您需要发送包含适当正文内容的 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(Linux、macOS 或 Cloud Shell)

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

PowerShell (Windows)

$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 验证您的机密虚拟机实例