1.2. Red Hat OpenShift Pipelines 1.20 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.20 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.1. 新功能 复制链接链接已复制到粘贴板!
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.20 中的新内容:
- 支持在启用了 FIPS 的环境中运行
- Red Hat OpenShift Pipelines 专为在联邦信息处理标准(FIPS)模式下运行的环境而设计。有关启用 OpenShift Container Platform FIPS 支持的更多信息,请参阅 OpenShift Container Platform 对 FIPS 加密的支持。
- 添加到控制器副本的 Pod 反关联性规则
-
OpenShift Pipelines 为控制器副本添加并应用
preferredDuringSchedulingIgnoredDuringExecutionpod 反关联性规则,但 Tekton Chains 控制器除外。在高可用性(HA)设置中,此规则将副本分发到不同的节点上,而不是在同一节点上调度它们,从而提高弹性、负载均衡和可用性。不需要额外的配置。
-
OpenShift Pipelines 为控制器副本添加并应用
- 新的 buildah-ns 任务,用于改进容器构建安全性
-
OpenShift Pipelines 添加
buildah-ns任务。它通过用户命名空间隔离来提高容器构建安全性,并与现有buildah任务兼容。如需更多信息,请参阅"附加资源"。
-
OpenShift Pipelines 添加
- readOnlyRootFilesystem enabled for default deployments
-
OpenShift Pipelines、Tekton Results、Tekton Chains 和 Manual Approval Gate 部署中的容器默认启用了
readOnlyRootFilesystem设置,从而提高安全性和合规性。
-
OpenShift Pipelines、Tekton Results、Tekton Chains 和 Manual Approval Gate 部署中的容器默认启用了
- 在 web 控制台中显示友好的名称
-
OpenShift Container Platform Web 控制台中的任务现在使用
displayName属性而不是技术任务名称,提高可读性,并使任务更轻松地在 Red Hat OpenShift Pipelines 用户界面中搜索。
-
OpenShift Container Platform Web 控制台中的任务现在使用
- 单节点 OpenShift 上的 OpenShift Pipelines
现在,在单节点 OpenShift (SNO)上运行 OpenShift Pipelines 的技术预览支持。这个支持不适用于生产环境部署。SNO 上的 OpenShift Pipelines 没有超出单节点集群固有限制的限制:有限的可扩展性、无冗余和受限并发性。对于 libvirt API 上的集群,最低硬件要求:
- 12 个 vCPU
- 64 GB RAM
- 240 GB 磁盘空间
单节点 OpenShift (SNO)上的 OpenShift Pipelines 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Operator
- 独立控制 RBAC 和 CA 捆绑包配置映射创建
- 在这个版本中,您可以独立控制 OpenShift Pipelines Operator 如何创建基于角色的访问控制(RBAC)资源和可信证书颁发机构(CA)捆绑包配置映射。此功能增强为您提供了更多适应环境的灵活性,有助于避免资源重复。默认情况下,这两个选项都已启用以维护现有行为。如需更多信息,请参阅"附加资源"。
修剪器
- 基于事件的修剪器可在 TektonConfig CR 中配置
-
您可以在
TektonConfig自定义资源(CR)中直接启用并配置基于事件的tektonpruner。在这个版本中,增加了与新的修剪器相关的指标进行观察改进。
-
您可以在
基于事件的修剪器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Tekton Triggers
- 通过 Operator 安装 Tekton Triggers 的可选安装
在通过 Operator 部署 OpenShift Pipelines 时,您可以选择安装 Tekton Triggers。在这个版本中,对组件安装提供了更精细的控制,并支持独立管理触发器的环境。默认值为
false。以下是禁用安装的TektonCofigCR 示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Tekton Results
- 在 tekton-results-watcher 中禁用 live 集合的新标志
Tekton Results 支持
tekton-results-watcher控制器的新标记,通过在TektonConfigCRD 中设置--disable_storing_incomplete_runs=true标志来禁用正在运行的实时集合:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果设置为
true,则运行不会存储直到完成为止,从而提高了系统性能。如果设置为false,则运行会在创建时存储,并在发生更改时持续更新。这是当前的默认行为。true设置计划在以后的版本中成为默认设置。
- 优化以跳过对已存储的 PipelineRuns 的处理
-
Tekton Results 跳过已存储的
PipelineRuns的处理,提高了性能并减少 API 服务器调用。这种优化提高了整体效率和响应速度,旨在降低服务器负载和节省资源。
-
Tekton Results 跳过已存储的
Pipelines 作为代码(Pipelines as Code)
- 支持传入 Webhook 中的 JSON 正文
Pipelines as Code 支持在 JSON POST 正文中传递传入的 Webhook 参数,同时保持与 URL 查询参数的兼容性:
curl -H "Content-Type: application/json" -X POST \ "https://control.pac.url/incoming" -d '{"repository":"repo","branch":"main", \ "pipelinerun":"target-pipelinerun","secret":"very-secure-shared-secret"}'$ curl -H "Content-Type: application/json" -X POST \ "https://control.pac.url/incoming" -d '{"repository":"repo","branch":"main", \ "pipelinerun":"target-pipelinerun","secret":"very-secure-shared-secret"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将请求正文用于敏感信息可减少日志中的暴露并提高安全性。如需更多信息,请参阅 推荐的(POST JSON body)方法。
- GitHub API 调用的详细日志记录
- Pipelines as Code 支持 GitHub API 调用的详细日志记录,从而深入了解 API 交互、持续时间和速率限制。通过将控制器日志级别设置为 'debug',您可以更有效地对复杂问题进行故障排除。此功能增强重构代码来检测 GitHub 调用,并影响提供程序内的所有 GitHub API 调用。如需更多信息,请参阅 调试 API 交互。
- 新的 auto-configure-repo-repository-template 选项
-
Pipelines as Code 添加
auto-configure-repo-repository-template设置,这是auto-configure-new-github-repo功能设置中的新选项,以整合在单个命名空间中创建存储库,简化具有多个存储库的管理。如需更多信息,请参阅"附加资源"。
-
Pipelines as Code 添加
- 支持远程 Pipeline 定义中的相对任务引用
-
您可以使用相对路径来引用远程
Pipeline定义中的任务。Pipelines as Code 解析器会根据远程PipelineSpec定义的位置自动构建任务的完整 URL。此功能增强提高了管道组织和可移植性,特别是在使用标记的发行版本或分支时。如需更多信息,请参阅从 PipelineRun 上的远程管道覆盖任务。
-
您可以使用相对路径来引用远程
从远程管道覆盖任务只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- New dynamic pull_request_number variable for push events
-
拉取触发推送事件的请求会自动填充新的 Pipelines 作为代码动态
pull_request_number变量,允许明确引用与 push 事件关联的特定拉取请求,并改进了可追溯性。如需更多信息,请参阅"附加资源"。
-
拉取触发推送事件的请求会自动填充新的 Pipelines 作为代码动态
1.2.2. 可能会造成问题的更改 复制链接链接已复制到粘贴板!
-
Tekton Hub (
hub.tekton.dev)的公共实例已弃用,并将在以后的发行版本中删除。如需更多信息,请参阅"附加资源"。 -
Git 解析器不再将
TEKTON_HUB_API设置为公共 hub。在指向自托管引擎时,您必须设置环境变量。如需更多信息,请参阅 Resolvers。 OpenShift Pipelines 不再发出已弃用的指标,如
pipelinerun_count或running_taskruns_count。您必须使用新指标更新仪表板和警报,如pipelinerun_total或running_pipelineruns。Expand Deprecated New pipelinerun_countpipelinerun_totalrunning_pipelineruns_countrunning_pipelinerunsrunning_pipelineruns_waiting_on_pipeline_resolution_countrunning_pipelineruns_waiting_on_pipeline_resolutionrunning_pipelineruns_waiting_on_task_resolution_countrunning_pipelineruns_waiting_on_task_resolutiontaskrun_counttaskrun_totalrunning_taskruns_countrunning_taskrunsrunning_taskruns_throttled_by_quota_countrunning_taskruns_throttled_by_quotarunning_taskruns_throttled_by_node_countrunning_taskruns_throttled_by_node
Pipelines 作为代码(Pipelines as Code)
-
Pipelines as Code 会自动从使用已弃用的 Tekton Hub 移到 Artifact Hub 用于管道和任务解析。在升级使用短版本 pins 的一些任务引用(如
0.2)后,无法正确解析。您必须将它们更新为完整的语义版本格式,如0.2.0,以确保正确任务解析。 在升级到 1.20 后,
hub_catalog_name变量值将保持设置为tekton。因此,系统不会从 Artifact Hub 上的正确目录中获取git-clone任务。升级到 1.20 后,您必须运行以下命令来从 Pipelines as Code 配置映射中删除该变量:oc patch configmap pipelines-as-code -n openshift-pipelines --type=json -p='[{"op": "remove", "path": "/data/hub-catalog-name"}]'$ oc patch configmap pipelines-as-code -n openshift-pipelines --type=json -p='[{"op": "remove", "path": "/data/hub-catalog-name"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.3. 已知问题 复制链接链接已复制到粘贴板!
修剪器
-
从 Red Hat OpenShift Pipelines 1.19 升级到 1.20 后,
tekton-pruner-default-spec配置映射值会被使用默认值覆盖。作为临时解决方案,请在升级前维护tekton-pruner-default-spec配置映射副本,并在升级过程中对TektonConfig字段应用相同的副本。这个问题只会影响升级路径,且不会在全新安装中发生。
CLI
-
在 OpenShift 命名空间中使用
opc pr 日志可能会失败,并显示来自 openshift 命名空间错误的重复 Failed to list objectsfor admin 和 non-admin 用户。
Tekton Cache
-
在 IBM P 和 IBM Z 环境中,
cache-fetch步骤可能会失败,且无法更改 ownership: operation not permitted错误信息。出现这个问题的原因是文件系统对底层存储的权限限制。
Tekton Chains
-
Pod 反关联性规则不会应用到
tekton-chains-controller副本。
Tekton Hub
-
从 Tekton Hub 下载的
git-clone任务显示版本0.9,而不是0.10。这是因为系统以字典顺序排序版本字符串,而不是使用语义版本。
1.2.4. 修复的问题 复制链接链接已复制到粘贴板!
Pipelines
-
在此次更新之前,当使用 Helm 部署
PipelineRuns和TaskRuns时,OpenShift Pipelines 控制器不会应用managed-by: tekton-pipelines标签。另外,由控制器创建的 pod 可能会被TaskRun或PipelineRun设置的值覆盖app.kubernetes.io/managed-by标签。在这个版本中,控制器会持续应用正确的标签,pod 使用默认的app.kubernetes.io/managed-by值。 -
在此次更新之前,OpenShift Container Platform 控制台声明了
PipelineRun对象的 'Cancelling' 状态并带有失败的finally任务,即使PipelineRun的实际状态是Canceled,从而导致混淆。在这个版本中,这个问题已被解决。 -
在此次更新之前,
PipelineRunEvents 选项卡不会显示事件,因为 Pipeline Console 插件存在问题。因此,您无法实时监控事件。在这个版本中,这个问题已被解决。 - 在此次更新之前,管道构建器只从 Artifact Hub 获取有限的任务,从而导致某些任务不可用。这会导致管道创建不完整。在这个版本中,接口获取搜索上的 Artifact Hub 中任务的完整列表,显示管道构建器中的所有可用任务。
-
在此次更新之前,在 git 克隆过程中运行 Konflux-specific
fbc-fips-check-oci-ta任务会导致临时资源不可用,阻止 git 解析器并防止解析Requests 解析。这会导致构建失败,并显示以下错误消息:cannot fork ()for remote-https: Resource temporarily unavailable。在这个版本中,这个问题已被解决。 在此次更新之前,
TaskRun和CustomRuncreation 可能会在临时变异-webhook 超时中立即失败,从而导致忙碌的集群出现 flakiness。在这个版本中,系统应用 exponential backoff,通过wait-exponential-backoff配置映射进行配置,并由enable-wait-exponential-backoff设置控制:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在此次更新之前,控制器使用固定的线程计数,限制并发性。在这个版本中,您可以通过设置
THREADS_PER_CONTROLLER环境变量来覆盖threads-per-controller,从而可以对控制器并发进行更精细的控制。 -
在此次更新之前,Task
SpecCR 中的podTemplate字段不支持参数替换、限制列表和多架构模式。在这个版本中,控制器会替换所有TaskRuns和TaskRunSpecs的podTemplate字段中的参数。 -
在此次更新之前,
管道v1beta1 中的onError块不支持变量。在这个版本中,控制器会解析onError变量,改进了错误处理灵活性。 - 在此次更新之前,git 解析器 shell-out 有时无法继承环境变量,从而破坏环境驱动的身份验证或配置。在这个版本中,解析器将 pod 环境正确传递给所有 git 子进程。
-
在此次更新之前,git 解析器部署可能会使 zombie git 进程继续运行,消耗资源。在这个版本中,解析器使用基于
tini的镜像和入口点来主动清理子进程。 -
在此次更新之前,升级 OpenShift Pipelines 可能会在因为规格偏移而在已完成的
PipelineRuns或TaskRuns时更新元数据(如终结器)时导致错误。在这个版本中,这个问题已被解决。 - 在此次更新之前,OpenShift git 解析器不会将可信 CA 配置映射挂载到组件系统 CA 存储中,可能会导致证书验证问题。在这个版本中,配置映射会被正确挂载,确保 git 操作安全。
-
在此次更新之前,如果存储库中缺少原始 remote,
git-clone任务会失败,并显示No such remote '错误。在这个版本中,任务会自动将原始远程添加到存储库配置中,确保正确设置和成功克隆。origin' -
在此次更新之前,当超过资源配额时,
管道控制器会立即失败,取消运行并中断用户工作流。在这个版本中,控制器会重试并自动重新运行资源(如果资源可用),从而减少不必要的取消并改进管道可靠性。 -
在此次更新之前,当
buildah任务BUILD_ARGS参数具有默认值[""]时,管道构建器 UI 无法保存管道。验证错误地拒绝数组中的空字符串,即使任务可能会成功运行。在这个版本中,这个问题已被解决,允许正确保存带有默认BUILD_ARGS参数的管道。
Pipelines 作为代码(Pipelines as Code)
- 在此次更新之前,Pipelines as Code 的结构化日志缺少启动 Webhook 请求的详细源存储库信息。在这个版本中,Pipelines as Code 的日志包括完整的源存储库详情,以便 Operator 更容易识别用户报告的问题。
-
在此次更新之前,Pipelines 中无效的通用表达式语言(CEL)表达式会静默地失败。
在这个版本中,Pipelines as Code 会在拉取请求中发布错误注释,从而更轻松地进行故障排除。 在此次更新之前,Pipelines as Code
PipelineRun会在 GitHub Webhook 集成中的每个拉取请求中发布状态注释,从而造成不必要的通知。在这个版本中,您可以通过设置以下内容来禁用RepositoryCR 中的状态注释:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在此次更新之前,
PipelineRun 启动注释不包括到 OpenShift Container Platform 控制台的链接,使访问更方便。在这个版本中,注释包括到PipelineRun的直接链接。 - 在此次更新之前,Bitbucket push 事件中的空提交由 Pipelines as Code 处理,从而导致控制器崩溃。在这个版本中,控制器会忽略有效负载中的空提交,从而防止崩溃。
-
在此次更新之前,Pipelines as Code 会错误地注解由外部控制器修改的
PipelineRun对象并标记为已启动。在这个版本中,PipelineRun收到状态更改的正确注解,有助于确保准确的跟踪。 -
在此次更新之前,如果未授权用户打开拉取请求(PR)且目标分支不包含
.tekton目录,则会自动处于停止状态。Pipelines as Code 创建了一个待处理的检查,这个检查会无限期地保留,即使存储库管理员批准了 CI 运行,使用/ok-to-testGitOps 注释。在这个版本中,在批准后会正确更新检查,允许自动扩展可以正常进行。
CLI
-
在此次更新之前,
opc CLI 从已删除的 pod 读取 pod 日志可能会导致 panic,从而导致应用程序崩溃。在这个版本中,删除的 pod 场景会被正确处理,防止读取日志时崩溃。 -
在此次更新之前,
opc CLIPipelineRunPending状态显示不正确的颜色,从而更难以与其他状态区分。在这个版本中,Pending 状态颜色正确,以提高视觉清晰性。 -
在此次更新之前,以下日志的
opcCLI 可能会触发死锁,从而导致应用程序挂起。在这个版本中,日志中的死锁场景已被修复,确保可靠的日志流。 -
在此次更新之前,不同任务和步骤的
opcCLI 日志行不容易区分,并无法简化调试。在这个版本中,日志行默认包含一个显示日志源、任务和步骤名称的前缀,从而提高了可读性和调试体验。 -
在此次更新之前,查询在 OPC 结果中运行的
PipelineRun或TaskRun的日志会导致不明确的错误消息。在这个版本中,消息会明确表示在运行仍在进行期间无法检索日志。
Tekton Triggers
-
在此次更新之前,使用带有多个触发器和扩展的
TriggerGroup会导致数据争用和控制器 panic。在这个版本中,控制器会处理多个触发器,且没有错误。
1.2.5. 弃用的功能 复制链接链接已复制到粘贴板!
-
Tekton Results 保留代理中的
maxRetention参数已弃用。使用defaultRetention。 -
chain命令已弃用,并将在以后的发行版本中删除。