1.12. Red Hat OpenShift Pipelines 正式发行 1.6 发行注记


在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.6 包括在 OpenShift Container Platform 4.9 中。

1.12.1. 新功能

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

  • 在这个版本中,您可以配置管道或任务的 start 命令(使用 --output <string>,其中 <string>yamljson )来返回 YAML 或 JSON 格式的字符串。如果没有使用 --output 选项,start 命令会返回人类友好的消息,而其他程序很难解析该消息。返回 YAML 或 JSON 格式的字符串对于持续集成(CI)环境非常有用。例如,在创建了资源后,您可以使用 yqjq 解析有关资源的 YAML 或 JSON 格式消息,并等待该资源终止而不使用 showlog 选项。
  • 在这个版本中,您可以使用 Podman 的 auth.json 身份验证文件对 registry 进行身份验证。例如,您可以使用 tkn bundle push 来使用 Podman 而不是 Docker CLI 推送到远程 registry。
  • 在这个版本中,如果您使用 tkn [taskrun | pipelinerun] delete --all 命令,您可以使用新的 --keep-since <minutes> 选项来指定一个分钟数,存在时间少于这个分钟数的运行会被保留。例如,若要保持存在的时间少于五分钟的运行,输入 tkn [taskrun | pipelinerun] delete -all --keep-since 5
  • 在这个版本中,当删除任务运行或管道运行时,您可以将 --parent-resource--keep-since 选项一起使用。例如,tkn pipelinerun delete --pipeline pipelinename --keep-since 5 命令会保留其父资源名为 pipelinename,其存在时间为五分钟或更短的管道运行。对于任务运行,tkn tr delete -t <taskname> --keep-since 5tkn tr delete --clustertask <taskname> --keep-since 5 有类似效果。
  • 在这个版本中,增加了对用于 v1beta1 资源的触发器资源的支持。
  • 在这个版本中,在 tkn pipelinerun deletetkn taskrun delete 命令中添加了一个 ignore-running 选项。
  • 在这个版本中,为 tkn tasktkn clustertask 命令添加一个 create 子命令。
  • 在这个版本中,当使用 tkn pipelinerun delete --all 命令时,您可以使用新的 --label <string> 选项来根据标签过滤管道运行。另外,您还可以在 --label 选项中使用 === 作为相等运算符,或者 != 作为不相等运算符。例如,tkn pipelinerun delete --all --label asdftkn pipelinerun delete --all --label==asdf 命令都会删除带有 asdf 标签的所有管道运行。
  • 在这个版本中,您可以从配置映射获取已安装的 Tekton 组件版本,或者从部署控制器获取配置映射的版本。
  • 在这个版本中,触发器支持使用 feature-flagsconfig-defaults 配置映射来分别配置功能标记和设置默认值。
  • 在这个版本中,添加了一个新的指标 eventlistener_event_count,您可以使用它来统计 EventListener 资源接收的事件。
  • 在这个版本中添加了 v1beta1 Go API 类型。在这个版本中,触发器支持 v1beta1 API 版本。

    在当前发行版本中,v1alpha1 功能已弃用,并将在以后的发行版本中删除。改为使用 v1beta1 功能替代。

  • 在当前发行版本中,默认启用自动运行资源。另外,您可以使用以下新注解为每个命名空间单独配置自动运行任务运行和管道运行:

    • operator.tekton.dev/prune.schedule:如果此注解的值与 TektonConfig 自定义资源定义中指定的值不同,则会在该命名空间中创建新的 cron 作业。
    • operator.tekton.dev/prune.skip:设置为 true 时,配置它的命名空间不会被修剪。
    • operator.tekton.dev/prune.resources:此注解接受以逗号分隔的资源列表。要修剪单一资源,如管道运行,将此注解设置为 "pipelinerun"。要修剪多个资源,如任务运行和管道运行,将此注解设置为 "taskrun, pipelinerun"
    • operator.tekton.dev/prune.keep:使用此注解保留资源而不进行修剪。
    • operator.tekton.dev/prune.keep-since:使用此注解来根据其存在的时间来保留资源。此注解的值必须等于资源的年龄(以分钟为单位)。例如,若要保留在五天内创建的资源,请将 keep-since 设置为 7200

      注意

      keepkeep-since 注释是互斥的。对于任何资源,您只能配置其中一个。

    • operator.tekton.dev/prune.strategy:将此注解的值设置为 keepkeep-since
  • 管理员可以禁用在整个集群中创建 pipeline 服务帐户创建,从而防止因为错误地使用关联的 SCC(这与 anyuid 非常相似)造成权限升级的问题。
  • 现在,您可以使用 TektonConfig 自定义资源(CR)和单个组件的 CR 配置功能标记和组件,如 TektonPipelineTektonTriggers。此级别的颗粒度有助于为各个组件的 Tekton OCI 捆绑包自定义和测试 alpha 功能。
  • 现在,您可以为 PipelineRun 资源配置可选的 Timeouts 字段。例如,您可以单独为管道运行、每个任务运行以及 finally 任务配置超时。
  • TaskRun 资源生成的 Pod 现在会设置 pod 的 activeDeadlineSeconds 字段。这可让 OpenShift 将它们视为终止,并允许您将具有特定作用域的 ResourceQuota 对象用于容器集。
  • 您可以使用 configmaps 在任务运行、管道运行、任务和管道上消除指标标签或标签类型。另外,您可以为测量持续时间配置不同类型的指标,如直方图、量表或最后一个值。
  • 您可以统一定义 pod 的请求和限值,因为 Tekton 现在通过考虑 MinMaxDefaultDefaultRequest 字段来全面支持 LimitRange 对象。
  • 引入了以下 alpha 功能:

    • 现在,管道运行可以在运行 finally 任务后停止,而不是之前停止直接运行所有任务的行为。在这个版本中添加了以下 spec.status 值:

      • StoppedRunFinally 将在当前运行的任务完成后停止,然后运行 finally 任务。
      • CancelledRunFinally 将立即取消正在运行的任务,然后运行 finally 任务。
      • Cancelled 将保留 PipelineRunCancelled 状态提供的以前行为。

        注意

        Cancelled 状态替换已弃用的 PipelineRunCancelled 状态,该状态将在 v1 版本中删除。

    • 现在,您可以使用 oc debug 命令将任务运行设置为 debug 模式,这会暂停执行并允许您检查 pod 中的特定步骤。
    • 当您将一个步骤的 onError 字段设置为 continue 时,会记录该步骤的退出代码并传递给后续步骤。但是,任务运行不会失败,任务中其余步骤的执行将继续。要保留现有的行为,您可以将 onError 字段的值设置为 stopAndFail
    • 任务现在可以接受比实际使用更多的参数。启用 alpha 功能标记时,参数可以隐式传播到内联规格。例如,内联任务可以访问其父管道运行的参数,而不必为任务明确定义每个参数。
    • 如果您为 alpha 功能启用标记,则 When 表达式下的条件将仅适用于直接关联的任务,而不是任务的依赖项。要将 When 表达式应用到关联的任务及其依赖关系中,您必须将表达式与每个相依任务单独关联。请注意,进入下一步是 Tekton 的任何新 API 版本中 When 表达式的默认行为。现有的默认行为将被弃用,而由此更新替代。
  • 当前发行版本允许您通过在 TektonConfig 自定义资源(CR)中指定 nodeSelectortolerations 值来配置节点选择。Operator 将这些值添加到它创建的所有部署中。

    • 要为 Operator 的控制器和 webhook 部署配置节点选择,请在安装 Operator 后编辑 Subscription CR 规格中的 config.nodeSelectorconfig.tolerations 字段。
    • 要在基础架构节点上部署 OpenShift Pipelines 的其余 control plane pod,请使用 nodeSelectortolerations 字段更新 TektonConfig CR。然后,修改会应用到 Operator 创建的所有 pod。

