1.4. Red Hat OpenShift Pipelines 正式发布 1.14 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.14 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.1. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.14 中的新内容:
1.4.1.1. Pipelines
-
在这个版本中,您可以使用任务或管道的参数或上一个任务的结果来指定要绑定到工作区的资源名称,如
name: $(params.name)-configmap
。 -
在这个版本中,OpenShift Pipelines 支持在管道中构建进程中使用您现有 Red Hat Enterprise Linux 权利。内置的
buildah
集群任务现在可以使用这些权利。 -
在这个版本中,如果管道运行或任务运行使用
pipeline
服务帐户,您可以在管道或任务中使用 CSI 卷类型。 -
在这个版本中,您可以使用
StepAction
自定义资源(CR)定义一个可重复使用的脚本操作,您可以从任意数量的任务调用。要使用这个功能,您必须将TektonConfig
CR 中的pipeline.options.configMaps.feature-flags.data.enable-step-actions
spec 设置为true
。 - 在这个版本中,对象参数和数组结果会被默认启用。您不需要设置任何标记来使用它们。
在这个版本中,您可以使用 HTTP 解析器从 HTTP URL 获取管道或任务,如下例所示:
任务用法示例
apiVersion: tekton.dev/v1 kind: TaskRun metadata: name: remote-task-reference spec: taskRef: resolver: http params: - name: url value: https://raw.githubusercontent.com/tektoncd-catalog/git-clone/main/task/git-clone/git-clone.yaml
管道使用示例
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: http-demo spec: pipelineRef: resolver: http params: - name: url value: https://raw.githubusercontent.com/tektoncd/catalog/main/pipeline/build-push-gke-deploy/0.1/build-push-gke-deploy.yaml
在这个版本中,您可以使用 enum 声明来限制您可以为管道或任务提供参数的值,如下例所示。要使用这个功能,您必须将
TektonConfig
CR 中的pipeline.options.configMaps.feature-flags.data.enable-param-enum
spec 设置为true
。用法示例
apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: pipeline-param-enum spec: params: - name: message enum: ["v1", "v2"] default: "v1" # ...
在这个版本中,当将 Git 解析器与经过身份验证的源控制管理(SCM) API 搭配使用时,您可以覆盖您配置的默认令牌、SCM 类型和服务器 URL。请参见以下示例:
用法示例
apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: name: git-api-demo-tr spec: taskRef: resolver: git params: - name: org value: tektoncd - name: repo value: catalog - name: revision value: main - name: pathInRepo value: task/git-clone/0.6/git-clone.yaml # create the my-secret-token secret in the namespace where the # pipelinerun is created. The secret must contain a GitHub personal access # token in the token key of the secret. - name: token value: my-secret-token - name: tokenKey value: token - name: scmType value: github - name: serverURL value: https://ghe.mycompany.com
-
在这个版本中,您可以在 OpenShift Pipelines 在执行任务时创建的 pod 中定义容器和 init-containers 的默认资源要求。使用
TektonConfig
CR 中的pipeline.options.configMaps.config-defaults.default-container-resource-requirements
spec 来设置这些要求。您可以为所有容器设置默认值,按名称或前缀(如sidecar
fluentd )为特定容器设置默认值。
1.4.1.2. Operator
-
在这个版本中,OpenShift Pipelines 支持 Operator 代理 webhook 的 pod 横向自动扩展。如果运行 Operator 代理 webhook 的 pod 达到 85% CPU 使用率,则自动扩展会创建 pod 的另一个副本。如果要在启动时为 Operator 代理 Webhook 使用多个副本,您必须在
TektonConfig
CR 的options.horizontalPodAutoscalers
spec 中配置此数字。 - 在这个版本中,改进了 OpenShift Pipelines 的几个组件的内部领导选举机制。Operator 控制器、Operator Webhook、代理 Webhook、Pipelines as Code watcher、Pipelines as Code Webhook 和 Tekton Chains 控制器现在使用单独的领导选举 ConfigMap。领导选举机制会影响组件处理请求的副本。
- 在此次更新之前,当扩展 OpenShift Pipelines 控制器的副本数时,需要手动干预才能启用新副本的使用;即,您需要删除领导选举中的租期。在这个版本中,当您扩展 OpenShift Pipelines 控制器的副本数时,领导选举会自动包括新副本,因此新副本可以处理信息。
在这个版本中,您可以选择在
TektonConfig
CR 的spec.pipeline
spec 中设置以下标记:-
coschedule
-
enable-cel-in-whenexpression
-
enable-param-enum
-
enable-step-actions
-
enforce-nonfalsifiability
-
keep-pod-on-cancel
-
max-result-size
-
metrics.count.enable-reason
-
results-from
-
set-security-context
-
default-resolver-type
-
1.4.1.3. 触发器
-
在这个版本中,当为 Triggers 拦截器指定 CEL 表达式时,您可以使用
第一个和最后一个
在这个版本中,当为 Triggers 拦截器指定 CEL 表达式时,您可以使用
translate
功能来促进正则表达式的使用,将字符替换为指定的字符串,如下例所示:translate
功能使用示例".translate("[^a-z0-9]+", "ABC")
输入字符串示例
This is $an Invalid5String
结果字符串示例
ABChisABCisABCanABCnvalid5ABCtring
1.4.1.4. Web 控制台
在这个版本中,您可以为 OpenShift Pipelines 启用 Web 控制台插件。如果启用插件,您可以在 Pipelines 概述 页面中和管道的页面中查看管道和任务执行统计。您必须安装 Tekton Results 以查看此信息。
注意要将 Web 控制台插件用于 OpenShift Pipelines,必须至少使用以下 OpenShift Container Platform 版本:
- 对于 OpenShift Container Platform 版本 4.12: 4.12.51
- 对于 OpenShift Container Platform 版本 4.13: 4.13.34
- 对于 OpenShift Container Platform 版本 4.14: 4.14.13
- 对于 OpenShift Container Platform 版本 4.15:任何发行版本
- 在这个版本中,如果您使用 OpenShift Container Platform 4.15 并启用了控制台插件,您可以查看过去管道运行和任务运行的归档信息。Tekton Results 提供此信息。
-
在这个版本中,
PipelineRun
详情页面从 web 控制台的 Developer 或 Administrator 视角访问,引入了一个 Vulnerabilities 行。这个新行提供标识的漏洞的可视化表示,按严重性(关键、高、中和低)进行分类。要启用此功能,请将您的任务和关联的管道更新为指定的格式。另外,启用后,您还可以通过管道运行列表视图页面中的 Vulnerabilities 列来访问识别的漏洞的信息。 -
在这个版本中,
PipelineRun
详情页面都会从 web 控制台的 Developer 或 Administrator 视角访问,提供了一个下载或查看 Software Bill of Materials (SBOMs)的选项,以增强透明度和控制。要启用此功能,请将您的任务和关联的管道更新为指定的格式。
1.4.1.5. CLI
-
在这个版本中,如果安装了此组件,
tkn version
命令显示 Tekton Hub 组件的版本。 -
在这个版本中,您可以使用
tkn customrun list
命令列出自定义运行。 -
在这个版本中,当使用
tkn task start
命令时,您可以在-i
or--image 参数中指定 OCI 镜像的 URL。命令从此镜像拉取镜像并运行指定的任务。
-
在这个版本中,op
c version
命令显示 Tekton Results CLI 组件的版本,这是opc
工具的一部分。
1.4.1.6. Pipelines 作为代码(Pipelines as Code)
-
在这个版本中,当使用 Pipelines as Code 时,您可以在管道运行上指定
pipelinesascode.tekton.dev/pipeline
注解,以从 Tekton Hub 实例获取管道。此注解的值必须引用 Tekton Hub 上的单个管道。 - 在这个版本中,您可以使用不同的配置设置和不同的 secret 部署额外的 Pipelines as Code 控制器。您可以使用多个 Pipelines as Code 控制器与多个 GitHub 实例交互。
-
在这个版本中,Pipelines as Code 包含 GitLab 和 BitBucket 供应商的指标发布。您可以使用 Pipelines as Code 控制器和 watcher 服务上的端口 9090 访问
指标
。 在这个版本中,当指定使用带有
pipelinesascode.tekton.dev/on-cel-expression
的 CEL 表达式执行管道运行的条件时,您可以检查 Git 仓库中是否存在文件:-
files.all.exists (x, x.matches ('<path_or_regular_expression>'))
用于所有文件 -
files.added.exists (x, x.matches ('<path_or_regular_expression
>'),用于此管道最后一次运行后添加的文件 -
files.modified.exists (x, x.matches ('<path_or_regular_expression
>'),自此管道最后一次运行后修改的文件 -
files.deleted.exists (x, x.matches ('<path_or_regular_expression
>'),自此管道最后一次运行以来删除的文件 -
files.renamed.exists (x, x.matches ('<path_or_regular_expression
>'),自此管道的最后一个运行时,此表达式会检查重命名文件的新名称。
-
1.4.1.7. Tekton Chains
-
在这个版本中,Tekton Chains 支持 API 版本的
v1
值。 -
在这个版本中,您可以在
TektonConfig
CR 中设置artifacts.pipelinerun.enable-deep-inspection
参数。当此参数为true
时,Tekton Chains 会记录管道运行的子任务的结果。当此参数为false
时,Tekton Chains 会记录管道运行的结果,而不是其子任务运行。 -
在这个版本中,您可以在
TektonConfig
CR 中设置builddefinition.buildtype
参数,来为 in-toto attestation 设置构建类型。当此参数为https://tekton.dev/chains/v2/slsa
时,Tekton Chains 记录 in-toto attestations 严格符合 SLSA v1.0 规格。当此参数为https://tekton.dev/chains/v2/slsa-tekton
时,Tekton Chains 记录 in-toto attestations 带有更多信息,如每个任务运行和管道运行中的标签和注解,并在解析的Dependencies
下的管道运行中添加每个任务。 -
在此次更新之前,当 Tekton 链配置为使用
gcs
存储时,Tekton Chains 不会记录管道运行信息。在这个版本中,Tekton Chains 记录管道使用这个存储运行信息。 -
在这个版本中,性能指标可用于 Tekton 链。要访问指标,请公开
tekton-chains-metrics
服务,然后使用该服务上的/metrics
路径,端口 9090。这些指标也可以在 OpenShift Container Platform 监控堆栈中找到。 -
在这个版本中,当记录管道运行和使用
v1
版本值的任务运行和任务运行时,Tekton Chains 使用新的v2alpha3
记录格式版本。 -
在这个版本中,Tekton Chains 使用管道运行的
v1
版本,并在内部运行格式。
1.4.1.8. Tekton Results
- 在这个版本中,如果安装了 Tekton Results,Tekton Results 会记录使用 Pipelines as Code 启动的管道运行的摘要并记录数据。
- 在这个版本中,Tekton Results 为管道或任务提供最多 100MB 的日志信息。
-
在这个版本中,任何经过身份验证的用户都可以查看 openshift-pipelines 命名空间中的
tekton-results-api-service
路由,以使用 REST API 与 Tekton 结果交互。 - 在这个版本中,Tekton Results API 包括一个新的端点,用于获取概述和聚合记录列表。
-
在这个版本中,Tekton Results API 的
GetLog
端点返回 raw 字节,其text/plain
content 类型。 在这个版本中,您可以在
TektonResult
CR 中的options.configMaps.tekton-results-api-config.data.config.DB_SSLROOTCERT
spec 中指定自定义 CA 证书。在这种情况下,Tekton Results 需要与数据库服务器的 SSL 连接,并将此证书用于连接。如果要使用此设置,在配置 Tekton Results 时,还必须对几个其他配置参数使用备用 specs,如下表所示。常规和备用参数 specs 都位于TektonResult
CR 中。表 1.3. Tekton Results 的替代配置参数 常规参数规格 备用参数规格 logs_api
options.configMaps.tekton-results-api-config.data.config.LOGS_API
log_level
options.configMaps.tekton-results-api-config.data.config.LOG_LEVEL
db_port
options.configMaps.tekton-results-api-config.data.config.DB_PORT
db_host
options.configMaps.tekton-results-api-config.data.config.DB_HOST
logs_path
options.configMaps.tekton-results-api-config.data.config.LOGS_PATH
logs_type
options.configMaps.tekton-results-api-config.data.config.LOGS_TYPE
logs_buffer_size
options.configMaps.tekton-results-api-config.data.config.LOGS_BUFFER_SIZE
auth_disable
options.configMaps.tekton-results-api-config.data.config.AUTH_DISABLE
db_enable_auto_migration
options.configMaps.tekton-results-api-config.data.config.DB_ENABLE_AUTO_MIGRATION
server_port
options.configMaps.tekton-results-api-config.data.config.SERVER_PORT
prometheus_port
options.configMaps.tekton-results-api-config.data.config.PROMETHEUS_PORT
gcs_bucket_name
options.configMaps.tekton-results-api-config.data.config.GCS_BUCKET_NAME
对于此表中未列出的配置参数,请使用常规规格,如文档所述。
重要只有在您需要使用
DB_SSLROOTCERT
设置时,才使用备用参数 spec。
1.4.2. 可能会造成问题的更改
-
在这个版本中,在使用 Bundles 解析器时,您无法指定
serviceAccount
参数。相反,您可以指定secret
参数,以提供包含 registry 验证信息的 secret 名称。您必须更新使用 Bundles 解析器的serviceAccount
参数的任何任务或管道以使用secret
参数。TektonConfig
CR 中的pipeline.bundles-resolver-config.default-service-account
spec 不再被支持。
1.4.3. 已知问题
-
tkn pipeline logs -f
命令不会在此管道进行时显示管道中定义的任务日志,并带有retries: X
参数。
1.4.4. 修复的问题
- 在此次更新之前,在使用 GitHub Enterprise 时,传入的 Webhook 无法正常工作。在这个版本中,您可以在 GitHub Enterprise 中使用传入的 Webhook。
- 在此次更新之前,如果任务运行或管道运行禁用超时,OpenShift Pipelines 会在任务运行或管道运行上运行一系列快速协调,从而降低控制器的性能。在这个版本中,控制器会协调任务运行和管道运行,并通常会禁用超时。
-
在此次更新之前,如果您使用自定义命名空间安装 Tekton Hub,安装会删除
openshift-pipelines
命名空间,删除 OpenShift Pipelines 安装。在这个版本中,您可以使用自定义命名空间安装 Tekton Hub,并且 OpenShift Pipelines 安装不受影响 -
在此次更新之前,当在合并请求(如 /test )中使用注释(如
/test
)触发管道运行时,Pipelines as Code 不会报告在合并请求上运行的管道运行的状态。在这个版本中,Pipelines as Code 可以正确地报告在合并请求上运行的管道运行状态。 在此次更新之前,当在 Tekton Results 中使用带有子组的 CEL 过滤时,如下例所示,子组无法正常工作。在这个版本中,子组可以正常工作。
带有子组的 CEL 过滤器示例
"data_type==TASK_RUN && (data.spec.pipelineSpec.tasks[0].name=='hello'||data.metadata.name=='hello')"
- 在此次更新之前,当一个管道运行被取消时,Tekton Results 不会记录此管道运行的日志。在这个版本中,Tekton Results 记录已取消的管道运行的日志。
1.4.5. Red Hat OpenShift Pipelines 正式发布 1.14.1 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.14.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.5.1. 修复的问题
-
在此次更新之前,当使用配置了不同 GitHub 应用程序的多个 Pipelines 作为代码控制器时,Pipelines as Code watcher 组件会崩溃并带有
nilerror
信息。在这个版本中,Pipelines as Code 功能通常带有配置了不同 GitHub 应用程序的多个控制器。
1.4.6. Red Hat OpenShift Pipelines 正式发布 1.14.2 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.14.2 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.6.1. 修复的问题
- 在此次更新之前,当使用 Pipelines as Code 启动管道运行时,Tekton Results 不会存储有关此管道运行的信息。因此,web 控制台插件没有在执行统计显示中包含管道运行。在这个版本中,Tekton Results 存储有关 Pipelines as Code 管道运行的信息,这些管道运行包含在执行统计显示中。
-
在此次更新之前,当您启动了使用 Pipelines as Code 的管道运行,且这些管道运行包含
max-keep-run
注解时,Pipelines as Code watcher 组件无法处理一些待处理的管道运行,它们会一直处于待处理状态。在这个版本中,Pipelines as Code 管道运行会被正确处理。
1.4.7. Red Hat OpenShift Pipelines 正式发布 1.14.3 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.14.3 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.7.1. 修复的问题
-
在此次更新之前,当您启动了使用 Pipelines as Code 且这些管道运行包含
max-keep-run
注解的管道时,Pipelines as Code watcher 无法协调管道运行,因为删除现有管道运行和处理新管道运行之间有一个竞争条件。由于这个问题,无法处理一些管道运行。在这个版本中,Pipelines as Code watcher 会处理管道运行。 -
在此次更新之前,当使用
tkn pr logs -f
命令查看正在运行的管道的日志时,命令行工具会停止响应,即使管道运行成功完成。在这个版本中,tkn pr logs -f
命令可以正确地显示日志信息并退出。
1.4.8. Red Hat OpenShift Pipelines 正式发布 1.14.4 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.14.4 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.8.1. 修复的问题
-
在此次更新之前,可以记录引用
tekton-pipelines-webhook.ConversionWebhook
的大量错误消息。在这个版本中,ClusterTask
和StepAction
自定义资源定义(CRD)的不必要的转换 Webhook 配置已被删除,这些错误消息将不再被记录。 -
在此次更新之前,一些配置设置使用
TektonConfig
自定义资源(CR)中的options
部分无法正常工作,因为如果在 TektonConfig CR 中的options
部分和TektonConfig
CR 中配置了相同的设置,则会出现竞争条件。在这个版本中,设置可以正常工作。 -
在此次更新之前,OpenShift Pipelines 控制台插件 pod 不会移到使用
nodeSelector
,tolerations
, 和priorityClassName
设置指定的节点。在这个版本中,OpenShift Pipelines 插件 pod 移到正确的节点。 - 在此次更新之前,Operator 控制器日志中会记录一些错误消息,而无需正确的上下文信息。在这个版本中,错误消息包含所需信息。
-
在此次更新之前,如果任何命名空间中缺少或删除
pipelines-scc-rolebinding
rolebinding,OpenShift Pipelines operator 控制器无法正确在新命名空间中创建默认资源。在这个版本中,控制器可以正常工作。 -
在此次更新之前,如果您使用
TektonConfig
CR 中的options
部分配置 Horizontal Pod Autoscaler (HPA),则任何现有 HPA 会被正确更新,但在需要时不会创建新的 HPA。在这个版本中,使用options
部分的 Horizontal Pod Autoscaler 配置可以正常工作。 - 在此次更新之前,如果用户或 OpenShift Pipelines 控制器使用 OpenShift Pipelines API 修改正在由 Pipelines as Code 启动的管道运行,Pipelines as Code 可能会停止,日志包含 "panic" 信息。在这个版本中,Pipelines as Code 启动的管道可以同时修改。
-
在此次更新之前,在 Pipelines as Code 中,并发限制设置
0
不会被解释为禁用并发限制。在这个版本中,并发限制设置0
可禁用并发限制。
1.4.9. Red Hat OpenShift Pipelines 正式发布 1.14.5 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.14.5 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.9.1. 修复的问题
- 在此次更新之前,当您使用 Web 控制台并在概览页面中点管道时,管道详情页面不包含管道中任务的信息。在这个版本中,当您在概览页面中点管道时,管道详情页面包含所需的信息。
-
在此次更新之前,当将 Tekton 链配置为通过在
TektonConfig
CR 中设置空artifacts.oci.storage
值来禁用 OCI 工件时,配置无法正常工作,Tekton Chains 会尝试存储工件并在chains.tekton.dev/signed
注解中记录失败。在这个版本中,当您在TektonConfig
CR 中设置空artifacts.oci.storage
值时,Tekton Chains 不会尝试存储 OCI 工件。