本文档介绍在 Compute Engine 上使用映像系列时的最佳做法。
准备工作
- 如果您要使用本指南中的命令行示例,请执行以下操作:
- 安装或更新到 Google Cloud CLI 的最新版本。
- 设置默认区域和可用区。
- 如果您要使用本指南中的 API 示例,请设置 API 访问权限。
公共映像系列
Compute Engine 提供了映像系列,以帮助您确保自动化系统可以引用最新映像。
作为管理员,您可以将一组映像划分为一个映像系列。随后,映像的用户只需跟踪映像系列名称,而无需跟踪精确的映像名称。由于映像名称必须唯一,因此映像构建流水线通常会创建编码有应用名称、日期和版本等信息的映像名称,例如 my-application-v3-20210101
。在自动化工具中,您可以引用映像系列名称,而无需定期更新映像名称。使用映像系列可确保您始终能够访问系列中的最新映像,例如 my-application
。
公共映像分组为映像系列。公开映像系列始终指向每个地区中可供使用的最新版本的映像。当新映像在全球范围内发布时,其在映像系列中的初始可用性取决于地区,这刻提高 Google 映像更新期间工作流的容错能力。
在映像发布期间,映像系列中最新版本的映像可能因不同地区而异。例如,debian-cloud
项目中的 debian-10
映像系列始终指向最新的 Debian 10 映像,但可用区 us-central1-a
和 southamerica-east1-b
中的最新 Debian 10 映像可能不同。
当您使用 Google Cloud CLI 从映像系列创建虚拟机时,Compute Engine 会根据您的请求使用您的虚拟机可用区中提供的最新映像。当您使用 Google Cloud Console 创建虚拟机时,Compute Engine 仅显示所选可用区中提供的公共映像。如果要使用全球可用的最新映像来创建虚拟机,请使用 gcloud CLI instances create
命令并指定 --image-family-scope=global
。
查看可用的最新映像版本
您可以查看映像系列中最新的全球可用映像,或者查看特定可用区提供的最新映像。
全球
如需查看映像系列中全球可供使用的最新映像,请使用以下方法之一:
gcloud
使用 gcloud compute images describe-from-family
命令:
gcloud compute images describe-from-family IMAGE_FAMILY_NAME \ --project=IMAGE_PROJECT
请替换以下内容:
API
向 images.getFromFamily
方法发出 GET
请求:
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME
请替换以下内容:
每个区域
如需查看特定地区的映像系列中可供使用的最新映像,请使用以下方法之一:
gcloud
使用带有 --zone
标志的 gcloud compute images describe-from-family
命令:
gcloud compute images describe-from-family IMAGE_FAMILY_NAME \ --project=IMAGE_PROJECT \ --zone=ZONE
替换以下内容:
API
向 imageFamilyViews
方法发出 GET
请求:
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME
请替换以下内容:
自定义映像系列
您可以使用自定义映像系列创建自己的映像。 该映像系列指向您用于创建映像系列的最新映像。 如需将映像系列回滚到先前的映像版本,您可以弃用该系列中的最新映像(前提是之前的映像未被弃用)。 如需了解详情,请参阅在映像系列中设置映像版本。
如需使用映像系列创建映像,或在映像系列不存在的情况下创建映像系列,您必须向映像创建步骤添加一个额外的 --family
标志,例如:
gcloud compute images create my-application-v3-20210101 \ --source-disk my-application-disk-1 \ --source-disk-zone us-central1-f \ --family my-application
运行此命令后,基于映像 my-application
运行实例的任何调用都将指向新创建的映像 my-application-v3-20210101
。
如何使用映像系列
虽然映像系列允许您引用最新映像,但最新映像可能会与您的应用不兼容,这可能会导致未经验证的生产环境中出现问题。如果您想利用映像系列的优势,同时降低风险,我们建议您先测试映像系列中引用的最新映像,然后再在生产环境中使用该映像。
总的来说,您可以考虑采用以下方法:
- 设置与生产环境分开的测试环境。
- 在测试环境中,完成以下步骤:
- 从来源映像系列创建自定义映像系列。
- 通过工作负载验证自定义映像系列中新映像的稳定性。
- 验证后,将此自定义映像系列移至生产环境。
例如,该过程可能类似于以下过程。
在测试项目中,从来源映像系列创建映像。这个新映像来源系列还必须有自己的自定义映像系列可在测试环境中引用。如需使用自定义映像系列创建映像,请运行以下命令:
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
:测试映像系列的名称。
使用自定义映像系列
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
:测试项目的名称。
验证此映像适用于您的工作负载后,将该映像复制到生产环境。
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
:要在生产环境中使用的映像系列的名称。