1.2. Red Hat OpenShift Pipelines 1.16 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.16 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.1. 新功能 复制链接链接已复制到粘贴板!
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.16 中的新内容:
1.2.1.1. Pipelines 复制链接链接已复制到粘贴板!
在这个版本中,您可以为管道控制器配置重新同步周期。对于每个重新同步周期,控制器会协调所有管道运行和任务运行,而不考虑事件。默认重新同步周期为 10 小时。如果您有大量管道运行和任务运行,每 10 小时进行完全协调可能会消耗太多资源。在这种情况下,您可以配置较长的重新同步周期。
配置重新同步周期为 24 小时的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,在定义管道时,您可以为任务设置
onError参数,以继续。如果您在执行管道时进行此设置,且任务失败,管道会记录错误并继续下一个任务。默认情况下,如果一个任务失败,管道会失败。设置
onError参数的示例。在task-that-fails任务失败后,下一个任务执行Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在这个版本中,如果任务失败,则
finally任务除status参数外还可以访问reason参数,以区分是否允许失败。您可以通过$(tasks.参数。如果允许失败,<task_name>.reason)访问 reason原因被设置为FailureIgnored。如果不允许失败,原因被设置为Failed。此附加信息可以用来识别检查失败,但无法找到失败。 在这个版本中,通过 sidecar 日志支持较大的结果作为默认配置的替代选择,这会将结果限制为每个任务运行 4 KB 的大小,每个任务运行限制为 12 KB。要使用 sidecar 日志启用较大的结果,请在
TektonConfigCR 中将pipeline.options.configMaps.feature-flags.data.results-fromspec 设置为sidecar-logs。使用 sidecar 日志启用较大的结果的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在此次更新之前,
PipelineRun和TaskRun资源中允许参数传播,但不能在Pipeline资源中。在这个版本中,您可以将Pipeline资源中的params传播到内联管道任务及其内联步骤。每当引用PipelineTask或StepAction等资源的位置,您必须明确传递参数。在管道中使用
params的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,您可以使用任务运行或管道运行定义为任务中的步骤和 sidecar 配置计算资源。
配置资源的任务示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置资源的
TaskRun定义示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1.2. Operator 复制链接链接已复制到粘贴板!
在这个版本中,OpenShift Pipelines 包含克隆 Git 存储库的步骤
git-cloneStepAction定义。使用 HTTP 解析器引用此定义。定义的 URL 是https://raw.githubusercontent.com/openshift-pipelines/tektoncd-catalog/p/stepactions/stepaction-git-clone/0.4.1/stepaction-git-clone.yaml。StepAction定义也安装在openshift-pipelines命名空间中。但是,集群解析器不支持StepAction定义。在任务中使用
git-clone步骤操作的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在这个版本中,
openshift-pipelines命名空间包括版本化任务以及标准任务。例如,有一个buildah标准任务和buildah-1-16-0版本化任务。虽然标准任务可能会在后续版本中更新,但 versioned 任务与在指定版本中的相同,但更正错误除外。 在这个版本中,您可以使用
TektonConfigCR 为 OpenShift Pipelines 的几个组件配置FailurePolicy,TimeoutSeconds, 和SideEffects选项。以下示例显示了管道组件的配置。您可以在触发器、pipelinesAsCode和hub组件中为 Webhook 使用类似的配置。Pipeline组件的 Webhook 选项配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1.3. 触发器 复制链接链接已复制到粘贴板!
-
在这个版本中,触发器控制器、webhook、Core Interceptor 和事件监听器的
readOnlyRootFilesystem参数默认设置为true,以提高安全性并避免安全扫描程序标记。 在这个版本中,您可以将 OpenShift Pipelines 触发器配置为作为容器内的非 root 用户运行事件监听程序。要设置这个选项,请在
TektonConfigCR 中设置参数,如下例所示:将触发器事件监听程序配置为以非 root 身份运行的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以设置
default-run-as-user和default-run-as-group参数的值,以配置在容器中运行事件监听程序的数字用户 ID 和组 ID。OpenShift Pipelines 在 pod 安全上下文和事件监听器的容器安全上下文中设置这些值。如果您使用空值,则使用默认用户 ID 和组 ID65532。您还可以设置
default-fs-group参数,以定义 pod 安全上下文的fsGroup值,这是容器进程用于文件系统的组 ID。如果您使用空值,则使用默认组 ID65532。-
在这个版本中,在触发器中,
EventListenerpod 模板现在包含securityContext设置。在这些设置中,您可以在el-security-context标志设为true时配置seccompProfile、runAsUser、runAsGroup和fsGroup参数。
1.2.1.4. Web 控制台 复制链接链接已复制到粘贴板!
- 在此版本之前,在使用 Web 控制台时,您无法看到 OpenShift Pipelines 创建的日志的时间戳。在这个版本中,web 控制台包括所有 OpenShift Pipelines 日志的时间戳。
-
在这个版本中,Web 控制台中的管道运行和任务运行 列表页面 现在具有数据源的过滤器,如
k8s和TektonResults API。 - 在此次更新之前,当在 Developer 视角中使用 Web 控制台时,您无法为管道运行指定超时。在这个版本中,您可以在 web 控制台的 Developer 视角中启动管道运行时设置超时。
- 在此次更新之前,Overview 管道仪表板仅在启用 Tekton Results 时才会出现。所有统计数据仅来自 Results API。在这个版本中,无论是否启用 Tekton 结果,Overview 管道仪表板都可用。当禁用 Tekton Results 时,您可以使用仪表板查看集群中对象的统计信息。
-
在这个版本中,Web 控制台中显示的示例管道使用 OpenShift Pipelines API 的
v1版本。
1.2.1.5. CLI 复制链接链接已复制到粘贴板!
-
在这个版本中,您可以使用
tkn customrun delete <custom_run_names> 命令删除一个或多个自定义运行。 -
在这个版本中,当您使用
-oYAML 标记运行tkn <resource> list命令时,列出的资源现在用---分隔符分开,以增强输出的可读性。
1.2.1.6. Pipelines 作为代码(Pipelines as Code) 复制链接链接已复制到粘贴板!
-
在这个版本中,如果您创建名称相同的两个
PipelineRun定义,Pipelines as Code 会记录错误,且不会运行其中任何一个管道运行。 -
在这个版本中,Pipelines 作为代码
pipelines_as_code_pipelinerun_count指标允许根据存储库或命名空间过滤PipelineRun计数。 -
在这个版本中,Pipelines 作为代码控制器、webhook 和 watcher 的
readOnlyRootFilesystem安全上下文默认设置为true,以提高安全性并避免安全扫描程序标记。
1.2.1.7. Tekton Chains 复制链接链接已复制到粘贴板!
在这个版本中,当在 Tekton Chains 中使用
docdb存储时,您可以在TektonConfigCR 中直接配置MONGO_SERVER_URL值作为storage.docdb.mongo-server-url设置。或者,您可以使用 secret 提供这个值,并将storage.docdb.mongo-server-url-dir设置设置为MONGO_SERVER_URL文件所在的目录。使用
MONGO_SERVER_URL值创建 secret 的示例oc create secret generic mongo-url -n tekton-chains \ # --from-file=MONGO_SERVER_URL=/home/user/MONGO_SERVER_URL
$ oc create secret generic mongo-url -n tekton-chains \ # --from-file=MONGO_SERVER_URL=/home/user/MONGO_SERVER_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 secret 配置
MONGO_SERVER_URL值的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,当在 Tekton Chains 中使用 KMS 签名时,而不是直接在配置中提供 KMS 身份验证令牌值,您可以使用
signers.kms.auth.token-path设置将令牌值作为 secret 提供。运行以下命令来创建 KMS 令牌 secret:
oc create secret generic <secret_name> -n tekton-chains \ --from-file=KMS_AUTH_TOKEN=/home/user/KMS_AUTH_TOKEN
$ oc create secret generic <secret_name> -n tekton-chains \ --from-file=KMS_AUTH_TOKEN=/home/user/KMS_AUTH_TOKEN1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<secret_name> 替换为任何名称。以下示例使用名为kms-secrets的 KMS secret。
使用名为
kms-secrets的 secret 配置 KMS 令牌值示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,您可以将命名空间列表配置为 Tekton Chains 控制器的参数。如果您提供此列表,Tekton Chains 会监视管道运行和任务仅在指定的命名空间中运行。如果没有提供此列表,Tekton Chains 会监视管道运行和任务在所有命名空间中运行。
仅监视
dev和test命名空间的示例配置Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1.8. Tekton Results 复制链接链接已复制到粘贴板!
-
在此次更新之前,Tekton Results 使用
v1beta1API 格式来存储TaskRun和PipelineRun对象记录。在这个版本中,Tekton Results 使用v1API 格式来存储TaskRun和PipelineRun对象记录。 在这个版本中,Tekton Results 可以自动将现有记录转换为
v1API 格式。要启用这样的转换,请在TektonResultCR 中设置参数,如下例所示:配置 Tekton Results 将现有记录转换为
v1API 格式的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在
CONVERTER_DB_LIMIT变量中,设置单个事务中同时转换的记录数。
-
在这个版本中,Tekton Results 现在支持从第三方日志记录 API 获取转发日志。您可以通过将
logs_api设置为true,并将logs_type设置为Loki来启用日志 API。 在这个版本中,您可以配置 Tekton Results 数据库的自动修剪。您可以指定必须存储记录的天数。您还可以指定运行删除旧记录的修剪器作业的调度。要设置这些参数,请编辑
TektonResultCR,如下例所示:配置 Tekton Results 数据库的自动修剪示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,您可以配置 Tekton Results 来为管道和任务存储事件日志。要启用事件日志的存储,请编辑
TektonResultCR,如下例所示:配置 Tekton Results 数据库的自动修剪示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,您可以将 Tekton Results 配置为使用 OpenShift Container Platform Cluster Log Forwarder 将所有日志数据存储在 LokiStack 实例中,而不是直接将其放在存储卷中。这个选项支持扩展到管道运行和任务运行的更高的速率。
要将 Tekton Results 配置为使用 OpenShift Container Platform Cluster Log Forwarder 将所有日志数据存储在 LokiStack 实例中,您必须使用 Loki Operator 在集群中部署 LokiStack,同时安装 OpenShift Logging Operator。然后,您必须使用以下 YAML 清单之一在
openshift-logging命名空间中创建ClusterLogForwarderCR:如果安装了 OpenShift Logging 版本 6,
ClusterLogForwarderCR 的 YAML 清单Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果安装了 OpenShift Logging 版本 5,
ClusterLogForwarderCR 的 YAML 清单Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,在
openshift-pipelines命名空间中的TektonResultCR 中,设置以下附加参数:-
loki_stack_name:LokiStackCR 的名称,通常为logging-loki。 -
loki_stack_namespace:部署 LokiStack 的命名空间的名称,通常为openshift-logging。
在
TektonResultCR 中配置 LokiStack 日志转发示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
1.2.2. 可能会造成问题的更改 复制链接链接已复制到粘贴板!
-
在这个版本中,
EventListener对象的指标名称用于管道触发器,统计收到的事件从eventlistener_event_received_count改为eventlistener_event_received_count。 在此次更新之前,当使用 Pipelines as Code 时,如果为管道运行指定了
podTemplate参数,则管道运行会正确执行。-
对于
v1beta1API,在taskRunTemplate.podTemplatespec 中 对于
v1API,在podTemplatespec 中在这个版本中,当管道运行包含其中一个不正确的规格时,pod
Template参数会被忽略。要避免这个问题,请针对您使用的 API 版本正确定义 pod 模板,如下例所示:
在
v1API 中指定 pod 模板示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
v1beta1API 中指定 pod 模板示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
对于
1.2.3. 已知问题 复制链接链接已复制到粘贴板!
-
如果您使用 OpenShift Container Platform 版本 4.16 及更新的版本,
jib-mavenClusterTask无法正常工作。
1.2.4. 修复的问题 复制链接链接已复制到粘贴板!
-
在此次更新之前,当您通过删除 TektonHub CR 卸载
Tekton Hub时,hub-db-migration作业的 pod 不会被删除。在这个版本中,卸载 Tekton Hub 会删除 pod。 -
在此次更新之前,当您使用 Tekton Results 从管道和任务存储 pod 日志时,存储日志的操作有时会失败。日志会包括
UpdateLog操作失败,并显示取消的上下文错误。在这个版本中,操作可以正确完成。 -
在此次更新之前,当您将参数值传递给管道或任务,并且值包含完整和简短参考格式的多个变量时,例如
$(tasks.task-name.results.variable1)+ $(variable2),OpenShift Pipelines 没有正确解释值。管道运行或任务运行可能会停止执行,Pipelines 控制器可能会崩溃。在这个版本中,OpenShift Pipelines 会正确解释值,管道运行或任务运行完成。 - 在此次更新之前,当任务运行包含相同名称的多个任务时,Tekton Chains 无法生成正确的 attestations。例如,在使用一组任务时,为第一个镜像生成了 attestation。在这个版本中,Tekton Chains 为任务运行中的所有任务生成 attestations,确保完成覆盖。
-
在此次更新之前,当您使用 OpenShift Pipelines 安装命名空间中定义的
skopeo-copy任务并将其VERBOSE参数设置为false时,任务会失败。在这个版本中,该任务会正常完成。 -
在此次更新之前,当使用 Pipelines as Code 时,如果您在
openshift-pipelines或pipelines-as-code命名空间中名为pipelines-as-code的全局RepositoryCR 中设置concurrency_limitspec,它会为所有RepositoryCR 提供默认设置,Pipelines as Code watcher 会崩溃。在这个版本中,Pipelines as Code watcher 使用这个设置可以正常工作。 - 在此次更新之前,与 OpenShift Pipelines 版本中的相同名称的集群任务相比,OpenShift Pipelines 中的所有任务都包含一个额外的步骤。此额外步骤会增加集群的负载。在这个版本中,任务不再包含额外的步骤,因为它集成到第一步中。
-
在此次更新之前,当您使用 OpenShift Pipelines 安装命名空间中定义的
s2inetobserv 任务并设置其CONTEXT参数时,任务无法正确解释该参数,任务会失败。在这个版本中,任务会正确解释CONTEXT参数,并成功完成。 -
在此次更新之前,在 Tekton 中,在 Tekton Chains the in-toto provenance metadata,
URI和Digest值不完整。这些值仅包含远程Pipeline和Task资源的信息,但缺少了远程StepAction资源的信息。在这个版本中,远程StepAction资源被记录在任务运行状态中,并插入到验证的验证中,这会导致完全被验证的元数据。 -
在此次更新之前,您可以修改
PipelineRun和TaskRun资源的spec字段中的一些参数,在资源被创建后不应该修改。在这个版本中,您只能在创建管道运行和任务运行后修改允许的字段,如status和statusMessage字段。 -
在此次更新之前,如果 step action 参数是
数组类型,但任务中传递了字符串值,则不会显示不一致的参数类型和使用默认值。在这个版本中,添加了一个错误来指示不一致的值:invalid parameter replacement: %s。请检查默认值的类型以及传递的值。 -
在此次更新之前,当日志通过 watcher 流时,外部修剪器会删除任务运行和管道运行。在这个版本中,finalizer 会添加到
TaskRun和PipelineRun对象的 Tekton Results 中,以确保存储并运行不会被删除。运行可以存储为记录,或是截止时间已通过,该截止时间计算为完成时间加上store_deadline时间。如果启用了来自 watcher 或 pruner 的传统日志流,则终结器不会阻止删除。 -
在此次更新之前,web 控制台支持
v1beta1API 格式来显示存储在 Tekton Results 中的TaskRun和PipelineRun对象记录。在这个版本中,控制台支持v1API 格式来显示 Tekton Results 中存储的TaskRun和PipelineRun对象记录。 -
在此次更新之前,当使用 Pipelines as Code 时,如果不同的
PipelineRun定义使用相同的任务名称,但不同版本不同,例如从 Tekton Hub 获取任务时,有时会触发错误版本,因为 Pipelines as Code 为所有管道运行使用相同的任务版本。在这个版本中,Pipelines as Code 会触发引用任务的正确版本。 - 在此次更新之前,当您使用解析器引用远程管道或任务时,临时通信错误会导致立即获取这些远程引用失败。在这个版本中,解析器会重新排队检索,并最终重试检索。
- 在此次更新之前,Tekton Results 在存储管道运行和任务运行的日志信息时,可以使用增加的内存量。在这个版本中,内存泄漏,Tekton Results 使用正常内存量。
-
在此次更新之前,当使用 Pipelines as Code 时,如果您的
.tekton目录包含未被事件触发的PipelineRun定义引用的管道,Pipelines as Code 会尝试获取该管道的所有任务,即使它没有运行。在这个版本中,Pipelines as Code 不会尝试解析当前事件触发的任何管道运行中没有引用的管道。
1.2.5. Red Hat OpenShift Pipelines 正式发布 1.16.1 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.16.1 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.5.1. 修复的问题 复制链接链接已复制到粘贴板!
- 在此次更新之前,在 web 控制台的 Pipelines 概述 页面中,无法访问所有命名空间的用户可以在 Projects 列表中选择 All。控制台显示该选择的错误信息,因为一些命名空间的统计信息对用户不可用。在这个版本中,无法访问所有命名空间的用户无法在 Projects 列表中选择 All。
-
在此次更新之前,当尝试使用 web 控制台启动定义 type
数组参数的管道或任务时,为此参数输入一个值会导致错误,您无法启动管道或任务。在这个版本中,您可以使用 Web 控制台启动管道或任务来定义 type数组的参数,并为此参数输入一个值可以正常工作。 -
在此次更新之前,当使用带有 Bitbucket Git 存储库的 Pipelines as Code 时,Pipelines as Code 控制器有时会崩溃并出现
panic: runtime 错误: invalid memory address 或 nil pointer dereference信息。在这个版本中,Pipelines as Code 控制器不会崩溃。 -
在此次更新之前,在使用 Tekton Results 时,
tekton-results-watcherpod 有时会崩溃,并会记录panic: runtime error: invalid memory address 或 nil pointer dereference信息。在这个版本中,tekton-results-watcherpod 不会崩溃。 - 在此次更新之前,当使用 Tekton Results 时,如果您在 Tekton Results 中启用了身份验证,则无法在 web 控制台中查看 Tekton Results 的信息,因为 web 控制台无法将身份验证令牌传递给 Tekton Results API。在这个版本中,您可以在启用身份验证时查看 web 控制台中的 Tekton Results 的信息。
- 在此次更新之前,当在 web 控制台中查看 Tekton Results 的信息时,如果您向下滚动到页面的末尾,控制台无法获取下一个记录集合,且没有显示一些信息。在这个版本中,如果您滚动到页面的末尾,来自 Tekton Results 负载的记录会被正确显示,所有信息都会在 web 控制台中正确显示。
1.2.6. Red Hat OpenShift Pipelines 正式发布 1.16.2 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.16.2 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.6.1. 修复的问题 复制链接链接已复制到粘贴板!
-
在此次更新之前,在 OpenShift Pipelines 1.16 中,您无法通过修补
PipelineRun对象来取消管道运行,并将spec.status参数设置为Cancelled(如果管道运行中运行的第一个任务完成)。相反,会记录错误消息:PipelineRun was canceled,但会尝试取消 TaskRuns 和/或 Runs 的错误。在这个版本中,管道运行被成功取消。
1.2.7. Red Hat OpenShift Pipelines 正式发布 1.16.3 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.16.3 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.7.1. 修复的问题 复制链接链接已复制到粘贴板!
- 在此次更新之前,在某些情况下,Tekton Chains 控制器会重复崩溃,使 Tekton Chains 组件不可用。在这个版本中,控制器不再崩溃。
-
在此次更新之前,如果您定义了包含常规参数和列表参数的
matrix任务,tekton-pipelines-controller组件会崩溃并记录分段错误消息。如果没有删除该任务,则组件将继续崩溃,且不会运行任何管道。在这个版本中,控制器不会在这样的情形中崩溃。
1.2.8. Red Hat OpenShift Pipelines 正式发布 1.16.4 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.16.4 包括在 OpenShift Container Platform 4.12、4.14、4.15、4.16、4.17 和 4.18 版本中。
1.2.9. 已知问题 复制链接链接已复制到粘贴板!
-
Pipelines 控制器不再为 pod 添加
taskrun和pipelinerunUID 标签。因此,通过结果获取日志会失败。另外,任何依赖这些标签的任务或作业都可能会失败。
1.2.9.1. 修复的问题 复制链接链接已复制到粘贴板!
-
在此次更新之前,当使用
openshift-pipelines命名空间中提供的buildah任务并通过dockerconfig工作区提供凭证 secret 时,任务会失败并显示permission denied错误。发生此失败的原因是,作为卷传递的目录被分配为默认的ReadWrite权限,而授权 secret 则挂载为只读。此不匹配会导致任务失败。在这个版本中,buildah任务支持权利用例,而不会遇到权限问题。 -
在此次更新之前,
openshift-pipelines命名空间中提供的git-clone任务使用了一个在断开连接的集群中失败的过时的镜像。在这个版本中,git-clone任务的较新镜像支持在断开连接的环境中操作。