Linux
Image Builder 是一款声明式操作系统 (OS) 映像自定义工具,可在您的 Google Cloud项目中使用 Cloud Build 运行。它可自动执行操作系统映像的构建、自定义和验证过程,帮助您在将这些映像发布到生产工作负载之前,验证它们是否能正确启动并符合您的配置要求。
主要优势
通过在Google Cloud中自动执行自定义操作系统映像的生命周期,Image Builder 可帮助您管理基础架构并验证配置要求。Image Builder 为您的自定义操作系统映像 build 提供以下功能:
- 自动创建操作系统映像:使用声明性 YAML 配方和自动化的 Cloud Build 工作流创建和维护自定义操作系统映像,无需自定义脚本或外部工具。由于 Image Builder 在 Cloud Build 中运行,因此您可以使用 Cloud Build 触发器在代码库事件(例如 Git 推送或标记)发生时自动启动映像构建,设置定期安排(例如每周构建一次以应用安全补丁),或响应 Pub/Sub 消息(以通过外部工作流或 Webhook 以编程方式触发构建)。
- 在发布之前验证图片:在发布图片之前对其进行验证。 Google 提供的检查会验证中间映像是否可以启动、是否支持安全启动(如果适用)、是否加载了所需的网络驱动程序,以及是否运行了正常的客户代理。
- 跟踪脚本执行:跟踪构建流水线期间运行的代码。Image Builder 会自动记录 build 日志中内嵌自定义脚本的加密 SHA-256 哈希值,以保留审核轨迹。
- 仅为所用资源付费:Image Builder 服务无需支付额外费用。您只需为流水线运行时消耗的底层计算、存储和 build 资源付费。
Image Builder 的工作原理
Image Builder 使用 Cloud Build 编排器容器在您的 Google Cloud 项目中运行。映像构建流程包括以下阶段:
- 验证和准备:编排器容器会检查 YAML 语法,并验证是否已启用所有必需的 API 以及目标 Identity and Access Management (IAM) 安全权限是否处于有效状态。
- 工作区和磁盘准备:编排器容器将包含源代码和配置的 Cloud Build 工作区目录 (
/workspace) 归档到压缩的 tar 文件 (.tar.gz) 中,并将此 tar 文件上传到 build 配置中指定的 Cloud Storage 工作目录存储桶。然后,编排器容器使用静态编译的自定义预配工具文件系统来创建临时 Compute Engine 映像,该映像定义了挂接到工作器虚拟机的辅助数据磁盘。 - 工作器虚拟机执行:编排器容器使用指定的源映像作为启动磁盘来启动临时工作器虚拟机实例,并挂接包含自定义预配工具的辅助数据磁盘。工作器虚拟机的硬件属性、VPC 网络、子网和外部 IP 分配(临时公共 IP 或无外部 IP)由
imagebuilder.yaml文件中的infrastructureConfig设置决定。 - 自定义:启动脚本会装载数据磁盘,并在工作器虚拟机上启动自定义预配工具。预配工具会下载工作区归档,并应用您声明的自定义设置,例如运行 Shell 脚本、复制文件或编译驱动程序。它还会执行安全清理过程,以清理 SSH 密钥、唯一机器 ID 和日志历史记录。然后,它会关停实例。
- 验证(测试):编排器容器会从自定义启动磁盘创建临时测试操作系统映像,并使用
imagebuilder.yaml文件中的网络和基础架构配置来预配临时测试虚拟机,以运行以下系统定义的验证检查:- Intel IDPF 驱动程序验证:验证受支持的实例是否加载 Intel Infrastructure Data Path Function (
idpf) 网络驱动程序,而不是通用显示驱动程序或回退驱动程序。 - 网络和 guest 代理验证:确认 guest 代理服务处于活跃状态,至少有一个非环回网络接口处于启动状态,并且名称符合惯例(
eth*或en*)。 - 安全启动验证:确保 UEFI 安全启动处于有效状态,并且系统强制执行客户机内核验证。
- 暂停或恢复验证:使用 Compute Engine API 暂停测试虚拟机,并验证在恢复后网络连接是否恢复,而无需重新启动系统。
- Intel IDPF 驱动程序验证:验证受支持的实例是否加载 Intel Infrastructure Data Path Function (
- 发布:如果所有验证检查均通过,编排器容器会准备最终映像:
- 如果 Artifact Registry 已配置:编排器容器会将自定义启动磁盘导出为 tar 文件,导出到 Artifact Registry 通用代码库,并使用 Artifact Registry URI 作为其来源创建最终的生产 Compute Engine 映像。
- 如果未配置 Artifact Registry:编排器容器会使用自定义的启动磁盘直接在您的项目中创建 Compute Engine 映像。
价格和配额注意事项
Image Builder 服务无需额外付费即可使用。不过, Google Cloud 在构建、测试和发布阶段预配的标准资源会产生费用:
- Compute Engine:工作器虚拟机、测试虚拟机和所挂接的永久性磁盘的费用。
- Cloud Build:对编排器容器运行时分钟数收费。
- Cloud Storage:工作区归档、日志导出和中间资产的费用。
- Artifact Registry:如果已配置,则会收取存储导出的映像 tar 文件的费用。
- 自定义映像:存储中间测试映像、调试映像和生产映像的费用。
如需详细了解资源费用,请参阅 Compute Engine、Cloud Build、Cloud Storage、Artifact Registry 和自定义映像存储的价格文档。
配额要求
确保您的项目在运行 build 的可用区中有足够的 Compute Engine CPU 和 Persistent Disk 配额。目标可用区中的配额不足,导致流水线在虚拟机预配期间失败。