1.16. Red Hat OpenShift Pipelines 技术预览 1.2 发行注记
1.16.1. 新功能
Red Hat OpenShift Pipelines 技术预览(TP)1.2 现在包括在 OpenShift Container Platform 4.6 中。Red Hat OpenShift Pipelines TP 1.2 更新为支持:
- Tekton Pipelines 0.16.3
-
Tekton
tkn
CLI 0.13.1 - Tekton Triggers 0.8.1
- 基于 Tekton Catalog 0.16 的集群任务
- OpenShift Container Platform 4.6 中的 IBM Power Systems
- OpenShift Container Platform 4.6 上的 IBM Z 和 LinuxONE
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.2 中的新内容。
1.16.1.1. Pipelines
此 Red Hat OpenShift Pipelines 发行版本添加了对断开连接的安装的支持。
注意IBM Power Systems、IBM Z 和 LinuxONE 目前不支持在受限环境中安装。
-
现在,您可以使用
when
字段而不是conditions
资源,仅在满足特定条件时运行任务。WhenExpression
资源的关键组件是Input
、Operator
和Values
。如果所有表达式都评估的结果都为True
, 则任务运行。如果表达式评估的结果为False
,则任务被跳过。 - 现在,如果某个任务运行被取消或超时,则步骤(Step)状态被更新。
-
现在,支持 Git 大文件存储(LFS)来使用
git-init
构建基础镜像。 -
现在,当某个任务嵌入到管道中时,您可以使用
taskSpec
字段来指定元数据,如标识(label)和注解(annotation)。 -
现在,Pipeline 运行支持云事件。现在,对于云事件管道资源发送的带有
backoff
的云事件会进行重试。 -
现在,可以为声明了
Task
、但没有明确指定TaskRun
资源的工作区(workspace)设置一个默认的Workspace
配置。 -
支持
PipelineRun
命名空间和TaskRun
命名空间的命名空间变量插入。 -
现在,添加了对
TaskRun
对象的验证,以检查当TaskRun
资源与 Affinity Assistant 关联时,是否使用一个以上的持久性卷声明工作区。如果使用多个持久性卷声明工作区,则任务运行会失败,并且有一个TaskRunValidationFailed
条件。请注意,默认情况下, Affinity Assistant 在 Red Hat OpenShift Pipelines 中被禁用,因此您需要启用 Affinity Assistant 来使用它。
1.16.1.2. Pipelines CLI
tkn task describe
、tkn taskrun describe
、tkn clustertask describe
、tkn pipeline describe
和tkn pipelinerun describe
命令现在:-
如果存在其中之一,会自动选择
Task
、TaskRun
、ClusterTask
、Pipeline
和PipelineRun
。 -
在相应的输出中显示
Task
、TaskRun
、ClusterTask
、Pipeline
和PipelineRun
资源的结果。 -
在相应的输出中显示
Task
、TaskRun
、ClusterTask
、Pipeline
和PipelineRun
资源中声明的工作区。
-
如果存在其中之一,会自动选择
-
现在,您可以使用
tkn clustertask start
命令的--prefix-name
选项指定任务运行名称前缀。 -
现在为
tkn clustertask start
命令提供了互动模式支持。 -
现在,您可以使用
TaskRun
和PipelineRun
对象的本地或远程文件定义指定管道支持的PodTemplate
属性。 -
现在,您可以在
tkn clustertask start
命令中使用--use-params-defaults
选项,使用ClusterTask
配置中设置的默认值并创建任务运行。 -
现在,如果有些参数没有指定默认值,
tkn pipeline start
命令的--use-param-defaults
标志会提示以互动模式提供。
1.16.1.3. 触发器
-
添加了一个名为
parseYAML
的通用表达语言(CEL)函数,用来将 YAML 字符串解析为一个映射的字符串。 - 在评估表达式和解析 hook 正文以创建评估环境时,改进了解析 CEL 表达式的错误消息,使其更加精细。
- 现在,可以支持 marsing 布尔值和映射,如果它们被用作 CEL 覆盖机制中的表达式值。
在
EventListener
对象中添加了以下字段:-
replicas
字段通过在 YAML 文件中指定副本数,使事件监听程序能够运行多个 pod。 -
NodeSelector
字段使EventListener
对象能够将事件监听器 pod 调度到特定的节点。
-
-
Webhook 拦截器现在可以解析
EventListener-Request-URL
标头,从事件监听器处理的原始请求 URL 中提取参数。 - 现在,事件监听器的注解可以被传播到部署、服务和其他 pod。请注意,服务或部署的自定义注解将被覆盖,因此必须在事件监听程序注解中添加它们以便传播它们。
-
现在,当用户将
spec.replicas
值指定为负数
或零
时,可以正确验证EventListener
规格中的副本。 -
现在,您可以在
EventListener
spec 中指定TriggerCRD
项,作为一个使用TriggerRef
项的引用来独立创建TriggerCRD
项,然后在EventListener
spec 中绑定它。 -
现在,提供了对
TriggerCRD
对象的验证和默认值。
1.16.2. 已弃用的功能
-
$(params)
参数现已从triggertemplate
资源中删除,由$(tt.params)
替代,以避免resourcetemplate
和triggertemplate
资源参数间的混淆。 -
基于可选的基于
EventListenerTrigger
的身份验证级别的ServiceAccount
引用,已从对象引用改为一个ServiceAccountName
字符串。这样可确保ServiceAccount
引用与EventListenerTrigger
对象位于同一个命名空间中。 -
Conditions
自定义资源定义(CRD)现已弃用,已使用WhenExpressions
CRD 替代。 -
PipelineRun.Spec.ServiceAccountNames
对象已启用,被PipelineRun.Spec.TaskRunSpec[].ServiceAccountName
对象替代。
1.16.3. 已知问题
- 此 Red Hat OpenShift Pipelines 发行版本添加了对断开连接的安装的支持。但是,集群任务使用的一些镜像必须进行镜像(mirror)才能在断开连接的集群中工作。
-
在卸载 Red Hat OpenShift Pipelines Operator 后,
openshift
命名空间中的管道不会被删除。使用oc delete pipelines -n openshift --all
命令删除管道。 卸载 Red Hat OpenShift Pipelines Operator 不会删除事件监听程序。
作为临时解决方案,删除
EventListener
和Pod
CRD:使用
foregroundDeletion
终结器编辑EventListener
对象:$ oc patch el/<eventlistener_name> -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge
例如:
$ oc patch el/github-listener-interceptor -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge
删除
EventListener
CRD:$ oc patch crd/eventlisteners.triggers.tekton.dev -p '{"metadata":{"finalizers":[]}}' --type=merge
当您运行多架构容器镜像任务时,如果在 IBM Power Systems(ppc64le)或 IBM Z(s390x)集群上没有命令规格,则
TaskRun
资源会失败,并显示以下错误:Error executing command: fork/exec /bin/bash: exec format error
作为临时解决方案,使用特定架构的容器镜像或指定 sha256 摘要指向正确的架构。要获得 sha256 摘要,请输入:
$ skopeo inspect --raw <image_name>| jq '.manifests[] | select(.platform.architecture == "<architecture>") | .digest'
1.16.4. 修复的问题
- 现在,添加了一个简单的语法验证用于检查 CEL 过滤器、Webhook 验证器中的覆盖以及拦截器中的表达式。
- 触发器不再覆盖底层部署和服务对象上的注解。
-
在以前的版本中,事件监听器将停止接受事件。
EventListener
sink 增加了一个 120 秒的空闲超时来解决这个问题。 -
在以前的版本中,取消一个带有
Failed(Canceled)
状态的管道运行会给出一个成功信息。这个问题已被解决,现在在这种情况下会显示错误。 -
tkn eventlistener list
命令现在提供列出的事件监听器的状态,从而使您可以轻松地识别可用的事件。 -
现在,当没有安装触发器或没有找到资源时,
triggers list
和triggers describe
命令会显示一致的错误信息。 -
在以前的版本中,在云事件交付过程中会产生大量闲置连接。
DisableKeepAlives: true
参数添加到cloudeventclient
配置来修复这个问题。因此,会为每个云事件设置一个新的连接。 -
在以前的版本中,
creds-init
代码也会向磁盘写入空文件,即使未提供给定类型的凭证。在这个版本中,creds-init
代码只为从正确注解的 secret 中挂载的凭证写入文件。