1.11. Red Hat OpenShift Pipelines 正式发行 1.7 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.7 包括在 OpenShift Container Platform 4.9, 4.10, 和 4.11 中。
1.11.1. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.7 中的新内容。
1.11.1.1. Pipelines
在这个版本中,
pipelines-<version>
是安装 Red Hat OpenShift Pipelines Operator 的默认频道。例如,安装 OpenShift Pipelines Operator 版本1.7
的默认频道是pipelines-1.7
。集群管理员还可使用latest
频道来安装 Operator 的最新稳定版本。注意preview
和stable
频道将在以后的版本中被弃用并删除。当您在用户命名空间中运行命令时,您的容器以
root
身份运行(用户 ID0
),但对主机具有用户特权。在这个版本中,要在用户命名空间中运行 pod,您必须传递 CRI-O 期望的注解。-
要为所有用户添加这些注解,请运行
oc edit clustertask buildah
命令并编辑buildah
集群任务。 - 要将注解添加到特定命名空间,请将集群任务导出为该命名空间的任务。
-
要为所有用户添加这些注解,请运行
在此次更新之前,如果没有满足某些条件,则
when
表达式会跳过一个Task
对象及其依赖的任务。在这个版本中,您可以限制when
表达式只保护Task
对象,而不是它的依赖项任务。要启用此更新,请在TektonConfig
CRD 中将scope-when-expressions-to-task
标志设置为true
。注意scope-when-expressions-to-task
标记已弃用,并将在以后的发行版本中删除。作为 OpenShift Pipelines 的最佳实践,使用when
表达式会被限制为只保护任务
-
在这个版本中,您可以在任务中的工作区的
subPath
字段中使用变量替换。 在这个版本中,您可以使用带单引号或双引号的 bracket 表示法引用参数和结果。在此次更新之前,只能使用点表示法。例如,现在以下内容等同于:
$(param.myparam)
,$(param['myparam'])
, and$(param["myparam"])
.您可以使用单引号或双引号括起包含有问题的字符的参数名称,如
"."
。例如,$(param['my.param'])
和$(param["my.param"])
。
-
在这个版本中,您可以在任务定义中包含步骤的
onError
参数,而无需启用enable-api-fields
标志。
1.11.1.2. 触发器
-
在这个版本中,
feature-flag-triggers
配置映射具有一个新的字段labels-exclusion-pattern
。您可以将此字段的值设置为正则表达式(regex)模式。控制器过滤出与事件监听器从事件监听器传播到为事件监听器创建的资源匹配的正则表达式模式的标签。 -
在这个版本中,
TriggerGroups
字段添加到EventListener
规格中。使用此字段,您可以在选择和运行一组触发器前指定要运行的拦截器。要启用此功能,在TektonConfig
自定义资源定义的pipeline
部分,您必须将enable-api-fields
字段设置为alpha
。 -
在这个版本中,
Trigger
资源支持TriggerTemplate
模板定义的自定义运行。 -
在这个版本中,Triggers 支持从
EventListener
pod 发送 Kubernetes 事件。 -
在这个版本中,以下对象提供了计数指标:
ClusterInteceptor
、EventListener
、TriggerTemplate
、ClusterTriggerBinding
和TriggerBinding
。 -
在这个版本中,
ServicePort
规格添加到 Kubernetes 资源。您可以使用此规格来修改公开事件监听器服务的端口。默认端口为8080
。 -
在这个版本中,您可以使用
EventListener
规格中的targetURI
字段在触发器处理过程中发送云事件。要启用此功能,在TektonConfig
自定义资源定义的pipeline
部分,您必须将enable-api-fields
字段设置为alpha
。 -
在这个版本中,
tekton-triggers-eventlistener-roles
对象除了已存在的create
动词外,现在还添加了一个patch
动词。 -
在这个版本中,
securityContext.runAsUser
参数会从事件监听器部署中删除。
1.11.1.3. CLI
在这个版本中,
tkn [pipeline | pipelinerun] export
命令会导出一个管道或管道作为 YAML 文件运行。例如:在
openshift-pipelines
命名空间中导出名为test_pipeline
的管道:$ tkn pipeline export test_pipeline -n openshift-pipelines
在
openshift-pipelines
命名空间中导出名为test_pipeline_run
的管道运行:$ tkn pipelinerun export test_pipeline_run -n openshift-pipelines
-
在这个版本中,
--grace
选项添加到tkn pipelinerun cancel
中。使用--grace
选项终止管道运行,而不是强制终止。要启用此功能,在TektonConfig
自定义资源定义的pipeline
部分,您必须将enable-api-fields
字段设置为alpha
。 在这个版本中,在
tkn version
命令的输出中添加了 Operator 和链版本。重要Tekton 链是技术预览功能。
-
在这个版本中,当取消管道运行时,
tkn pipelinerun describe
命令显示所有取消的任务运行。在此修复之前,仅显示一个任务运行。 -
在这个版本中,您可以在运行
tkn [t | p | p | ct] start
命令时跳过使用--skip-optional-workspace
标记时,为可选工作区提供请求规格。您也可以在以交互模式运行时跳过它。 在这个版本中,您可以使用
tkn chain
命令管理 Tekton 链。您还可以使用--chains-namespace
选项指定要安装 Tekton 链的命名空间。重要Tekton 链是技术预览功能。
1.11.1.4. Operator
在这个版本中,您可以使用 Red Hat OpenShift Pipelines Operator 来安装和部署 Tekton Hub 和 Tekton 链。
重要集群中的 Tekton Hub 链和部署是技术预览功能。
在这个版本中,您可以查找并使用 Pipelines 作为代码(PAC)作为附加选项。
重要作为代码,管道是技术预览功能。
在这个版本中,您可以通过将
communityClusterTasks
参数设置为false
来禁用社区集群任务的安装。例如:... spec: profile: all targetNamespace: openshift-pipelines addon: params: - name: clusterTasks value: "true" - name: pipelineTemplates value: "true" - name: communityClusterTasks value: "false" ...
在这个版本中,您可以通过 Developer 视角禁用 Tekton Hub 集成,方法是将
TektonConfig
自定义资源中的enable-devconsole-integration
标志设置为false
。例如:... hub: params: - name: enable-devconsole-integration value: "true" ...
-
在这个版本中,
operator-config.yaml
配置映射启用tkn version
命令的输出来显示 Operator 版本。 -
在这个版本中,
argocd-task-sync-and-wait
任务的版本被修改为v0.2
。 -
对于这个版本的
TektonConfig
CRD ,oc get tektonconfig
命令会显示 OPerator 版本。 - 在这个版本中,服务监控器添加到 Triggers 指标中。
1.11.1.5. Hub
在集群中部署 Tekton Hub 是一个技术预览功能。
Tekton Hub 可帮助您发现、搜索和共享 CI/CD 工作流可重复使用的任务和管道。Tekton Hub 的一个公共实例位于 hub.tekton.dev 中。
集群管理员可以使用 Red Hat OpenShift Pipelines 1.7 推出,集群管理员也可以在企业集群中安装并部署 Tekton Hub 的自定义实例。您可以使用特定于您的机构的可重复使用的任务和管道来策展目录。
1.11.1.6. 链
Tekton 链是技术预览功能。
Tekton Chains 是一个 Kubernetes 自定义资源定义(CRD)控制器。您可以使用它来管理使用 Red Hat OpenShift Pipelines 创建的任务和管道的供应链安全。
默认情况下,Tekton Chains 会监控 OpenShift Container Platform 集群中运行的任务。链会对完成的任务运行进行快照,将其转换为一个或多个标准有效负载格式,并签署并存储所有工件。
Tekton Chains 支持以下功能:
-
您可以使用加密密钥类型和服务(如
cosign
)为任务运行、任务运行结果和 OCI registry 镜像签名。 -
您可以使用"测试"格式,如
in-toto
。 - 您可以使用 OCI 存储库作为存储后端安全存储签名和签名工件。
1.11.1.7. 管道作为代码(PAC)
作为代码,管道是技术预览功能。
使用 Pipelines 作为 Code,具有所需权限的集群管理员和用户可以将管道模板定义为源代码 Git 存储库的一部分。当由源代码推送或配置的 Git 存储库的拉取请求触发时,该功能将运行管道和报告状态。
作为代码的管道支持以下功能:
- 拉取请求状态。在迭代拉取请求时,拉取请求的状态和控制会在托管 Git 存储库的平台上进行。
- GitHub 检查 API 来设置管道运行的状态,包括重新检查。
- GitHub 拉取请求和提交事件。
-
在注释中拉取请求操作,如
/retest
。 - Git 事件过滤,以及每个事件的独立管道。
- OpenShift Pipelines 中的自动任务解析用于本地任务、Tekton Hub 和远程 URL。
- 使用 GitHub blob 和对象 API 来检索配置。
-
通过 GitHub 机构或使用 Prow 风格的
OWNER
文件访问控制列表(ACL) -
tkn
CLI 工具的tkn pac
插件,您可以使用它们管理 Pipelines 作为代码软件仓库和 bootstrap。 - 支持 GitHub 应用程序、GitHub Webhook、Bitbucket 服务器和 Bitbucket 云。
1.11.2. 已弃用的功能
-
中断更改:此更新从
TektonConfig
自定义资源(CR)中删除disable-working-directory-overwrite
和disable-home-env-overwrite
字段。因此,TektonConfig
CR 不再自动设置$HOME
环境变量和workingDir
参数。您仍然可以使用Task
自定义资源定义(CRD)中的env
和workingDir
字段来设置$HOME
环境变量和workingDir
参数。
-
Conditions
自定义资源定义(CRD)类型已弃用,计划在以后的发行版本中删除。反之,使用推荐的when
表达式。
-
有问题的更改:
Triggers
资源验证模板,并在没有指定EventListener
和TriggerBinding
值时生成错误。
1.11.3. 已知问题
当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE (s390x) 集群上的任务将失败。作为临时解决方案,您可以通过将
MAVEN_IMAGE
参数值设置为maven:3.6.3-adoptopenjdk-11
来指定自定义镜像。提示在您使用
tkn hub
在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x) 上基于 Tekton Catalog 安装任务前,请验证是否可以在这些平台上执行任务。要检查ppc64le
和s390x
是否列在任务信息的"Platforms"部分,您可以运行以下命令:tkn hub info task <name>
-
在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持
s2i-dotnet
集群任务。 您无法使用
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"
-
隐式参数映射会错误地将参数从顶级
Pipeline
或PipelineRun
定义传递给taskRef
任务。映射应该只在顶层资源中使用任务进行,并带有非线taskSpec
规格。这个问题只通过将TektonConfig
自定义资源定义的pipeline
部分中的enable-api-fields
字段设置为alpha
来影响启用了这个功能的集群。
1.11.4. 修复的问题
-
在这个版本中,如果
Pipeline
和PipelineRun
对象定义中存在labels
和annotations
的元数据,PipelineRun
类型中的值会具有优先权。您可以观察Task
和TaskRun
对象的类似行为。 -
在这个版本中,如果
timeout.tasks
字段或timeout.finally
字段设置为0
,则timeout.pipeline
也被设置为0
。 -
在这个版本中,
-x
set 标记已从不使用 shebang 的脚本中删除。在这个版本中,减少了脚本执行的潜在数据泄漏。 -
在这个版本中,Git 凭证中的用户名中存在的任何反斜杠字符都会被转义,并带有
.gitconfig
文件中的额外反斜杠。
-
在这个版本中,
EventListener
对象的finalizer
属性不需要清理日志记录和配置映射。 - 在这个版本中,与事件监听器服务器关联的默认 HTTP 客户端会被删除,并添加自定义 HTTP 客户端。因此,超时有所改进。
- 在这个版本中,Triggers 集群角色现在可以处理所有者引用。
- 在这个版本中,当多个拦截器返回扩展时,事件监听器中的竞争条件不会发生。
-
在这个版本中,
tkn pr delete
命令不会删除使用ignore-running
标记运行的管道。
- 在这个版本中,当您修改任何附加组件参数时,Operator pod 不会继续重启。
-
在这个版本中,如果订阅和配置自定义资源中没有配置,
tkn serve
CLI pod 会被调度到 infra 节点上。 - 在这个版本中,在升级过程中不会删除指定版本的集群任务。
1.11.5. Red Hat OpenShift Pipelines 正式发行 1.7.1 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.7.1 包括在 OpenShift Container Platform 4.9, 4.10, 和 4.11 中。
1.11.5.1. 修复的问题
- 在此次更新之前,升级 Red Hat OpenShift Pipelines Operator 会删除与 Tekton Hub 关联的数据库中的数据并安装新的数据库。在这个版本中,Operator 升级会保留数据。
- 在此次更新之前,只有集群管理员才能访问 OpenShift Container Platform 控制台中的管道指标。在这个版本中,与其他集群角色的用户也可以访问管道指标。
-
在此次更新之前,管道对包含发出大型终止消息的任务的管道运行失败。管道运行失败,因为 pod 中所有容器的终止信息总数不能超过 12 KB。在这个版本中,使用同一镜像的
place-tools
和step-init
初始化容器会合并,以减少每个任务的 pod 中运行的容器数量。该解决方案可减少运行失败管道的几率,这可尽量减少在任务 pod 中运行的容器数量。但是,它不会删除终止消息的最大允许大小限制。 -
在此次更新之前,直接从 Tekton Hub web 控制台访问资源 URL 会导致 Nginx
404
错误。在这个版本中,Tekton Hub web 控制台镜像已被修复,以便直接从 Tekton Hub web 控制台访问资源 URL。 - 在此次更新之前,对于每个命名空间,资源修剪器作业都会创建一个单独的容器来修剪资源。在这个版本中,资源修剪器作业作为一个容器中的一个循环运行所有命名空间的命令。
1.11.6. Red Hat OpenShift Pipelines 正式发布 1.7.2 发行注记
在这个版本中,Red Hat OpenShift Pipelines General Availability (GA)1.7.2 包括在 OpenShift Container Platform 4.9、4.10 及以后的版本中。
1.11.6.1. 已知问题
-
在升级 Red Hat OpenShift Pipelines Operator 后,
openshift-pipelines
命名空间中的 Tekton Chains 的chains-config
配置映射会自动重置为默认。目前,这个问题还没有临时解决方案。
1.11.6.2. 修复的问题
-
在此次更新之前,当将
init
用作第一个参数并后跟两个或更多个参数时,OpenShift Pipelines 1.7.1 上的任务会失败。在这个版本中,这些标志会被正确解析,任务可以运行成功。 在此次更新之前,因为存在无效的角色绑定,在 OpenShift Container Platform 4.9 和 4.10 上安装 Red Hat OpenShift Pipelines Operator 会失败,并显示以下错误消息:
error updating rolebinding openshift-operators-prometheus-k8s-read-binding: RoleBinding.rbac.authorization.k8s.io "openshift-operators-prometheus-k8s-read-binding" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"Role", Name:"openshift-operator-read"}: cannot change roleRef
在这个版本中,Red Hat OpenShift Pipelines Operator 安装有不同的角色绑定命名空间,以避免与其他 Operator 安装冲突。
在此次更新之前,升级 Operator 会触发 Tekton Chains 的
signed-secrets
secret 键重置为默认值。在这个版本中,在升级 Operator 后自定义 secret 密钥会保留。注意升级到 Red Hat OpenShift Pipelines 1.7.2 会重置密钥。但是,当您升级到将来的版本时,会需要保留该密钥。
在此次更新之前,所有 S2I 构建任务都会失败,并显示类似以下消息的错误:
Error: error writing "0 0 4294967295\n" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted time="2022-03-04T09:47:57Z" level=error msg="error writing \"0 0 4294967295\\n\" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted" time="2022-03-04T09:47:57Z" level=error msg="(unable to determine exit status)"
在这个版本中,
pipeline-scc
安全性上下文约束 (SCC) 与Buildah
和S2I
集群任务所需的SETFCAP
功能兼容。因此,Buildah
和S2I
构建任务可以成功运行。要成功运行
Buildah
集群任务和S2I
构建任务,适用于使用各种语言和框架编写的应用程序,添加以下适当的steps
对象(如build
和push
)的代码片段。securityContext: capabilities: add: ["SETFCAP"]
1.11.7. Red Hat OpenShift Pipelines 正式发布 1.7.3 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.7.3 包括在 OpenShift Container Platform 4.9, 4.10, 和 4.11 中。
1.11.7.1. 修复的问题
-
在此次更新之前,如果任何命名空间处于
Terminating
状态,Operator 会在创建 RBAC 资源时失败。在这个版本中,Operator 忽略了命名空间处于Terminating
状态,并创建 RBAC 资源。 -
在以前的版本中,升级 Red Hat OpenShift Pipelines Operator 会导致重新创建
pipeline
服务帐户,这意味着链接到服务帐户的 secret 会丢失。在这个版本中解决了这个问题。在升级过程中,Operator 不再重新创建pipeline
服务帐户。因此,已附加到pipeline
服务帐户的 secret 在升级后会保留,资源(任务和管道)可以继续正常工作。