1.13. Red Hat OpenShift Pipelines 正式发行 1.5 发行注记


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

1.13.1. 兼容性和支持列表

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

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

TP

技术预览

GA

公开发行

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

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

Pipelines

0.24

GA

CLI

0.19

GA

目录

0.24

GA

触发器

0.14

TP

Pipeline 资源

-

TP

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

1.13.2. 新功能

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

  • Pipeline 运行和任务运行将由目标命名空间中的 cron 作业自动修剪。cron 作业使用 IMAGE_JOB_PRUNER_TKN 环境变量来获取 tkn image 的值。在这个版本中,TektonConfig 自定义资源包括以下字段:

    ...
    pruner:
      resources:
        - pipelinerun
        - taskrun
      schedule: "*/5 * * * *" # cron schedule
      keep: 2 # delete all keeping n
    ...
  • 在 OpenShift Container Platform 中,您可以通过修改 TektonConfig 自定义资源中的新参数 clusterTaskspipelinesTemplates 的值来自定义 Tekton Add-ons 组件的安装:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      addon:
        params:
        - name: clusterTasks
          value: "true"
        - name: pipelineTemplates
          value: "true"
    ...

    如果您使用 TektonConfig 创建附加组件,或者直接使用 Tekton Add-ons 创建附加组件,则允许进行自定义。但是,如果没有传递参数,控制器会添加带有默认值的参数。

    注意
    • 如果使用 TektonConfig 自定义资源创建附加组件,并且稍后在 Addon 自定义资源中更改参数值,则 TektonConfig 自定义资源中的值将覆盖更改。
    • 只有在 clusterTasks 参数的值为 true 时,才可将 pipelinesTemplates 参数的值设置为 true
  • enableMetrics 参数添加到 TektonConfig 自定义资源中。您可以使用它来禁用服务监控器,这是 OpenShift Container Platform 的 Tekton Pipelines 的一部分。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      pipeline:
        params:
        - name: enableMetrics
          value: "true"
    ...
  • 添加了 EventListener OpenCensus 指标(在进程级别捕获指标)。
  • 触发器现在具有标签选择器;您可以使用标签为事件监听程序配置触发器。
  • 添加了用于注册拦截器的 ClusterInterceptor 自定义资源定义,允许您注册您可以插入的新 Interceptor 类型。另外,还会进行以下相关更改:

    • 在触发器规格中,您可以使用包含 ref 字段的新 API 来配置拦截器来引用集群拦截器。另外,您可以使用 params 字段添加传递到拦截器进行处理的参数。
    • 捆绑的拦截器 CEL、GitHub、GitLab 和 BitBucket 已迁移。它们使用新的 ClusterInterceptor 自定义资源定义来实施。
    • 核心拦截器迁移到新格式,使用旧语法创建的任何新触发器都会自动切换到新的 refparams 语法。
  • 要在显示日志时禁用任务名称的前缀或步骤,可将 --prefix 选项用于 log 命令。
  • 要显示特定组件的版本,请使用 tkn version 命令中的新的 --component 标志。
  • 添加了 tkn hub check-upgrade 命令,其他命令会根据管道版本进行修改。此外,search 命令输出中也会显示目录名称。
  • start 命令中添加了对可选工作区的支持。
  • 如果 plugins 目录中不存在插件,则会在当前路径中搜索它们。
  • tkn start [task | clustertask | pipeline] 命令以互动方式启动,并询问 params 值,即使指定了默认参数也是如此。若要停止交互式提示,可在调用 命令时传递 --use-param-defaults 标志。例如:

    $ tkn pipeline start build-and-deploy \
        -w name=shared-workspace,volumeClaimTemplateFile=https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.15/01_pipeline/03_persistent_volume_claim.yaml \
        -p deployment-name=pipelines-vote-api \
        -p git-url=https://github.com/openshift/pipelines-vote-api.git \
        -p IMAGE=image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/pipelines-vote-api \
        --use-param-defaults
  • version 字段在 tkn task describe 命令中添加。
  • 如果只有一个资源,则会自动选择 TriggerTemplateTriggerBindingClusterTriggerBindingEventlistener 等资源的选项会添加到 describe 命令中。
  • tkn pr describe 命令中添加了跳过的任务部分。
  • 添加了对 tkn clustertask logs 的支持。
  • 移除 config.yaml 中的 YAML 合并和变量。另外,现在 kustomizeytt 等工具可以更轻松地使用 release.yaml 文件。
  • 添加了对包含句点字符(".")的资源名称的支持。
  • PodTemplate 规格中的 hostAliases 数组添加到主机名解析的 pod 级别覆盖中。它通过修改 /etc/hosts 文件来实现。
  • 引入了一个变量 $(tasks.status),用于访问任务的聚合执行状态。
  • 为 Windows 添加入口点二进制构建。

