关于构建
第 1 章 发行注记 复制链接链接已复制到粘贴板!
发行注记包含有关新的和已弃用的功能、破坏更改以及已知问题的信息。以下发行注记适用于 OpenShift Container Platform 的最新构建版本。
构建是基于 Shipwright 项目的可扩展构建框架,可用于在 OpenShift Container Platform 集群上构建容器镜像。您可以使用镜像构建工具(如 Source-to-Image (S2I)和 Buildah
)从源代码和 Dockerfile 构建容器镜像。您可以创建并应用构建资源,查看构建运行日志,并管理 OpenShift Container Platform 命名空间中的构建。
构建包括以下功能:
- 标准 Kubernetes 原生 API,用于从源代码和 Dockerfile 构建容器镜像
-
支持 Source-to-Image (S2I)和
Buildah
构建策略 - 使用您自己的自定义构建策略的可扩展性
- 从本地目录中的源代码执行构建
- 用于创建和查看日志的 Shipwright CLI,并管理集群上的构建
- 使用 OpenShift Container Platform Web 控制台的 Developer 视角集成用户体验
有关构建的更多信息,请参阅 构建概述。
1.1. 兼容性和支持列表 复制链接链接已复制到粘贴板!
在表格中,组件被标记为以下状态:
TP | 技术预览 |
GA | 公开发行 |
技术预览功能 是实验性功能,不适用于生产环境。
构建版本 | 组件版本 | 兼容 Openshift Pipelines 版本 | OpenShift 版本 | 支持 | |
---|---|---|---|---|---|
Operator | 构建(Shipwright) | CLI | |||
1.1 | 0.13.0 (GA) | 0.13.0 (GA) | 1.13、1.14 和 1.15 | 4.12、4.13、4.14、4.15 和 4.16 | GA |
1.0 | 0.12.0 (GA) | 0.12.0 (GA) | 1.12、1.13、1.14 和 1.15 | 4.12、4.13、4.14、4.15 和 4.16 | GA |
1.2. 使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
1.3. 构建正式发行 1.1.1 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Build 1.1.1 包括在 OpenShift Container Platform 4.12、4.13、4.14、4.15 和 4.16 上。
1.3.1. 修复的问题 复制链接链接已复制到粘贴板!
下面的部分重点介绍了构建 1.1.1 中的固定问题。
在这个版本中,共享资源 Container Storage Interface (CSI)驱动程序具有以下权限:
- 创建主题访问审核
- get、list 和 watch Shared Resource 对象
1.4. 构建正式发行 1.1 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,构建 1.1 在 OpenShift Container Platform 4.12、4.13、4.14、4.15 和 4.16 上正式发布(GA)。
1.4.1. 新功能 复制链接链接已复制到粘贴板!
以下小节重点介绍了构建 1.1 中的新内容。
1.4.1.1. Builds 复制链接链接已复制到粘贴板!
-
现在,构建控制器使用 Tekton 的 V1 API 来创建并访问支持
BuildRun
的TaskRun
。 - 在这个版本中,您可以定义一个没有源的构建。如果您只想使用本地源运行构建,这将非常有用。
-
输出 image 部分现在支持可选的 timestamp 字段来更改镜像创建时间戳。使用
SourceTimestamp
字符串将它设置为与源时间戳匹配。 -
在这个版本中,构建和
build
Run.source.type
字段。 - 在这个版本中,Operator 会默认安装 Shipwright,并为构建引入了几个用户体验改进。
1.4.1.2. 共享资源 CSI 驱动程序 复制链接链接已复制到粘贴板!
-
共享资源 CSI 驱动程序现已正式发布。在这个版本中,CSI Shared Driver 可以在 Kubernetes 的不同命名空间中共享
ConfigMap
和 secret。驱动程序有读取所有 Kubernetes secret 的权限。此功能通过减少重复并简化多租户环境中的配置管理来提高资源效率。管理员可以定义访问策略,以控制哪些命名空间可以读取或修改这些共享资源。
1.4.2. 已知问题 复制链接链接已复制到粘贴板!
以下部分重点介绍 Builds 1.1 中的已知问题。
1.4.2.1. Builds 复制链接链接已复制到粘贴板!
-
在这个版本中,不支持从 Builds 1.0 直接升级到 Builds 1.1。要升级到 Builds 1.1,您必须删除
ShipwrightBuild
对象,卸载 Builds1.0.z
操作器,然后从 OperatorHub 安装 Builds1.1.0
operator。
第 2 章 构建概述 复制链接链接已复制到粘贴板!
构建是基于 Shipwright 项目的可扩展构建框架,可用于在 OpenShift Container Platform 集群上构建容器镜像。您可以使用镜像构建工具(如 Source-to-Image (S2I)和 Buildah
)从源代码和 Dockerfile 构建容器镜像。您可以创建并应用构建资源,查看构建运行日志,并管理 OpenShift Container Platform 命名空间中的构建。
构建包括以下功能:
- 标准 Kubernetes 原生 API,用于从源代码和 Dockerfile 构建容器镜像
-
支持 Source-to-Image (S2I)和
Buildah
构建策略 - 使用您自己的自定义构建策略的可扩展性
- 从本地目录中的源代码执行构建
- 用于创建和查看日志的 Shipwright CLI,并管理集群上的构建
- 使用 OpenShift Container Platform Web 控制台的 Developer 视角集成用户体验
构建由以下自定义资源(CR)组成:
-
Build
-
BuildStrategy
和ClusterBuildStrategy
-
BuildRun
2.1. 构建资源 复制链接链接已复制到粘贴板!
Build
资源定义应用程序的源代码以及应用镜像的位置。以下示例显示了一个简单的构建,它由 Git 源、构建策略和输出镜像组成:
您还可以扩展 Build
资源,以将镜像推送到私有 registry 或使用 Dockerfile。
2.2. BuildStrategy 和 ClusterBuildStrategy 资源 复制链接链接已复制到粘贴板!
BuildStrategy
和 ClusterBuildStrategy
资源定义一系列步骤来编译应用程序。您可以使用命名空间中的 BuildStrategy
资源和集群中的 ClusterBuildStrategy
资源。
BuildStrategy
或 ClusterBuildStrategy
资源的规格由一个 steps
对象组成。以下示例显示了 buildah
集群构建策略的规格:
2.3. BuildRun 资源 复制链接链接已复制到粘贴板!
BuildRun
资源在集群中调用构建,类似于运行任何集群作业或 Tekton 任务。BuildRun
资源代表集群中的工作负载,这会导致一个正在运行的 pod。BuildRun
是构建的运行实例。它使用集群上的特定参数来实例化构建执行。
BuildRun
资源可帮助您定义以下元素:
-
用于监控构建状态的唯一
BuildRun
名称 -
构建期间使用的
引用构建实例 - 托管构建的所有 secret 的服务帐户
每个 BuildRun
资源都在一个命名空间中可用。
2.4. 构建控制器 复制链接链接已复制到粘贴板!
构建控制器监控 Build
资源中的任何更新,并执行以下任务:
-
验证
Build
资源中是否存在引用的Strategy
对象。 -
验证
Build
CR 中的指定参数是否存在于引用的构建策略中。它还会验证参数名称是否与任何保留名称冲突。 -
验证
Build
资源中是否存在容器 registry 输出 secret。 -
验证
Build
资源中是否存在引用的spec.source.git.url
端点 URL。
构建运行控制器监控 Build
或 TaskRun
资源中的任何更新,并执行以下任务:
-
搜索任何现有
TaskRun
资源并更新其父BuildRun
资源状态。 -
检索指定的服务帐户,并将它与
Build
资源中的输出机密一起设置。 -
如果
TaskRun
资源不存在,控制器会生成新的 TektonTaskRun
资源,并设置对TaskRun
资源的引用。 -
对于
TaskRun
资源中的任何后续更新,控制器会更新父BuildRun
资源。
2.4.1. 构建验证 复制链接链接已复制到粘贴板!
为了避免因为错误或缺少依赖项或配置设置而触发 BuildRun
资源,构建控制器会提前验证它们。如果所有验证都成功,您会看到一个名为 Succeeded
的 status.reason
字段。但是,如果任何验证失败,您必须检查 status.reason
和 status.message
字段以了解根本原因。
status.reason 字段 | 描述 |
---|---|
| 命名空间级别的引用策略不存在。 |
| 在集群级别上引用的策略不存在。 |
|
在 BuildRun 资源和 |
| 用于向 Git 进行身份验证的机密不存在。 |
| 用于向容器注册表进行身份验证的 secret 不存在。 |
| 用于向容器注册表进行身份验证的 secret 不存在。 |
| 缺少多个用于身份验证的 secret。 |
|
一个或多个 |
|
这些参数不在引用的策略中定义。您必须在策略的 |
|
未找到定义的 |
|
|
| 表示用户提供的环境变量的名称为空。 |
| 表示用户提供的环境变量的值为空。 |
第 3 章 构建策略 复制链接链接已复制到粘贴板!
您可以在 OpenShift Container Platform 集群上使用一组策展的构建策略或集群构建策略。Red Hat OpenShift Operator 的 Builds 会自动安装这些策略以供使用。这种策略自动安装可帮助您快速开始使用构建。
构建支持以下集群构建策略:
-
Buildah
:在所有平台上支持 -
Source-to-image
:在 linux/amd64 平台上支持
buildpacks
构建策略目前处于 开发者预览 中。如需更多信息,请参阅 buildpacks 示例。
3.1. Buildah 复制链接链接已复制到粘贴板!
buildah
集群构建策略使用 Dockerfile 构建容器镜像并将其推送到目标 registry。您必须在 Build
CR 的 spec.paramValues
字段中指定 Dockerfile。
您可以在集群中的不同命名空间中共享 buildah
策略,因为 Red Hat OpenShift Operator 的 Builds 会在集群级别安装 buildah
策略。
您可以为 buildah
策略配置以下参数:
Name | 类型 | 描述 | default |
---|---|---|---|
| 数组 | 在构建期间使用的 Dockerfile 所需的参数的键值对 | [] |
| 数组 | 必须阻断的 registry 列表 | [] |
| 数组 | 带有完全限定域名(FQDN)的不安全 registry 列表 | [] |
| 数组 | 用于搜索短名称镜像的 registry 列表 | ["registry.redhat.io", "quay.io"] |
| string | 构建期间使用的 Dockerfile 的路径 | "Dockerfile" |
| string |
| "vfs" |
如需更多信息,请参阅附加资源部分中的 配置构建策略。
3.2. Source-to-image 复制链接链接已复制到粘贴板!
此构建策略由 Source-to-image
和 buildah
组成。您可以使用此策略生成容器文件,并准备应用以使用构建器镜像进行构建。您必须在 Build
CR 的 spec.paramValues
字段中指定构建器镜像。
您可以在集群中的不同命名空间中共享 Source-to-image
策略,因为 Red Hat OpenShift Operator 的构建会在集群级别上安装 Source-to-image
策略。
您可以为 Source-to-image 策略配置以下参数
:
Name | 类型 | 描述 | default |
---|---|---|---|
| 数组 | 必须阻断的 registry 列表 | [] |
| 数组 | 带有 FQDN 的不安全 registry 列表 | [] |
| 数组 | 用于搜索短名称镜像的 registry 列表 | ["registry.redhat.io", "quay.io"] |
| string | 构建期间使用的构建器镜像的位置 | 不适用 |
| string |
| "vfs" |
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.