1.14. Red Hat OpenShift Pipelines 正式发布 1.4 发行注记


Red Hat OpenShift Pipelines General Availability(GA)1.4 现在包括在 OpenShift Container Platform 4.7 中。

注意

除了 stable 和 preview Operator 频道外,Red Hat OpenShift Pipelines Operator 1.4.0 还带有 ocp-4.6、ocp-4.5 和 ocp-4.4 弃用的频道。这些过时的频道及其支持将在以下 Red Hat OpenShift Pipelines 发行版本中删除。

1.14.1. 兼容性和支持列表

这个版本中的一些功能当前还只是一个技术预览。它们并不适用于在生产环境中使用。

在下表中,被标记为以下状态的功能:

TP

技术预览

GA

公开发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

表 1.6. 兼容性和支持列表
功能版本支持状态

Pipelines

0.22

GA

CLI

0.17

GA

目录

0.22

GA

触发器

0.12

TP

Pipeline 资源

-

TP

如果您有疑问或希望提供反馈信息,请向产品团队发送邮件 pipelines-interest@redhat.com

1.14.2. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.4 中的新内容。

  • 自定义任务有以下改进:

    • Pipeline 结果现在可以引用自定义任务生成的结果。
    • 自定义任务现在可以使用工作区、服务帐户和 pod 模板来构建更复杂的自定义任务。
  • finally 的任务包括以下改进:

    • finally 任务中支持 when 表达式,它可以有效地保证执行,并提高了任务的可重复使用性。
    • finally 任务可以被配置为消耗同一管道中任何任务的结果。

      注意

      OpenShift Container Platform 4.7 web 控制台中不支持 when 表达式和 finally 任务。

  • 添加了对 dockercfgdockerconfigjson 类型的多个 secret 的支持,以便在运行时进行身份验证。
  • 添加支持 git-clone 任务的 sparse-checkout 的功能。这可让您将存储库的子集克隆为本地副本,并帮助您限制克隆的存储库的大小。
  • 您可以创建管道以待处理状态运行,而无需实际启动它们。在负载非常重的集群中,这允许 Operator 控制管道运行的开始时间。
  • 确保为控制器手动设置 SYSTEM_NAMESPACE 环境变量 ; 这在之前被默认设置。
  • 现在,一个非 root 用户被添加到管道的构建基础镜像中,以便 git-init 能够以非 root 用户身份克隆存储库。
  • 支持在管道运行启动前在已解析的资源间验证依赖项。管道中的所有结果变量都必须有效,管道中的可选工作区只能传递给期望管道启动运行的任务。
  • controller 和 Webhook 作为非 root 组运行,并且删除了它们的多余功能,以使它们更加安全。
  • 您可以使用 tkn pr logs 命令查看重试任务运行的日志流。
  • 您可以使用 tkn tr delete 命令中的 --clustertask 选项删除与特定集群任务关联的所有任务。
  • 通过引入一个新的 customResource 字段,增加了对在 EventListener 资源中使用 Knative 服务的支持。
  • 当事件有效负载没有使用 JSON 格式时,会显示错误消息。
  • 源控制拦截器(如 GitLab、BitBucket 和 GitHub)现在使用新的 InterceptorRequestInterceptorResponse 类型的接口。
  • 新的 CEL 功能 marsagingJSON 被实现,以便您可以将 JSON 对象或数组编码到字符串。
  • 为 CEL 添加了 HTTP 处理器,并添加了源控制内核拦截器。它将四个核心拦截器打包到单一 HTTP 服务器中,该服务器部署在 tekton-pipelines 命名空间中。EventListener 对象通过 HTTP 服务器将事件转发到拦截器。每个拦截器都位于不同的路径。例如,CEL 拦截器位于 /cel 路径中。
  • pipelines-scc 安全性上下文约束(SCC)与默认的 pipeline 服务帐户一同使用。此新服务帐户与 anyuid 类似,但 OpenShift Container Platform 4.7 的 SCC 在 YAML 中定义中有一个小的差别:

    fsGroup:
      type: MustRunAs