1.13.3. 已弃用的功能

  • when 表达式中,对写入的字段的支持会被删除。when 表达式仅支持使用小写字母编写的字段。

    注意

    如果您在 Tekton Pipelines v0.16 (Operator v1.2.x) 中应用了一个带有 when 表达式的管道,则必须重新应用它。

  • 当您将 Red Hat OpenShift Pipelines Operator 升级到 v1.5 时,openshift-clientopenshift-client-v-1-5-0 集群任务会具有 SCRIPT 参数。但是,ARGS 参数和 git 资源会从 openshift-client 集群任务的规格中删除。这个变化可能会造成问题,只有在 ClusterTask 资源的 name 字段中没有特定版本的集群任务才可以无缝地进行升级。

    要防止管道运行出现问题,在升级后使用 SCRIPT 参数,因为它会将之前在 ARGS 参数中指定的值移到集群任务的 SCRIPT 参数中。例如:

    ...
    - name: deploy
      params:
      - name: SCRIPT
        value: oc rollout status <deployment-name>
      runAfter:
        - build
      taskRef:
        kind: ClusterTask
        name: openshift-client
    ...
  • 当您从 Red Hat OpenShift Pipelines Operator v1.4 升级到 v1.5 时,TektonConfig 自定义资源的配置集名称现在会改变。

    表 1.5. TektonConfig 自定义资源的配置集
    Pipelines 1.5 中的配置集Pipelines 1.4 中的对应的配置集安装的 Tekton 组件

    All (默认配置集)

    All (默认配置集)

    Pipelines、Triggers、Add-ons

    Basic

    默认

    Pipelines、Triggers

    Lite

    Basic

    Pipelines

    注意

    如果在 TektonConfig 自定义资源的 config 实例中使用 profile: all,则不需要更改资源规格。

    但是,如果安装的 Operator 在升级前是 Default 或 Basic 配置集,则必须在升级后编辑 TektonConfig 自定义资源的 config 实例。例如,如果配置在升级前是 profile: basic,请确保在升级到 Pipelines 1.5 后为 profile: lite

  • disable-home-env-overwritedisable-working-dir-overwrite 字段现已弃用,并将在以后的发行版本中删除。在本发行版本中,这些标志的默认值被设置为 true,以便向后兼容。

    注意

    在下一个发行版本 (Red Hat OpenShift Pipelines 1.6) 中,HOME 环境变量不会自动设置为 /tekton/home,对于任务运行的默认工作目录也不会设置为 /workspace。这些默认设置与步骤中镜像 Dockerfile 设置的任何值冲突。

  • ServiceTypepodTemplate 字段已从 EventListener spec 中删除。
  • 控制器服务帐户不再请求集群范围的权限来列出和监视命名空间。
  • EventListener 资源的状态有一个名为 Ready 的新条件。

    注意

    将来,EventListener 资源的其他状态条件将会被弃用,而使用 Ready 状态条件。

  • EventListener 响应中的 eventListenernamespace 字段已弃用。现在改为使用 eventListenerUID 字段。
  • replicasEventListener spec 中已被弃用。相反,spec.replicas 字段移到 KubernetesResource spec 中的 spec.resources.kubernetesResource.replicas

    注意

    replicas 字段将在以后的发行版本中删除。

  • 配置内核拦截器的旧方法已弃用。但是,它会继续正常工作,直到在以后的版本中被删除。现在,Trigger 资源中的拦截器被配置为使用新的基于 refparams 的语法。生成的默认 webhook 会自动将旧语法的使用切换为新触发器的新语法。
  • 对于 ClusterRoleBinding 资源,使用 Userbac.authorization.k8s.io/v1 而不是已弃用的 deprecatedrbac.authorization.k8s.io/v1beta1
  • 在集群角色中,对资源(如 serviceaccountssecretsconfigmapslimitranges 等)的集群范围的写访问权限已被移除。另外,对资源(如 deploymentsstatefulsetsdeployment/finalizers 等)的集群范围的访问权限也被移除。
  • Tekton 不再使用 caching.internal.knative.dev 组中的 image 自定义资源定义,它已在此发行版本中排除。