1.12.2. 已弃用的功能

  • 在 CLI 0.21.0 中,已弃用了对 clustertask, task, taskrun, pipeline, 和 pipelinerun 的所有 v1alpha1 资源的支持。这些资源现已过时,并将在以后的发行版本中删除。
  • 在 Tekton Triggers v0.16.0 中,冗余的 status 标签已从 EventListener 资源的指标中删除。

    重要

    中断更改: status 标签已从 eventlistener_http_duration_seconds_* 指标中删除。删除基于 status 标签的查询。

  • 在当前发行版本中,v1alpha1 功能已弃用,并将在以后的发行版本中删除。在这个版本中,您可以改为使用 v1beta1 Go API 类型。触发器现在支持 v1beta1 API 版本。
  • 在当前发行版本中,EventListener 资源会在触发器完成处理前发送响应。

    重要

    中断更改:使用此更改时,EventListener 资源会在创建资源时停止响应 201 Created 的状态代码。相反,它使用 202 Accepted 的响应代码进行响应。

  • 当前发行版本从 EventListener 资源中删除 podTemplate 字段。

    重要

    中断更改:删除了作为 #1100 一部分的 podTemplate 字段。

  • 当前发行版本从 EventListener 资源规格中删除已弃用的 replicas 字段。

    重要

    中断更改:已弃用的 replicas 字段已被删除。

  • 在 Red Hat OpenShift Pipelines 1.6 中,HOME="/tekton/home"workingDir="/workspace" 的值从 Step 对象的规格中删除。

    相反,Red Hat OpenShift Pipelines 将 HOMEworkingDir 设置为运行 Step 对象的容器定义的值。您可以在 Step 对象的规格中覆盖这些值。

    要使用旧的行为,您可以将 TektonConfig CR 中的 disable-working-directory-overwritedisable-home-env-overwrite 字段改为 false

    apiVersion: operator.tekton.dev/v1alpha1
      kind: TektonConfig
      metadata:
        name: config
      spec:
        pipeline:
          disable-working-directory-overwrite: false
          disable-home-env-overwrite: false
      ...
    重要

    TektonConfig CR 中的 disable-working-directory-overwritedisable-home-env-overwrite 字段现已弃用,并将在以后的发行版本中删除。