1.14.3. 已弃用的功能

  • 不支持 pipeline 资源存储中的 build-gcs 子类型和 gcs-fetcher 镜像。
  • 在集群任务的 TaskRun 字段中,删除标签 tekton.dev/task
  • 对于 webhook,移除了与字段 admissionReviewVersions 对应的 v1beta1 值。
  • 用于构建和部署的 creds-init 帮助程序镜像已被删除。
  • 在触发器 spec 和绑定中,弃用的字段 template.name 已被删除,并使用 template.ref 替代。您应该更新所有 eventListener 定义,以使用 ref 字段。

    注意

    从 OpenShift Pipelines 1.3.x 和早期版本升级到 OpenShift Pipelines 1.4.0 会中断事件监听程序,因为 template.name 字段不可用。在这种情况下,使用 OpenShift Pipelines 1.4.1 来提供恢复的 template.name 字段。

  • 对于 EventListener 自定义资源/对象,PodTemplateServiceType 字段已弃用,并使用 Resource 替代。
  • 过时的 spec 风格内嵌绑定已被删除。
  • spec 字段已从 triggerSpecBinding 中删除。
  • 事件 ID 已从包括五个字符的随机字符串改为 UUID。

1.14.4. 已知问题

  • Developer 视角中,管道指标和触发器功能仅适用于 OpenShift Container Platform 4.7.6 或更高版本。
  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 tkn hub 命令。
  • 当您在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上运行 Maven 和 Jib Maven 集群任务时,将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11
  • 如果您在触发器绑定中有以下配置,触发器会因为不正确处理 JSON 格式抛出错误:

    params:
      - name: github_json
        value: $(body)

    要解决这个问题:

    • 如果您使用触发器 v0.11.0 及更高版本,请使用 marshalJSON CEL 函数,该函数使用 JSON 对象或数组,并将该对象或数组的 JSON 编码作为字符串返回。
    • 如果使用旧的触发器版本,请在触发器模板中添加以下注解:

      annotations:
        triggers.tekton.dev/old-escape-quotes: "true"
  • 当从 OpenShift Pipelines 1.3.x 升级到 1.4.x 时,您必须重新创建路由。