1.13.4. 已知问题

  • git-cli 集群任务使用 alpine/git 基础镜像构建,它预期 /root 作为用户的主目录。但是,这并没有在 git-cli 集群任务中显式设置。

    在 Tekton 中,任务的每个步骤都会使用 /tekton/home 覆盖默认主目录,除非另有指定。这会覆盖基础镜像的 $HOME 环境变量,从而导致 git-cli 集群任务失败。

    此问题有望在即将发布的版本中解决。对于 Red Hat OpenShift Pipelines 1.5 及更早的版本,您可以使用以下任一临时解决方案来避免 git-cli 集群任务失败:

    • 在步骤中设置 $HOME 环境变量,使其不会被覆盖。

      1. [可选] 如果您使用 Operator 安装了 Red Hat OpenShift Pipelines,然后将 git-cli 集群任务克隆到一个单独的任务中。此方法可确保 Operator 不会覆盖对集群任务所做的更改。
      2. 执行 oc edit clustertasks git-cli 命令。
      3. 将预期的 HOME 环境变量添加到步骤的 YAML 中:

        ...
        steps:
          - name: git
            env:
            - name: HOME
              value: /root
            image: $(params.BASE_IMAGE)
            workingDir: $(workspaces.source.path)
        ...
        警告

        对于 Operator 安装的 Red Hat OpenShift Pipelines,如果您在更改 HOME 环境变量前没有将 git-cli 集群任务克隆到单独的任务中,则会在 Operator 协调过程中覆盖更改。

    • 禁用在 feature-flags 配置映射中覆盖 HOME 环境变量。

      1. 执行 oc edit -n openshift-pipelines configmap feature-flags 命令。
      2. disable-home-env-overwrite 标志的值设置为 true

        警告
        • 如果使用 Operator 安装 Red Hat OpenShift Pipelines,则在 Operator 协调过程中会覆盖更改。
        • 修改 disable-home-env-overwrite 标志的默认值可能会破坏其他任务和集群任务,因为它会更改所有任务的默认值。
    • git-cli 集群任务使用其他服务帐户,因为在使用管道的默认服务帐户时会覆盖 HOME 环境变量。

      1. 创建新服务帐户。
      2. 将您的 Git secret 链接到您刚才创建的服务帐户。
      3. 在执行任务或管道时使用服务帐户。
  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 s2i-dotnet 集群任务和 tkn hub 命令。
  • 当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上的任务将失败。作为临时解决方案,您可以通过将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11 来指定自定义镜像。

1.13.5. 修复的问题

  • dag 任务中的 when 表达式不允许指定任何其他任务访问执行状态的上下文变量 ($(tasks.<pipelineTask>.status))。
  • 使用 Owner UID 而不是 Owner 名称,这有助于在 PipelineRun 资源快速删除并重新创建的情况下,避免通过删除 volumeClaimTemplate PVC 创建的竞争条件。
  • 为非 root 用户触发的 build-base 镜像添加了 pullrequest-init 的新 Dockerfile。
  • 当一个管道或任务在运行时使用 -f 选项,且它的定义中的 param 中没有定义 type,将生成一个验证错误,而不是管道或任务以静默方式运行失败。
  • 对于 tkn start [task | pipeline | clustertask] 命令,--workspace 标记的描述现在一致。
  • 在解析参数时,如果遇到空数组,则对应的交互式帮助现在会显示为空字符串。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.