1.12.3. 已知问题

  • 当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上的任务将失败。作为临时解决方案,您可以通过将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11 来指定自定义镜像。
  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 s2i-dotnet 集群任务。
  • 在您使用 tkn hub 在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x) 上基于 Tekton Catalog 安装任务前,请验证是否可以在这些平台上执行任务。要检查 ppc64les390x 是否列在任务信息的"Platforms"部分,您可以运行以下命令: tkn hub info task <name>
  • 您无法使用 nodejs:14-ubi8-minimal 镜像流,因为这样做会生成以下错误:

    STEP 7: RUN /usr/libexec/s2i/assemble
    /bin/sh: /usr/libexec/s2i/assemble: No such file or directory
    subprocess exited with status 127
    subprocess exited with status 127
    error building at STEP "RUN /usr/libexec/s2i/assemble": exit status 127
    time="2021-11-04T13:05:26Z" level=error msg="exit status 127"

1.12.4. 修复的问题

  • 现在,IBM Power Systems、IBM Z 和 LinuxONE 支持 tkn hub 命令。
  • 在更新前,当用户运行 tkn 命令并完成管道运行后,终端不可用,即使指定了 retries 也是如此。在任务运行或管道运行中指定超时无效。在这个版本中解决了这个问题,终端可以在运行命令后可用。
  • 在更新前,运行 tkn pipelinerun delete --all 会删除所有资源。在这个版本中,处于 running 状态的资源无法被删除。
  • 在这个版本中,使用 tkn version --component=<component> 命令不会返回组件版本。在这个版本中解决了这个问题,这个命令会返回组件版本。
  • 在更新前,当您使用 tkn pr logs 命令时,它会以错误的任务顺序显示管道输出日志。在这个版本中解决了这个问题,已完成的 PipelineRuns 的日志会在适当的 TaskRun 执行顺序中列出。
  • 在这个版本中,编辑正在运行的管道规格可能会阻止管道运行在完成后停止。在这个版本中,只获取定义一次,然后使用存储在状态中的规格进行验证,从而解决了这个问题。当 PipelineRunTaskRun 指代的 PipelineTask 在运行时会发生变化,这个变化减少了出现竞争条件的可能性。
  • When 表达式值可以有数组参数引用,例如 values: [$(params.arrayParam[*])]