1.14.5. 修复的问题

  • 在以前的版本中,tekton.dev/task 标签已从集群任务运行中删除,并且引进了 tekton.dev/clusterTask 标签。此更改导致的问题可以通过修复 clustertask describedelete 命令来解决。另外,也修改了任务的 lastrun 功能,从而解决应用到在旧版管道中运行任务中的 tekton.dev/task 标签的问题。
  • 当进行交互式 tkn pipeline start pipelinename 时,会以互动方式创建一个 PipelineResource。如果资源状态不是 niltkn p start 命令会输出资源状态。
  • 在以前的版本中,tekton.dev/task=name 标签已从集群任务创建的任务中删除。在这个版本中,使用 --last 标志修改 tkn clustertask start 命令,以检查所创建的任务运行中的 tekton.dev/task=name 标签。
  • 当任务使用内联任务规格时,在运行 tkn pipeline describe 命令时对应的任务运行会被嵌入到管道中,任务名称返回为内嵌。
  • 修复了 tkn version 命令,显示已安装的 Tekton CLI 工具的版本,无需配置的 kubeConfiguration 命名空间或对集群的访问。
  • 如果使用意外的参数或者使用多个参数,则 tkn completion 命令会出错。
  • 在以前的版本中,当管道转换为 v1alpha1 版本并恢复到 v1beta1 版本时,带有嵌套在一个管道规格中的 finally 的任务将会丢失那些 finally 任务。修复了转换过程中发生的这个错误,以避免潜在的数据丢失。现在,带有嵌套在管道规格中的 finally 任务的管道运行会被序列化并存储在 alpha 版本中,它们只会在以后进行反序列化。
  • 在以前的版本中,当服务帐户中的 secrets 字段被设置为 {} 时,pod 生成中会出现一个错误。任务运行失败,显示 CouldntGetTask,因为带有空 secret 名称的 GET 请求返回了一个错误,表示资源名称可能不是空的。这个问题已通过避免 kubeclient GET 请求中的空 secret 名称来解决。
  • 现在,可以请求带有 v1beta1 API 版本的管道和 v1alpha1 版本,而不会丢失 finall 任务。应用返回的 v1alpha1 版本将以 v1beta1 来保存资源,finally 部分恢复到其原始状态。
  • 在以前的版本中,控制器中的一个未设置的 selfLink 字段在 Kubernetes v1.20 集群中造成错误。作为一个临时修复,在没有自动填充的 selfLink 字段的值时,CloudEvent source 字段被设置为与当前源 URI 匹配的值。
  • 在以前的版本中,带有点(如 gcr.io )的 secret 名称会导致任务运行创建失败。这是因为内部使用的 secret 名称作为卷挂载名称的一部分。卷挂载名称遵循 RFC1123 DNS 标签标准,它不允许使用点作为名称的一部分。这个问题已通过将点替换为横线来解决。
  • 现在,上下文变量会在 finally 任务中进行验证。
  • 在以前的版本中,当任务运行协调器传递了一个任务运行,且没有之前的状态更新,其中包含它创建的 pod 的名称时,任务运行协调程序会列出与任务运行关联的 pod。任务运行协调程序使用任务运行标签(被传播到 pod)来查找 pod。在任务运行期间更改这些标签,会导致代码找不到现有的 pod。因此,会创建重复的 pod。这个问题已通过在查找 pod 时将任务运行协调器更改为只使用 tekton.dev/taskRun Tekton 控制的标签来解决。
  • 在以前的版本中,当管道接受一个可选的工作区并将其传递给管道任务时,如果未提供工作区,管道运行协调器会停止并出错,即使缺少的工作区绑定是可选工作区的有效状态。这个问题已被解决,确保管道运行的协调器不会无法创建任务运行,即使未提供可选的工作区。
  • 排序步骤状态的顺序与步骤容器的顺序匹配。
  • 在以前的版本中,当 Pod 遇到 CreateContainerConfigError 原因时,任务运行状态被设置为 unknown,这意味着任务和管道会运行,直到 pod 超时为止。这个问题已通过将任务运行状态设置为 false 来解决这个问题,因此当 pod 遇到 CreateContainerConfigError 原因时,任务被设置为 failed。
  • 在以前的版本中,管道结果会在管道运行完成后在第一次协调时解析。这可能会导致管道运行的 Succeeded 条件被覆盖。因此,最终状态信息丢失,可能会使监视管道运行条件的任何服务混淆。当管道运行进入 SucceededTrue 条件时,这个问题可以通过将管道结果解析移到协调结束时来解决。
  • 现在,执行状态变量已被验证。这可避免在验证上下文变量来访问执行状态时验证任务结果。
  • 在以前的版本中,包含无效变量的管道结果将添加到管道运行中,并包含变量的字面表达式。因此,很难评估结果是否正确填充。这个问题已通过过滤管道运行结果来解决,该结果引用了失败的任务运行。现在,包含无效变量的管道结果将完全不会被管道运行发送。
  • 现在,tkn eventlistener describe 命令已被修复,以避免在没有模板的情况下崩溃。它还显示有关触发器引用的详情。
  • 从 OpenShift Pipelines 1.3.x 及更早的版本升级到 OpenShift Pipelines 1.4.0 会破坏事件监听程序,因为 template.name 不可用。在 OpenShift Pipelines 1.4.1 中,template.name 已被恢复,以避免触发器中的事件监听程序。
  • 在 OpenShift Pipelines 1.4.1 中,ConsoleQuickStart 自定义资源已更新,以匹配 OpenShift Container Platform 4.7 的功能和行为。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.