1.4. Red Hat OpenShift Pipelines 正式发布 1.12 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.1. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.12 中的新内容:
在升级到 Red Hat OpenShift Pipelines Operator 1.12 之前,请确保至少在集群中安装了 OpenShift Container Platform 4.12.19 或 4.13.1 版本。
1.4.1.1. Pipelines
- 在这个版本中,Web 控制台包含用于管道运行和任务运行的新量表指标。此指标指示因为命名空间中定义的资源配额策略或底层节点上的资源限制而被 OpenShift Container Platform 节流。
-
在这个版本中,新的
set-security-context
功能标记默认设置为true
,以便任务运行和管道运行在带有受限 pod 安全准入策略的命名空间中运行。 -
在这个版本中,
enable-api-fields
标志默认设置为beta
。您可以使用代码中标记为beta
的所有功能,而无需进一步更改。 -
在这个版本中,
results.tekton.dev
ProductShortName 和chains.tekton.dev
86] 保留注解不会从管道运行传递给它所创建的任务运行。 - 在此次更新之前,CSI 卷和投射卷不会被默认启用。在这个版本中,您可以在管道中使用 CSI 卷和投射卷,而无需更改任何配置字段。
- 在这个版本中,隔离工作区功能会被默认启用。您可以使用此功能与指定步骤和 sidecar 共享工作区,而无需与整个任务运行共享。
1.4.1.2. Operator
- 在这个版本中,您可以为 OpenShift Pipelines 为管道运行和任务运行创建的 pod 配置默认安全性上下文约束(SCC)。您可以为不同的命名空间单独设置 SCC,并配置可为任何命名空间设置的最大(最低限制性) SCC。
-
在这个版本中,Tekton spec 的每个组件都有一个新的
options:
标题。您可以使用此标题下的参数来控制不同组件的设置。特别是,您可以使用 platform.openshift.pipelinesAsCode.options.configMaps.pac-config-logging.data
spec 下的参数来设置 Pipelines as Code 组件的日志级别。 -
在这个版本中,您可以使用新的
spec.pipeline.performance.replicas
参数设置为 OpenShift Pipelines 控制器 pod 创建的副本数。如果您之前手动设置部署中的副本数,现在可以使用此设置来控制副本数。 -
在这个版本中,Operator 确保存储的 API 版本在 OpenShift Pipelines 部署过程中保持不变。在 OpenShift Pipelines 1.12 中存储的 API 版本是
v1
。 -
在这个版本中,您可以使用 secret 配置 S3 存储桶存储来存储 Tekton Results 日志记录信息。在配置 S3 存储桶存储时,您必须使用
TektonResult
自定义资源(CR)中的新secret_name
spec 为 secret 提供 S3 存储凭证。
1.4.1.3. Tekton Results
Tekton Results 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- 在这个版本中,您可以配置 Tekton 结果来将数据存储在外部 PostgreSQL 服务器中。
-
在这个版本中,您可以使用 Google Cloud Storage (GCS)来存储 Tekton Results 日志记录信息。您可以为 secret 提供 GCS 存储凭证,然后在
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.4.1.4. 触发器
-
在这个版本中,您可以在
Trigger
CR 上配置就绪度和存活度探测。您还可以为探测设置失败阈值的值;默认值为 3。 -
在这个版本中,OpenShift Pipelines 会在创建对 Cloud Events 请求的响应时添加
Type
和Subject
值。
1.4.1.5. CLI
-
在这个版本中,
tkn pipeline logs
命令显示使用解析器引用的管道或任务的日志。 -
在这个版本中,当输入
tkn bundle push
命令时,您可以使用--annotate
标志来提供额外的注解。
1.4.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
变量从事件(如 pull 或 push 请求)中检索有关已分叉存储库的信息。用法示例
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 上的管道运行中配置
标签推送事件
。 -
在这个版本中,您可以使用 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.4.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.4.3. 已知问题
-
如果为命名空间配置了限制范围,但没有在限制范围中配置 pod 临时存储,pod 可以进入错误阶段,消息
Pod 临时存储使用量超过容器 0 的总限制
。 -
如果要更改
TektonResult
CR 中的配置,您必须删除现有TektonResult
CR,然后创建新 CR。如果您更改了现有的TektonResult
CR,则更改不会应用到 Tekton Results 的现有部署。例如,如果您将连接从内部数据库服务器更改为外部数据库服务器,反之亦然,API 会保持连接到旧数据库。
1.4.4. 修复的问题
- 在此次更新之前,Pipelines as Code 只根据分支基本名称运行管道运行,并可能会错误地触发使用相同基本名称但不同的分支名称运行的管道。在这个版本中,Pipelines as Code 会检查基本名称和管道运行的确切分支名称。
- 在此次更新之前,传入的 Webhook 事件可能会触发为其他事件配置的多个管道运行。在这个版本中,传入的 Webhook 事件只触发为 webhook 事件配置的管道运行。
-
在这个版本中,在清理管道运行时,
pac-gitauth
secret 会被显式删除,如果管道运行上的ownerRef
被删除。 -
在此次更新之前,当管道运行中的任务失败并带有 reason 消息时,整个管道运行会失败,并显示
PipelineValidationFailed
原因。在这个版本中,管道运行失败,并显示与失败任务相同的原因信息。 -
在此次更新之前,
disable-ha
标志值没有正确传递给 Pipelines 控制器,高可用性(HA)功能永远不会启用。在这个版本中,您可以通过将TektonConfig
CR 中的disable-ha
标志值设置为false
来启用 HA 功能。 -
在此次更新之前,当尝试复制配置映射数据提到的镜像时,
skopeo-copy
集群任务将失败。在这个版本中,skopeo-copy
集群任务可以正确完成。 -
在这个版本中,
tkn pac generate -language=java
命令自动生成管道运行具有正确的注解和参数名称。 -
在此次更新之前,只有具有管理权限的用户才能成功运行
tkn pac create repository
命令。在这个版本中,任何授权用户可以运行tkn pac create repository
命令。 -
在此次更新之前,
/test <run-name>
; 和/retest <run-name
> 用户注释(指定了特定管道)不会按预期触发管道运行。在这个版本中,这些注释会触发管道运行。 -
在此次更新之前,如果带有
generateName
字段的.tekton
文件夹中有多个管道运行,而不是Name
字段,则管道运行会失败。在这个版本中解决了这个问题。 - 在此次更新之前,在使用 GitLab 时,在 Pipelines as Code 中,一个管道运行由合并请求中的任何事件触发,包括添加标签和设置状态。在这个版本中,管道运行只有在有 open、reopen 或 push 事件时才会触发。现在,在合并请求中发布包含检查状态的注释。
-
在此次更新之前,当管道运行等待批准时,检查的状态可以在 GitHub 和 Gitea 拉取请求的 check 部分中显示为
跳过
。在这个版本中,会显示正确的待处理批准
状态。 -
在此次更新之前,捆绑包解析器有时会在尝试检索管道时将 type 设置为
Task
,从而导致检索出现错误。在这个版本中,解析器使用正确的类型来检索管道。 - 在这个版本中,在查询 Tekton 结果时处理通用表达式语言(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 Chains 无法连接到 KMS Hashicorp Vault 时,Tekton Chains 控制器会崩溃。在这个版本中,Tekton Chains 会记录连接错误,且不会崩溃。
1.4.5. Red Hat OpenShift Pipelines 正式发布 1.12.1 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.5.1. 修复的问题
-
在此次更新之前,如果您使用自定义控制台驱动程序将 Pipelines 配置为代码来输出到自定义控制台,则在某些情况下 Pipelines as Code 控制器会崩溃。将更改推送到拉取请求后,对此拉取请求的 CI 状态检查可能会保留为
等待报告状态
,并且关联的管道运行没有完成。在这个版本中,Pipelines as Code 控制器可以正常工作。将更改推送到拉取请求后,关联的管道运行会正常完成,并更新拉取请求的 CI 状态检查。 -
在此次更新之前,当使用 Pipelines 作为代码时,如果您在没有特定用户的
Repository
自定义资源(CR)上创建访问策略,然后将用户添加到 Git 存储库中的OWNER
文件中,则用户将没有 Pipelines as Code CI 进程的权限。例如,如果用户创建了拉取请求到 Git 存储库。CI 进程不会在此拉取请求上自动运行。在这个版本中,没有包含在Repository
CR 的访问策略中,但包含在OWNER
文件中,允许为存储库运行 CI 进程。 - 在这个版本中,webhook 不支持 HTTP/2.0 协议。所有对 Red Hat OpenShift Pipelines 的 webhook 调用都必须使用 HTTP/1.1 协议。
1.4.6. Red Hat OpenShift Pipelines 正式发行 1.12.2 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12.2 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.4.6.1. 修复的问题
-
在此次更新之前,在超过
max-keep-runs
参数时,为最新的管道运行生成的 Git secret 已被删除。在这个版本中,Git secret 不再在最新的管道运行中删除。 - 在这个版本中,S2I 集群任务使用正式发行(GA)容器镜像。