在映像系列中设置映像版本


利用映像系列来简化映像版本控制。将映像添加到映像系列以将其设置为最新的映像版本。如果您确定必须将映像系列回滚到以前的映像版本,请弃用系列中最新的映像。

如需了解使用映像系列时的最佳做法,请参阅映像系列最佳做法

(可选)您可以使用 Google Cloud 控制台、带有 --storage-location 标志的 gcloud compute images create 命令或者 images().insert 方法指定映像的存储位置

准备工作

  • 阅读映像文档。
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

在映像系列中设置映像版本

控制台

  1. 在 Google Cloud 控制台中,前往创建映像页面。

    转到“创建映像”

  2. 指定映像的名称。 例如 image-v1

  3. 指定您要根据其创建映像的来源。可以是 Cloud Storage 中的永久性磁盘、快照、其他映像或 disk.raw 文件。

  4. 如果您从挂接到正在运行的虚拟机的磁盘来创建映像,请勾选保持实例运行,以确认您要在虚拟机保持运行的状态下创建映像。您可以在创建映像之前准备虚拟机

  5. 基于来源磁盘位置(默认)下拉列表中,指定映像的存储位置。例如,指定 us 可将映像存储在 us 多区域中,或指定 us-central1 可将其存储在 us-central1 区域中。如果您未选择位置,Compute Engine 会将映像存储在最接近映像来源位置的多区域中。

  6. 为新映像指定映像系列。例如,添加 my-image-family 可将映像整理到一个映像系列中。

  7. 可选:指定其他映像属性:

    • 说明:自定义映像的说明。
    • 标签:用于将资源组织在一起的标签
  8. 指定加密密钥。您可以选择 Google 拥有且 Google 管理的密钥、Cloud Key Management Service (Cloud KMS) 密钥或客户提供的加密密钥 (CSEK)。如果未指定加密密钥,则系统会使用 Google 拥有且 Google 管理的密钥对映像进行加密。

  9. 点击创建来创建映像。

gcloud

gcloud compute images create image-v1 \
    --source-disk disk-1 \
    --source-disk-zone us-central1-f \
    --family my-image-family

映像系列指向 image-v1。在该系列中添加第二个映像:

gcloud compute images create image-v2 \
    --source-disk disk-2 \
    --source-disk-zone us-central1-f \
    --family my-image-family

REST

images().insert 方法发出 POST 请求。在请求正文中指定映像系列。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
  "name": "image-v2",
  "sourceDisk": "/zones/us-central1-f/disks/disk-2",
  "family":"my-image-family",

}

该映像系列指向 image-v2,因为这是您添加到映像系列的最新映像。

gcloud

您可以运行 gcloud compute images describe-from-family 命令来查看某个系列指向哪个映像。

例如:

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

REST

images().getFromFamily 方法发出 GET 请求。在请求正文中指定映像系列。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/family

{
  "resourceId":"my-image-family",

}

如果您确定必须回滚该映像系列,以使其不再指向 image-v2,请弃用 image-v2,这样该系列将再次指向 image-v1

gcloud compute images deprecate image-v2 \
    --state DEPRECATED \
    --replacement image-v1

检查以确保该映像系列指向 image-v1

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY