映像系列最佳做法

本文档介绍在 Compute Engine 上使用映像系列时的最佳做法。

准备工作

公共映像系列

Compute Engine 提供了映像系列,以帮助您确保自动化系统可以引用最新映像。 作为管理员,您可以将一组映像划分为一个映像系列。随后,映像的用户只需跟踪映像系列名称,而无需跟踪精确的映像名称。由于映像名称必须唯一,因此映像构建流水线通常会创建编码有应用名称、日期和版本等信息的映像名称,例如 my-application-v3-20161011。在自动化工具中,您可以引用映像系列名称,而无需定期更新映像名称。使用映像系列可确保您始终返回系列中的最新映像,例如 my-application

映像系列。

公共映像系列始终指向映像最新的未弃用版本。公共映像被划分到一个映像系列。例如,debian-cloud 项目中的 debian-9 映像系列始终指向最新的 Debian 9 映像。

自定义映像系列

您可以使用自定义映像系列创建自己的映像。 该映像系列指向您用于创建映像系列的最新映像。 如需将映像系列回滚到先前的映像版本,您可以弃用该系列中的最新映像(前提是之前的映像未被弃用)。 如需了解详情,请参阅在映像系列中设置映像版本

如需使用映像系列创建映像,或在映像系列不存在的情况下创建映像系列,您必须向映像创建步骤添加一个额外的 --family 标志,例如:

gcloud compute images create my-application-v3-20161011 \
    --source-disk my-application-disk-1 \
    --source-disk-zone us-central1-f \
    --family my-application

运行此命令后,基于映像 my-application 运行实例的任何调用都将指向新创建的映像 my-application-v3-20161011

如何使用映像系列

虽然映像系列允许您引用最新映像,但最新映像可能会与您的应用不兼容,这可能会导致未经验证的生产环境中出现问题。如果您想利用映像系列的优势,同时降低风险,我们建议您先测试映像系列中引用的最新映像,然后再在生产环境中使用该映像。

总的来说,您可以考虑采用以下方法:

  • 设置与生产环境分开的测试环境。
  • 在测试环境中,完成以下步骤:
    • 从来源映像系列创建自定义映像系列。
    • 通过工作负载验证自定义映像系列中新映像的稳定性。
  • 验证后,将此自定义映像系列移至生产环境。

例如,该过程可能类似于以下过程。

  1. 在测试项目中,从来源映像系列创建映像。这个新映像来源系列还必须有自己的自定义映像系列可在测试环境中引用。如需使用自定义映像系列创建映像,请运行以下命令:

    gcloud compute images create test-image-name \
    --source-image-project source-project \
    --source-image-family source-image-family \
    --project test-project \
    --family test-image-family
    

    替换以下内容:

    • test-image-name:测试映像的名称。
    • source-project:来源映像系列所属的项目。
    • source-image-family:来源映像系列的名称。
    • test-project:要向其中添加映像系列的测试项目的名称。
    • test-image-family:测试映像系列的名称。
  2. 使用自定义映像系列 test-image-family 创建虚拟机以测试工作负载。如需创建虚拟机,请运行以下命令:

    gcloud compute instances create test-instance-name \
    --image-family your-test-image-family \
    --project test-project
    

    替换以下内容:

    • test-instance-name:测试实例的名称。
    • test-image-family:测试映像系列的名称。
    • test-project:测试项目的名称。
  3. 验证此映像适用于您的工作负载后,将该映像复制到生产环境。

    gcloud compute images create prod-image-name \
    --source-image-family test-image-family \
    --source-image-project test-project \
    --project prod-project \
    --family prod-image-family
    

    替换以下内容:

    • prod-image-name:生产映像的名称。
    • test-image-family:测试映像系列的名称。
    • test-project:测试映像系列所属的项目。
    • prod-project:生产环境中的项目的名称。
    • prod-image-family:要在生产环境中使用的映像系列的名称。