1.15. Red Hat OpenShift Pipelines 技术预览 1.3 发行注记
1.15.1. 新功能
Red Hat OpenShift Pipelines 技术预览(TP)1.3 现在包括在 OpenShift Container Platform 4.7 中。Red Hat OpenShift Pipelines TP 1.3 更新为支持:
- Tekton Pipelines 0.19.0
-
Tekton
tkn
CLI 0.15.0 - Tekton Triggers 0.10.2
- 基于 Tekton Catalog 0.19.0 的集群任务
- OpenShift Container Platform 4.7 中的 IBM Power Systems
- OpenShift Container Platform 4.7 上的 IBM Z 和 LinuxONE
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.3 中的新内容。
1.15.1.1. Pipelines
- 构建镜像的任务,如 S2I 和 Buildah 任务,现在发出构建的镜像 URL,其中包含镜像 SHA。
-
由于
Conditions
自定义资源定义(CRD)已弃用,管道任务中引用自定义资源的条件会被禁止。 -
现在,在
Task
CRD 中为以下字段添加了变量扩展:spec.steps[].imagePullPolicy
和spec.sidecar[].imagePullPolicy
。 -
您可以通过将
disable-creds-init
feature-flag 设置为true
来禁用 Tekton 中的内置凭证机制。 -
现在,当在
PipelineRun
配置的Status
字段中的Skipped Tasks
和Task Runs
部分中列出了表达式时,可以解析。 -
git init
命令现在可以克隆递归子模块。 -
现在,
Task
CR 的作者可以为Task
spec 的一个步骤指定超时。 -
现在,您可以将入口点镜像基于
distroless/static:nonroot
镜像,赋予将其复制到目的地的模式,而无需依赖基础镜像中存在的cp
命令。 -
现在,您可以使用配置标记
require-git-ssh-secret-known-hosts
来禁止在 Git SSH secret 中省略已知主机。当标志值设为true
时,必须在 Git SSH secret 中包含known_host
字段。标志的默认值为false
。 - 现在引进了可选工作区的概念。任务或管道可能会声明一个工作区(workspace),并有条件地更改其行为。任务运行或管道运行可能省略了工作区,因此修改任务或管道行为。默认任务运行工作区不会添加到忽略的可选工作区。
- 现在,在 Tekton 中进行凭证初始化会检测一个与非 SSH URL 搭配使用的 SSH 凭证,而 Git pipeline 资源与 Git pipeline 资源相同,并在步骤容器中记录警告。
- 如果 pod 模板指定的关联性被关联性代理覆盖,则任务运行控制器会发出警告事件。
- 任务运行协调程序现在记录了在任务运行完成后发送的云事件的指标。这包括重试。
1.15.1.2. Pipelines CLI
-
现在,在以下命令中添加了对
--no-headers flag
的支持:tkn condition list
、tkn triggerbinding list
、tkn eventlistener list
、tkn clustertask list
、tkn clustertriggerbinding list
。 -
当一起使用时,
--last
或--use
选项会覆盖--prefix-name
和--timeout
选项。 -
现在,添加了
tkn eventlistener logs
命令来查看EventListener
日志。 -
tekton hub
命令现在被集成到tkn
CLI。 -
--nocolour
选项现在改为--no-color
。 -
--all-namespaces
标志添加到以下命令中:tkn triggertemplate list
、tkn condition list
、tkn triggerbinding list
、tkn eventlistener list
。
1.15.1.3. 触发器
-
现在,您可以在
EventListener
模板中指定资源信息。 -
现在,
EventListener
服务帐户除具有所有触发器资源的get
verb 外,还具有list
和watch
verb。这可让您使用Listers
从EventListener
、Trigger
、TriggerBinding
、TriggerTemplate
和ClusterTriggerBinding
资源中获取数据。您可以使用此功能创建Sink
对象,而不是指定多个通知器,直接向 API 服务器发出调用。 -
添加了一个新的
Interceptor
接口,以支持不可变的输入事件正文。拦截器现在可以在一个新的extensions
字段中添加数据或字段,且无法修改输入正文使其不可变。CEL 拦截器使用这个新的Interceptor
接口。 -
在
EventListener
资源中添加了一个namespaceSelector
字段。使用它来指定EventListener
资源可以从中获取用于处理事件的Trigger
对象的命名空间。要使用namespaceSelector
字段,EventListener
资源的服务帐户必须具有集群角色。 -
触发器
EventListener
资源现在支持到eventlistener
pod 的端到端安全连接。 -
在
TriggerTemplates
资源中把"
替换为\"
的转义行为现在已被删除。 -
一个支持 Kubernetes 资源的、新的
resources
项已作为EventListener
spec 的一部分被添加。 - 添加了对 CEL 拦截器的新功能,它支持 ASCII 字符串的大写和小写。
-
您可以使用触发器中的
name
和value
字段,或事件监听程序来嵌入TriggerBinding
资源。 -
PodSecurityPolicy
配置已更新,可在受限环境中运行。它确保容器必须以非 root 运行。另外,使用 Pod 安全策略的基于角色的访问控制也从集群范围移到命名空间范围。这样可确保触发器无法使用与命名空间不相关的其他 Pod 安全策略。 -
现在,添加了对内嵌触发器模板的支持。您可以使用
name
字段来指代嵌入的模板,或者在spec
字段中嵌入模板。
1.15.2. 已弃用的功能
-
使用
PipelineResources
CRD 的管道模板现已弃用,并将在以后的发行版本中删除。 -
template.name
字段已弃用,被template.ref
字段替代,并将在以后的发行版本中删除。 -
使用
-c
作为--check
命令的缩写已被删除。另外,全局tkn
标志被添加到version
命令中。
1.15.3. 已知问题
-
CEL 覆盖在新的顶层
extensions
功能中添加字段,而不是修改传入的事件正文。TriggerBinding
资源可以使用$(extensions.<key>)
语法访问这个新extensions
功能中的值。更新您的绑定,使用$(extensions.<key>)
语法而不是$(body.<overlay-key>)
语法。 -
把
"
替换为\"
的参数转义行为现在已被删除。如果您需要保留旧的转义参数行为,请在TriggerTemplate
规格中添加tekton.dev/old-escape-quotes: true"
注解。 -
您可以使用触发器中的
name
和value
字段,或事件监听程序来嵌入TriggerBinding
资源。但是,您无法为单个绑定指定name
和ref
字段。使用ref
字段引用TriggerBinding
资源以及内嵌绑定的name
字段。 -
拦截器无法试图引用
EventListener
资源命名空间以外的secret
。您必须在 'EventListener' 资源的命名空间中包含 secret。 -
在 Triggers 0.9.0 及之后的版本中,如果基于正文或标头的
TriggerBinding
参数在事件有效负载中缺失或格式不正确,则使用默认值而不是显示错误。 -
通过使用 Tekton Pipelines 0.16.x 的
WhenExpression
对象创建的任务和管道必须重新应用来修复它们的 JSON 注解。 - 当管道接受一个可选的工作区,并将其提供给某个任务时,如果未提供工作区,管道会运行停止。
- 要在断开连接的环境中使用 Buildah 集群任务,请确保 Dockerfile 使用作为基础镜像的内部镜像流,然后使用与任何 S2I 集群任务相同的方法。
1.15.4. 修复的问题
-
CEL 拦截器添加的扩展通过在事件正文中添加
Extensions
字段传递给 Webhook 拦截器。 -
现在,日志读取器的活动超时可以使用
LogOptions
字段进行配置。但是,10 秒的默认超时行为会被保留。 -
当一个任务运行或管道运行完成后,
log
命令会忽略--follow
标记,它会读取可用的日志而不是实时的日志。 -
对以下 Tekton 资源的引用现在标准化,并在
tkn
命令中的所有面向用户的信息中保持一致:EventListener
、TriggerBinding
、ClusterTriggerBinding
、Condition
和TriggerTemplate
。 -
在以前的版本中,如果您启动了使用
--use-taskrun <canceled-task-run-name>
、--use-pipelinerun <canceled-pipeline-run-name>
或--last
标记的、已被取消的任务运行或管道运行,新的运行将会被取消。这个程序漏洞现已解决。 -
现在,
tkn pr desc
命令已被改进,以便在管道有条件运行时不会失败。 -
当使用
--task
选项删除使用tkn tr delete
运行的任务时,且集群任务具有相同名称的集群任务存在时,集群任务运行的任务也会被删除。作为临时解决方案,使用TaskRefKind
字段过滤运行的任务。 -
tkn triggertemplate describe
命令在输出中只会显示apiVersion
值的一部分。例如,只显示triggers.tekton.dev
,而不是triggers.tekton.dev/v1alpha1
。这个程序漏洞现已解决。 - 在某些情况下,webhook 无法获取租期且无法正常工作。这个程序漏洞现已解决。
- 在 v0.16.3 中创建的带有 when 表达式的管道现在可以在 v0.17.1 及之后的版本中运行。升级后,您不需要重新应用之前版本中创建的管道定义,因为现在支持注解中第一个字母的大写和小写。
-
默认情况下,
leader-election-ha
字段为高可用性启用。当disable-ha
控制器标记设置为true
时,它会禁用高可用性支持。 - 现在,解决了重复云事件的问题。现在,只有在条件改变状态、原因或消息时才发送云事件。
-
当
PipelineRun
或TaskRun
spec 中没有服务帐户名称时,控制器会使用config-defaults
配置映射中的服务帐户名称。如果在config-defaults
配置映射中也缺少服务帐户名称,控制器现在会在 spec 中将其设置为default
。 - 现在,当同一个持久性卷声明用于多个工作区,但具有不同子路径时,支持验证是否与关联性偏好兼容。