1.6. Red Hat OpenShift Pipelines 正式发布 1.12 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.6.1. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.12 中的新内容:
在升级到 Red Hat OpenShift Pipelines Operator 1.12 之前,请确保在集群中至少安装了 OpenShift Container Platform 4.12.19 或 4.13.1 版本。
1.6.1.1. Pipelines
- 在这个版本中,web 控制台包含用于管道运行和任务运行的新量表指标。此指标指明底层 pod 是否因命名空间中定义的资源配额策略或底层节点上资源限制而受到 OpenShift Container Platform 节流。
-
在这个版本中,新的
set-security-context
功能标记默认设置为true
,以便启用任务运行和管道运行在带有受限 pod 安全准入策略的命名空间中运行。 -
在这个版本中,
enable-api-fields
标志默认设置为beta
。您可以在代码中使用标记为beta
的所有功能,而无需进一步更改。 -
在这个版本中,
results.tekton.dev
configured 和chains.tekton.dev
86] 保留注解不会从管道运行传递给它所创建的任务运行。 - 在此次更新之前,CSI 卷和投射卷不会被默认启用。在这个版本中,您可以在不更改任何配置字段的情况下使用 CSI 卷和投射卷。
- 在这个版本中,隔离工作区功能会被默认启用。您可以使用此功能与指定的步骤和 sidecar 共享工作区,而无需将其与整个任务运行共享。
1.6.1.2. Operator
- 在这个版本中,您可以为 OpenShift Pipelines 为管道运行和任务运行的 pod 配置默认安全性上下文约束(SCC)。您可以为不同的命名空间单独设置 SCC,并配置可以为任何命名空间设置的最大(限制性) SCC。
-
在这个版本中,TektonConfig spec 的每个组件下提供了一个新的
options:
标题。您可以使用此标题下的参数来控制不同组件的设置。特别是,您可以使用 platform.openshift.pipelinesAsCode.options.configMaps.pac-config-logging.data
spec 下的参数,为 Pipelines as Code 组件设置日志级别。 -
在这个版本中,您可以使用新的
spec.pipeline.performance.replicas
参数来设置为 OpenShift Pipelines 控制器 pod 创建的副本数。如果您之前在部署中手动设置副本数,则必须使用此设置来控制副本计数。 -
在这个版本中,Operator 可确保在部署 OpenShift Pipelines 时存储的 API 版本保持不变。OpenShift Pipelines 1.12 中存储的 API 版本是
v1
。 -
在这个版本中,您可以使用 secret 配置 S3 存储桶存储来存储 Tekton Results 日志记录信息。在配置 S3 存储桶存储时,您必须使用
TektonResult
自定义资源(CR)中的新secret_name
spec 为 secret 提供 S3 存储凭证。
1.6.1.3. Tekton Results
Tekton Results 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- 在这个版本中,您可以配置 Tekton 结果,将数据存储在外部 PostgreSQL 服务器中。
-
在这个版本中,您可以使用 Google Cloud Storage (GCS)来存储 Tekton Results 日志记录信息。您可以使用 GCS 存储凭证提供 secret,然后在
TektonResult
spec 下的属性中提供 secret 名称、secret 密钥和存储桶名称。您还可以使用 Workload Identity Federation 进行身份验证。 -
在这个版本中,任何通过 OpenShift Pipelines 进行身份验证的服务帐户都可以访问
TektonResult
CR。 - 在这个版本中,Tekton Results 包括带有 admin、edit 和 view 角色的服务帐户的集群角色聚合。这些服务帐户不再需要集群角色绑定来访问使用 Tekton Results API 的结果和记录。
-
在这个版本中,您可以通过在
TektonConfig
CR 中设置prune-per-resource
布尔值字段来为每个PipelineRun
或TaskRun
资源配置修剪。您还可以通过将operator.tekton.dev/prune.prune-per-resource=true
注解添加到该命名空间中,为命名空间中的每个PipelineRun
或TaskRun
资源配置修剪。 - 在这个版本中,如果 OpenShift Container Platform 集群范围代理中存在任何更改,Operator Lifecycle Manager (OLM) 会重新创建 Red Hat OpenShift Pipelines Operator。
-
在这个版本中,您可以通过在
TektonConfig
CR 中将config.pruner.disabled
字段的值设置为true
来禁用修剪器功能。
1.6.1.4. 触发器
-
在这个版本中,您可以在
Trigger
CR 上配置就绪度和存活度探测。您还可以为探测设置失败阈值;默认值为 3。 -
在这个版本中,OpenShift Pipelines 触发器在创建对 Cloud Events 请求时添加
Type
和Subject
值。
1.6.1.5. CLI
-
在这个版本中,
tkn pipeline logs
命令会显示使用解析器引用的管道或任务的日志。 -
在这个版本中,在输入
tkn bundle push
命令时,您可以使用-annotate
标志来提供额外的注解。
1.6.1.6. Pipelines 作为代码(Pipelines as Code)
- 在这个版本中,Pipelines as Code 管道运行可以包含从多个 Artifact Hub 或 Tekton Hub 实例获取的远程任务,以及同一 hub 实例中的不同目录。
-
在这个版本中,您可以使用
TektonConfig
CR 中的 platform.openshift.pipelinesAsCode.options.configMaps.pac-config-logging.data
spec 中的参数,将 Pipelines 的日志记录级别设置为代码组件。 -
在这个版本中,您可以设置策略,仅允许团队成员的某些操作,并在其他用户请求它们时拒绝操作。目前,
pull_request
和ok_to_test
操作支持设置此类策略。 -
在这个版本中,您可以在传入的 Webhook 中传递任意参数作为 JSON 有效负载。OpenShift Pipelines 将这些参数传递给管道运行。要提供额外的安全层,您必须在
Repository
CR 中明确定义允许的参数。 - 在这个版本中,与 Pipelines 中大量远程注解的管道运行匹配,因为代码被优化。Pipelines as Code 只获取匹配的管道运行的远程任务。
在这个版本中,您可以使用管道运行模板中的
source_url
变量,从触发拉取或推送请求等事件中检索有关已分叉存储库的信息。用法示例
apiVersion: tekton.dev/v1beta1 kind: PipelineRun # ... spec: params: - name: source_url value: "{{ source_url }}" pipelineSpec: params: - name: source_url # ...
-
在这个版本中,如果授权用户提供
ok-to-test
注释,以触发来自未授权用户的拉取请求上运行的管道,然后作者会对分支进行进一步更改,Pipelines as Code 会触发管道。要禁用触发管道,直到授权用户提供新的ok-to-test
注释,请将TektonConfig
CR 中的pipelinesAsCode.settings.remember-ok-to-test
spec 设置为 false。 - 在这个版本中,在 GitHub 状态检查页面中,显示所有任务状态的表都包含每个任务的显示名称。
-
在这个版本中,您可以在 GitLab 上运行的管道中配置
标签 push
事件。 -
在这个版本中,您可以使用 Pipelines 中的
target_url
和source_url
字段作为代码通用表达式语言(CEL)表达式过滤注解来过滤特定目标或源的请求。 -
在这个版本中,当使用令牌配置获取远程 GitHub URL 时,您可以包含包含斜杠的分支名称。您必须将分支名称中的斜杠编码为
%2F
,以确保 Pipelines as Code 正确解析,如下例所示:https://github.com/organization/repository/blob/feature%2Fmainbranch/path/file
。在本例中,分支名称为feature/mainbranch
,要获取的文件的名称是/path/file
。 -
在这个版本中,您可以在
tkn pac resolve
命令中使用-v1beta1
标志。如果使用v1beta1
API 版本 schema 生成管道运行,请使用此标志。
1.6.2. 可能会造成问题的更改
-
在这个版本中,您无法使用
openshift-operators
命名空间作为安装 OpenShift Pipelines 的目标命名空间。如果您使用openshift-operators
命名空间作为目标命名空间,请在升级到 Red Hat OpenShift Pipelines Operator 1.12 前更改目标命名空间。否则,升级后,除了targetNamespace
设置外,您将无法更改TektonConfig
CR 中的任何配置设置。 -
在这个版本中,新的
spec.pipeline.performance.replicas
参数控制为管道运行或任务运行的每个 pod 创建的副本数。如果您之前在部署中手动设置副本数,在升级到 OpenShift Pipelines 版本 1.12 后,您必须使用此参数来控制副本计数。 在这个版本中,
TektonResult
CR 不再支持以下参数:-
db_user
-
db_password
-
s3_bucket_name
-
s3_endpoint
-
s3_hostname_immutable
-
s3_region
-
s3_access_key_id
-
s3_secret_access_key
s3_multi_part_size
您必须使用 secret 提供这些参数。升级到 OpenShift Pipelines 版本 1.12 后,您必须删除并重新创建
TektonResult
CR 以提供这些参数。
-
-
在这个版本中,
tkn pac bootstrap
命令支持--github-hostname
标志。--github-api-url
标志已弃用。
1.6.3. 已知问题
-
如果为命名空间配置了限制范围,但没有在限制范围中配置 pod 临时存储,则 pod 可以进入错误阶段,并且消息
Pod 临时存储用量超过容器 0 的总限值
。 -
如果要在
TektonResult
CR 中更改配置,您必须删除现有TektonResult
CR,然后创建一个新配置。如果您更改现有的TektonResult
CR,则更改不会应用到 Tekton Results 的现有部署。例如,如果您将连接从内部数据库服务器更改为外部,反之亦然,API 会保持连接到旧数据库。
1.6.4. 修复的问题
- 在此次更新之前,Pipelines as Code 只会根据分支基本名称运行管道运行,并可能会错误地触发管道运行,但不同的分支名称可能不正确。在这个版本中,Pipelines as Code 会检查基本名称和管道运行的确切分支名称。
- 在此次更新之前,传入的 Webhook 事件可能会触发为其他事件配置的多个管道运行。在这个版本中,传入的 Webhook 事件只触发为 webhook 事件配置的管道运行。
-
在这个版本中,在清理管道运行时,
pac-gitauth
secret 会被明确删除,如果管道运行上的ownerRef
被删除。 -
在此次更新之前,当管道运行中的任务失败带有原因消息时,整个管道运行会失败,并带有
PipelineValidationFailed
原因。在这个版本中,管道运行会失败,原因与失败的任务相同。 -
在此次更新之前,
disable-ha
标志值没有正确传递给 Pipelines 控制器,且不会启用高可用性(HA)功能。在这个版本中,您可以通过将TektonConfig
CR 中的disable-ha
标志的值设置为false
来启用 HA 功能。 -
在此次更新之前,当尝试复制配置映射数据中引用的镜像时,
skopeo-copy
集群任务会失败。在这个版本中,skop-copy
集群任务可以正确完成。 -
在这个版本中,
tkn pac generate -language=java
命令自动生成管道具有正确的注解和参数名称。 -
在此次更新之前,只有具有管理权限的用户才能成功运行
tkn pac create repository
命令。在这个版本中,任何授权用户可以运行tkn pac create repository
命令。 -
在此次更新之前,
/test <run-name&
gt; 和 /retest <run-name
> 用户注释(指定了一个特定的管道)不会按预期运行。在这个版本中,这些注释会触发管道运行。 -
在此次更新之前,如果使用
generateName
字段在.tekton
文件夹中运行多个管道,而不是Name
字段,则管道运行会失败。在这个版本中解决了这个问题。 - 在此次更新之前,在使用 GitLab 时在 Pipelines as Code 中,管道运行由合并请求中的事件触发,包括添加标签和设置状态。在这个版本中,只有在存在 open、reopen 或 push 事件时,才会触发管道运行。现在,包含检查状态的注释已在合并请求中发布。
-
在此次更新之前,当管道运行等待批准时,检查的状态可能会在 GitHub 和 Gitea 拉取请求的 checks 部分中显示。
在这个版本中,会显示正确的
待处理批准
状态。 -
在此次更新之前,捆绑包解析器有时会在尝试检索管道时将类型设置为
Task
,从而导致检索错误。在这个版本中,解析器使用正确的类型来检索管道。 - 在这个版本中解决了在查询 Tekton Results 时处理 Common Expression Language (CEL) NOT operator 中的一个错误。
-
在这个版本中,当请求记录的
LIST
操作时,在 Tekton Results API 中生成的404
错误响应已被修复,指定的结果是。 -
在此次更新之前,在
EventListener
对象中,status.address.url
字段始终设置为默认端口。在这个版本中,status.address.url
字段设置为与spec.resources.kubernetesresource.serviceport
参数中指定的端口匹配。 - 在此次更新之前,如果 GitHub API 提供了分页的响应,Pipelines as Code 只使用响应的第一个页面。在这个版本中,所有分页的响应都会被完全处理。
- 在此次更新之前,当 KMS Hashicorp Vault 的主机地址被错误配置,或者 Tekton 链无法连接到 KMS Hashicorp Vault 时,Tekton Chains 控制器会崩溃。在这个版本中,Tekton Chains 会记录连接错误,且不会崩溃。
1.6.5. Red Hat OpenShift Pipelines 正式发布 1.12.1 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.6.5.1. 修复的问题
-
在此次更新之前,如果您使用自定义控制台驱动程序将 Pipelines 配置为代码来输出到自定义控制台,Pipelines as Code 控制器在某些情况下会崩溃。将更改推送到拉取请求后,此拉取请求的 CI 状态检查可能会保持在
等待报告状态
,关联的管道运行没有完成。在这个版本中,Pipelines as Code 控制器可以正常工作。将更改推送到拉取请求后,关联的管道运行会正常完成,并且更新拉取请求的 CI 状态检查。 -
在此次更新之前,当使用 Pipelines as Code 时,如果您在
Repository
自定义资源(CR)上创建了一个访问策略,但没有包括特定用户,然后将该用户添加到 Git 存储库中的OWNER
文件中,则用户对 Pipelines 作为 CI 进程没有权利。例如,如果用户在 Git 存储库中创建了拉取请求,则 CI 进程不会自动在此拉取请求上运行。在这个版本中,没有包含在Repository
CR 上的访问策略但可以包含在OWNER
文件中的用户,可为存储库运行 CI 进程。 - 在这个版本中,webhook 不支持 HTTP/2.0 协议。所有对 Red Hat OpenShift Pipelines 的 Webhook 调用必须使用 HTTP/1.1 协议。
1.6.6. Red Hat OpenShift Pipelines 正式发布 1.12.2 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12.2 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.6.6.1. 修复的问题
-
在此次更新之前,超过
max-keep-runs
参数时,为最新的管道运行生成的 Git secret 会被删除。在这个版本中,Git secret 不会在最新的管道运行中删除。 - 在这个版本中,S2I 集群任务使用 General Availability 容器镜像。