本文档介绍了自定义配方文件 imagebuilder.yaml 的结构和参数,您可以使用该文件为 Image Builder 流水线定义基本操作系统映像、硬件配置、发布目标和自定义操作。
架构概览
自定义配置使用 API 版本 imagebuilder.gcp.com/v1 和资源种类 OSImageCustomization。
标准配方文件的结构如下:
apiVersion: imagebuilder.gcp.com/v1 kind: OSImageCustomization metadata: # Recipe metadata and identifying details infrastructureConfig: # VM machine type, zone, and network settings source: # Base source image profile destinations: # Output OS image release targets spec: config: # Build options and validation test flags steps: # Customization actions (Shell, FileCopy, UpdateKernelCommandLine, InstallGPU)
元数据
提供此自定义 build 模板的标识详细信息:
metadata: name: CONFIG_NAME description: DESCRIPTION
name(字符串,必需):相应配置的标识符。description(字符串,可选):相应 build 的用途说明。
基础设施配置
指定 Image Builder 在构建和验证任务期间创建的临时虚拟机实例的硬件和网络属性:
infrastructureConfig: machineType: MACHINE_TYPE zone: ZONE network: projects/PROJECT_ID/global/networks/NETWORK_NAME subnetwork: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME externalIP: ephemeral acceleratorType: nvidia-l4 acceleratorCount: 1 debug: false instanceDurationHours: 2.0 reservations: - RESERVATION_NAME
machineType(字符串,必需):要用于工作器和测试虚拟机的 Compute Engine 机器类型。确保机器类型与您在imageFamily或imagePath中指定的源映像的架构相匹配。例如,为 x86 映像使用e2-standard-4,为 Arm 映像使用c4a-standard-4。不支持裸机机器类型。zone(字符串,必需):运行工作器和测试虚拟机的可用区,例如us-central1-a。network(字符串,可选):要附加到工作器和验证测试虚拟机的 VPC 网络,例如projects/<var>PROJECT_ID</var>/global/networks/<var>NETWORK_NAME</var>或default。如果省略,映像构建器会使用默认网络。subnetwork(字符串,可选):要附加到工作器和验证测试虚拟机的 VPC 子网,例如projects/<var>PROJECT_ID</var>/regions/<var>REGION</var>/subnetworks/<var>SUBNET_NAME</var>。externalIP(字符串,可选):指定工作器和验证测试虚拟机的外部 IP 地址分配。允许的值:ephemeral(默认):从共享池分配公共临时 IPv4 地址。none:创建没有外部 IP 地址的虚拟机,仅使用专用 VPC 网络。如果设置为none,请确保您的 VPC 子网已启用专用 Google 访问通道或 Cloud NAT,以便虚拟机可以访问所需的 Google Cloud 服务和软件包代码库。
acceleratorType(字符串,可选):要挂接到工作器虚拟机的 GPU 加速器类型,例如nvidia-tesla-t4或nvidia-l4。acceleratorCount(数字,可选):要附加到工作器虚拟机的 GPU 加速器数量。debug(布尔值,可选):如果您将debug设置为true,无论自定义完成还是失败,Image Builder 都会保留工作器虚拟机,以便您可以使用 SSH 检查或排查活动实例的问题。默认值为false。instanceDurationHours(数字,可选):限制工作器虚拟机的运行时。 时间限制从自定义完成或遇到脚本错误时开始,允许您在交互式调试会话期间连接到活跃的虚拟机。上限为2.0小时。reservations(字符串数组,可选):当 Image Builder 创建虚拟机时要使用的容量预留资源名称(例如同一项目中的test-reservation)。
来源映像
用于标识 Image Builder 用于启动工作器虚拟机的基本操作系统映像。您必须指定以下选项之一:
如需指定标准映像系列,请执行以下操作:
source: imageFamily: projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY
如需指定直接映像版本 URI,请执行以下操作:
source: imagePath: projects/IMAGE_PROJECT/global/images/IMAGE_NAME
imageFamily(字符串):标准映像家人群组的路径,例如projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts。imagePath(字符串):特定 Compute Engine 映像版本的直接资源 URI,例如projects/cos-cloud/global/images/cos-105-17412-226-28。
目的地
定义了发布编译后的自定义操作系统映像的位置和方式。此属性包含 diskImage 下的发布目的地对象列表:
destinations: - diskImage: name: IMAGE_NAME project: PROJECT_ID family: IMAGE_FAMILY description: DESCRIPTION licenses: - projects/PROJECT_ID/global/licenses/LICENSE_NAME labels: env: production signatureDatabaseFile: SIGNATURE_DB_PATH storageLocations: - us-central1
name(字符串,必需):分配给最终 Compute Engine 映像资源的基本名称前缀。Image Builder 会自动将唯一的 build ID 附加到此前缀,并将最终映像名称截断为 63 个字符。family(字符串,可选):要应用于新生成的映像的映像系列。project(字符串,必需):Image Builder 将输出映像写入到的 Google Cloud 项目。description(字符串,可选):附加到生成的图片元数据的说明文本。licenses(字符串数组,可选):应用于此映像的特定软件许可的资源路径。labels(映射,可选):标记元数据键值对,例如env: production。signatureDatabaseFile(字符串,可选):指向安全启动签名数据库文件的资源路径。storageLocations(字符串数组,可选):目标存储区域或多区域,例如us-central1或us,Compute Engine 在其中存储最终磁盘块。注意:虽然此属性的格式为列表,但您只能为每个图片目的地指定一个位置。
规范配置
应用常规执行选项:
spec: config: skipSystemTests: false
skipSystemTests(布尔值,可选):切换测试虚拟机是否评估启动条件、网络和 UEFI 结构。默认值为false。
指定步骤
指定 Image Builder 在工作器虚拟机上按顺序运行的步骤对象列表。如需查看每个步骤类型的完整输入参数架构和使用示例,请参阅支持的自定义操作。
所有自定义步骤对象都具有以下共同属性:
spec: steps: - name: STEP_NAME action: ACTION_TYPE inputs: # Action-specific input parameters
name(字符串,必需):此自定义步骤的用户定义名称。action(字符串,必需):要调用的辅助操作。支持的操作:Shell:在虚拟机中执行终端脚本。FileCopy:从 Cloud Storage 存储分区或工作区转移资源。UpdateKernelCommandLine:更新启动参数。InstallGPU:注册 NVIDIA GPU 驱动程序。
inputs(对象,必需):所选操作所需的键值对属性。如需查看完整的参数参考文档和示例,请参阅支持的自定义操作。
以下代码段展示了使用 Shell 操作的示例步骤:
spec: steps: - name: setup-environment action: Shell inputs: inlineScript: | #!/usr/bin/env bash echo "Running customization..."
后续步骤
- 如需详细了解输入架构、参数参考和使用示例,请参阅支持的自定义操作中的自定义步骤。
- 了解如何在 Cloud Build 配置文件架构中配置流水线编排设置。
- 按照分步教程创建 Image Builder 流水线。