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>
是yaml
或json
)来返回 YAML 或 JSON 格式的字符串。如果没有使用--output
选项,start
命令会返回人类友好的消息,而其他程序很难解析该消息。返回 YAML 或 JSON 格式的字符串对于持续集成(CI)环境非常有用。例如,在创建了资源后,您可以使用yq
或jq
解析有关资源的 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 5
和tkn tr delete --clustertask <taskname> --keep-since 5
有类似效果。 -
在这个版本中,增加了对用于
v1beta1
资源的触发器资源的支持。
-
在这个版本中,在
tkn pipelinerun delete
和tkn taskrun delete
命令中添加了一个ignore-running
选项。 -
在这个版本中,为
tkn task
和tkn clustertask
命令添加一个create
子命令。 -
在这个版本中,当使用
tkn pipelinerun delete --all
命令时,您可以使用新的--label <string>
选项来根据标签过滤管道运行。另外,您还可以在--label
选项中使用=
和==
作为相等运算符,或者!=
作为不相等运算符。例如,tkn pipelinerun delete --all --label asdf
和tkn pipelinerun delete --all --label==asdf
命令都会删除带有asdf
标签的所有管道运行。 - 在这个版本中,您可以从配置映射获取已安装的 Tekton 组件版本,或者从部署控制器获取配置映射的版本。
-
在这个版本中,触发器支持使用
feature-flags
和config-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
。注意keep
和keep-since
注释是互斥的。对于任何资源,您只能配置其中一个。-
operator.tekton.dev/prune.strategy
:将此注解的值设置为keep
或keep-since
。
-
-
管理员可以禁用在整个集群中创建
pipeline
服务帐户创建,从而防止因为错误地使用关联的 SCC(这与anyuid
非常相似)造成权限升级的问题。 -
现在,您可以使用
TektonConfig
自定义资源(CR)和单个组件的 CR 配置功能标记和组件,如TektonPipeline
和TektonTriggers
。此级别的颗粒度有助于为各个组件的 Tekton OCI 捆绑包自定义和测试 alpha 功能。 -
现在,您可以为
PipelineRun
资源配置可选的Timeouts
字段。例如,您可以单独为管道运行、每个任务运行以及finally
任务配置超时。 -
TaskRun
资源生成的 Pod 现在会设置 pod 的activeDeadlineSeconds
字段。这可让 OpenShift 将它们视为终止,并允许您将具有特定作用域的ResourceQuota
对象用于容器集。 - 您可以使用 configmaps 在任务运行、管道运行、任务和管道上消除指标标签或标签类型。另外,您可以为测量持续时间配置不同类型的指标,如直方图、量表或最后一个值。
-
您可以统一定义 pod 的请求和限值,因为 Tekton 现在通过考虑
Min
、Max
、Default
和DefaultRequest
字段来全面支持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)中指定nodeSelector
和tolerations
值来配置节点选择。Operator 将这些值添加到它创建的所有部署中。-
要为 Operator 的控制器和 webhook 部署配置节点选择,请在安装 Operator 后编辑
Subscription
CR 规格中的config.nodeSelector
和config.tolerations
字段。 -
要在基础架构节点上部署 OpenShift Pipelines 的其余 control plane pod,请使用
nodeSelector
和tolerations
字段更新TektonConfig
CR。然后,修改会应用到 Operator 创建的所有 pod。
-
要为 Operator 的控制器和 webhook 部署配置节点选择,请在安装 Operator 后编辑
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 将
HOME
和workingDir
设置为运行Step
对象的容器定义的值。您可以在Step
对象的规格中覆盖这些值。要使用旧的行为,您可以将
TektonConfig
CR 中的disable-working-directory-overwrite
和disable-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-overwrite
和disable-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 安装任务前,请验证是否可以在这些平台上执行任务。要检查ppc64le
和s390x
是否列在任务信息的"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
执行顺序中列出。
-
在这个版本中,编辑正在运行的管道规格可能会阻止管道运行在完成后停止。在这个版本中,只获取定义一次,然后使用存储在状态中的规格进行验证,从而解决了这个问题。当
PipelineRun
或TaskRun
指代的Pipeline
或Task
在运行时会发生变化,这个变化减少了出现竞争条件的可能性。 -
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
,它包括以下修复:-
修复
PipelineRun
或TaskRun
对象,以允许进行标签或注解。 对于隐式参数:
-
不要将
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 中将clusterTasks
和pipelineTemplates
字段设置为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 文件中的目标端口。
为相关命名空间提取路由名称。
$ oc get route -n <namespace>
编辑路由以修改
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 控制器发行版本而运行失败或重启。在这个版本中,包含适当的注解会被自动运行,没有失败或重启的任务。