1.12.5. Red Hat OpenShift Pipelines 正式发行版本 1.6.1 发行注记

1.12.5.1. 已知问题

  • 从旧版本升级到 Red Hat OpenShift Pipelines 1.6.1 后,OpenShift Pipelines 可能会进入不一致的状态,因为您无法对 Tekton 资源(tasks 和 pipelines)执行任何操作(create/delete/apply)。例如,在删除资源时,您可能会遇到以下错误:

    Error from server (InternalError): Internal error occurred: failed calling webhook "validation.webhook.pipeline.tekton.dev": Post "https://tekton-pipelines-webhook.openshift-pipelines.svc:443/resource-validation?timeout=10s": service "tekton-pipelines-webhook" not found.

1.12.5.2. 修复的问题

  • Red Hat OpenShift Pipelines 设置的 SSL_CERT_DIR 环境变量(/tekton-custom-certs)不会用证书文件覆盖以下默认系统目录:

    • /etc/pki/tls/certs
    • /etc/ssl/certs
    • /system/etc/security/cacerts
  • Horizontal Pod Autoscaler 可以管理 Red Hat OpenShift Pipelines Operator 控制的部署副本数。在这个发行版本中,如果最终用户或集群代理更改了计数,Red Hat OpenShift Pipelines Operator 不会重置管理的部署的副本计数。但是,升级 Red Hat OpenShift Pipelines Operator 时会重置副本。
  • 现在,根据 TektonConfig 自定义资源中指定的节点选择器和容限(toleration)限制将把 tkn CLI 的 pod 调度到节点上。

1.12.6. Red Hat OpenShift Pipelines 正式发行版本 1.6.2 发行注记

1.12.6.1. 已知问题

  • 当您创建新项目时,pipeline 服务帐户的创建会被延迟,并删除现有集群任务和管道模板需要超过 10 分钟。

1.12.6.2. 修复的问题

  • 在此次更新之前,在从旧版本升级到 Red Hat OpenShift Pipelines 1.6.1 后,会为管道创建多个 Tekton 安装程序集实例。在这个版本中,Operator 可确保升级后每个类型为 TektonInstallerSet 的一个实例都存在。
  • 在此次更新之前,Operator 中的所有协调程序都使用组件版本在升级到旧版本的 Red Hat OpenShift Pipelines 1.6.1 期间决定资源重新创建。因此,这些资源不会被重新创建,其组件版本没有在升级过程中改变。在这个版本中,Operator 使用 Operator 版本而不是组件版本来决定升级过程中的资源重新创建。
  • 在此次更新之前,升级后,集群中缺少管道 Webhook 服务。这是因为配置映射上的升级死锁。在这个版本中,如果集群中不存在配置映射,添加了一个机制来禁用 Webhook 验证。因此,在升级后管道 Webhook 服务会保留在集群中。
  • 在此次更新之前,在任何配置更改到命名空间后,自动运行操作的 cron 作业会被重新创建。在这个版本中,只有在命名空间中有相关注解改变时,才会重新创建 auto-pruning 的 cron 任务。
  • Tekton Pipelines 的上游版本被修订为 v0.28.3,它包括以下修复:

    • 修复 PipelineRunTaskRun 对象,以允许进行标签或注解。
    • 对于隐式参数:

      • 不要将 PipelineSpec 参数应用到 TaskRefs 对象。
      • 禁用 Pipeline 对象的隐式参数行为。

1.12.7. Red Hat OpenShift Pipelines 正式发布 1.6.3 发行注记

1.12.7.1. 修复的问题

  • 在此次更新之前,Red Hat OpenShift Pipelines Operator 从组件(如 Pipelines 和 Triggers)中安装 Pod 安全策略。但是,作为组件的一部分提供的 Pod 安全策略在以前的版本中已被弃用。在这个版本中,Operator 会停止从组件安装 Pod 安全策略。因此,以下升级路径会受到影响:

    • 从 OpenShift Pipelines 1.6.1 或 1.6.2 升级到 OpenShift Pipelines 1.6.3 会删除 Pod 安全策略,包括 Pipelines 和 Triggers 组件中的 Pod 安全策略。
    • 从 OpenShift Pipelines 1.5.x 升级到 1.6.3 会保留从组件安装的 Pod 安全策略。作为集群管理员,您可以手动删除它们。

      注意

      当您升级到将来的版本时,Red Hat OpenShift Pipelines Operator 会自动删除所有过时的 Pod 安全策略。

  • 在此次更新之前,只有集群管理员才能访问 OpenShift Container Platform 控制台中的管道指标。在这个版本中,与其他集群角色的用户也可以访问管道指标。
  • 在此次更新之前,带有 OpenShift Pipelines Operator 的基于角色的访问控制 (RBAC) 问题会导致升级或安装组件的问题。这个版本提高了安装各种 Red Hat OpenShift Pipelines 组件的可靠性和一致性。
  • 在此次更新之前,在 TektonConfig CR 中将 clusterTaskspipelineTemplates 字段设置为 false 时,会降低删除集群任务和管道模板。这个版本提高了 Tekton 资源(如集群任务和管道模板)的生命周期管理速度。

1.12.8. Red Hat OpenShift Pipelines 正式发布 1.6.4 发行注记

1.12.8.1. 已知问题

  • 从 Red Hat OpenShift Pipelines 1.5.2 升级到 1.6.4 后,访问事件监听程序路由会返回 503 错误。

    临时解决方案:修改事件监听器路由的 YAML 文件中的目标端口。

    1. 为相关命名空间提取路由名称。

      $ oc get route -n <namespace>
    2. 编辑路由以修改 targetPort 字段的值。

      $ oc edit route -n <namespace> <el-route_name>

      示例:现有事件监听程序路由

      ...
      spec:
        host: el-event-listener-q8c3w5-test-upgrade1.apps.ve49aws.aws.ospqa.com
        port:
          targetPort: 8000
        to:
          kind: Service
          name: el-event-listener-q8c3w5
          weight: 100
        wildcardPolicy: None
      ...

      示例:修改事件监听程序路由

      ...
      spec:
        host: el-event-listener-q8c3w5-test-upgrade1.apps.ve49aws.aws.ospqa.com
        port:
          targetPort: http-listener
        to:
          kind: Service
          name: el-event-listener-q8c3w5
          weight: 100
        wildcardPolicy: None
      ...

1.12.8.2. 修复的问题

  • 在此次更新之前,如果任何命名空间处于 Terminating 状态,Operator 会在创建 RBAC 资源时失败。在这个版本中,Operator 忽略了命名空间处于 Terminating 状态,并创建 RBAC 资源。
  • 在此次更新之前,该任务会在没有注解指定关联的 Tekton 控制器发行版本而运行失败或重启。在这个版本中,包含适当的注解会被自动运行,没有失败或重启的任务。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.