1.10. Red Hat OpenShift Pipelines 正式发布 1.8 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.8 包括在 OpenShift Container Platform 4.10, 4.11 和 4.12 中。
1.10.1. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.8 中的新内容。
1.10.1.1. Pipelines
-
在这个版本中,您可以在在 ARM 硬件上运行 Red Hat OpenShift Pipelines GA 1.8 及更新的版本。这包括对
ClusterTask
资源和tkn
CLI 工具的支持。
在 ARM 硬件上运行 Red Hat OpenShift Pipelines 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
-
在这个版本中,为
TaskRun
资源实现了Step
和Sidecar
覆盖。 在这个版本中,在
PipelineRun
状态下添加了最小的TaskRun
和Run
状态。要启用此功能,在
TektonConfig
自定义资源定义的pipeline
部分,您必须将enable-api-fields
字段设置为alpha
。在这个版本中,管道运行功能的安全终止会从 alpha 功能提升到 stable 功能。因此,之前弃用的
PipelineRunCancelled
状态会保持弃用,计划在以后的发行版本中被删除。由于这个功能默认可用,所以您不再需要在
TektonConfig
自定义资源定义中将pipeline.enable-api-fields
字段设置为alpha
。在这个版本中,您可以使用工作区名称为管道任务指定工作区。这个更改可让您更轻松地为
Pipeline
和PipelineTask
资源指定共享的工作区。您还可以继续显式映射工作区。要启用此功能,在
TektonConfig
自定义资源定义的pipeline
部分,您必须将enable-api-fields
字段设置为alpha
。- 在这个版本中,内嵌规格中的参数会在不修改的情况下传播。
-
在这个版本中,您可以使用注解和标签指定
PipelineRun
资源引用的Task
资源所需的元数据。这样,在管道运行过程中,依赖执行上下文的Task
元数据可用。 -
在这个版本中,
params
和results
值增加了对象和字典类型。这个变化会影响向后兼容性,有时会破坏转发兼容性,比如使用较早的客户端和以后的 Red Hat OpenShift Pipelines 版本。这个版本更改了ArrayOrStruct
结构,它会影响使用 Go 语言 API 作为库的项目。 -
在这个版本中,为
PipelineRun
状态字段的SkippedTasks
字段添加了一个SkippingReason
值,以便用户了解跳过给定 PipelineTask 的原因。 在这个版本中,支持一个 alpha 功能,您可以使用
数组
类型从Task
对象发出结果。结果类型从字符串
改为ArrayOrString
。例如,任务可以指定类型来生成数组结果:kind: Task apiVersion: tekton.dev/v1beta1 metadata: name: write-array annotations: description: | A simple task that writes array spec: results: - name: array-results type: array description: The array results ...
另外,您可以运行一个任务脚本来填充数组的结果:
$ echo -n "[\"hello\",\"world\"]" | tee $(results.array-results.path)
要启用此功能,在
TektonConfig
自定义资源定义的pipeline
部分,您必须将enable-api-fields
字段设置为alpha
。这个功能正在进行中,它是 TEP-0076 的一部分。
1.10.1.2. 触发器
在这个版本中,
EventListener
规格中的TriggerGroups
字段从 alpha 功能转换为 stable 功能。使用此字段,您可以在选择和运行一组触发器前指定一组拦截器。由于这个功能默认可用,所以您不再需要在
TektonConfig
自定义资源定义中将pipeline.enable-api-fields
字段设置为alpha
。-
在这个版本中,
Trigger
资源通过运行使用 HTTPS 的ClusterInterceptor
服务器来支持端到端安全连接。
1.10.1.3. CLI
-
在这个版本中,您可以使用
tkn taskrun export
命令,将集群中运行的 live 任务导出到 YAML 文件,您可以使用它来将任务运行导入到另一个集群。 -
在这个版本中,您可以在
tkn pipeline start
命令中添加-o name
标志,以便在启动后打印管道运行的名称。 -
在这个版本中,在
tkn --help
命令的输出中添加了可用插件列表。 -
在这个版本中,在删除管道运行或任务运行时,您可以同时使用
--keep
和--keep-since
标志。 -
在这个版本中,您可以使用
Cancelled
作为spec.status
字段的值,而不是弃用的PipelineRunCancelled
值。
1.10.1.4. Operator
- 在这个版本中,作为管理员,您可以将本地 Tekton Hub 实例配置为使用自定义数据库,而不是默认数据库。
在这个版本中,作为集群管理员,如果您启用本地 Tekton Hub 实例,它会定期刷新数据库,以便目录中的更改出现在 Tekton Hub web 控制台中。您可以调整刷新之间的周期。
在以前的版本中,要将目录中的任务和管道添加到数据库中,您需要手动执行该任务或设置 cron 任务来为您完成这个任务。
- 在这个版本中,您可以使用最小配置安装并运行 Tekton Hub 实例。这样,您可以开始使用团队来确定他们可能需要的其他自定义。
-
在这个版本中,将
GIT_SSL_CAINFO
添加到git-clone
任务,以便您可以克隆安全的存储库。
1.10.1.5. Tekton Chains
Tekton 链只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- 在这个版本中,您可以使用 OIDC 而不是静态令牌登录到 vault。这个更改意味着 Spire 可以生成 OIDC 凭证,以便只允许可信工作负载登录到 vault。另外,您可以将 vault 地址作为配置值传递,而不是将其作为环境变量注入。
-
在升级 Red Hat OpenShift Pipelines Operator 后,
openshift-pipelines
命名空间中的 Tekton Chains 的chains-config
配置映射会自动重置为 default,因为在使用 Red Hat OpenShift Pipelines Operator 安装时不支持直接更新配置映射。但是,在此次更新中,您可以使用TektonChain
自定义资源配置 Tekton 链。这个功能可让您在升级后保留配置,这与chains-config
配置映射不同,这在升级过程中会被覆盖。
1.10.1.6. Tekton Hub
Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
在这个版本中,如果您使用 Operator 安装一个新的 Tekton Hub 实例,则 Tekton Hub 登录默认是禁用的。要启用登录和评级功能,必须在安装 Tekton Hub 时创建 Hub API secret。
注意因为在 Red Hat OpenShift Pipelines 1.7 中默认启用了 Tekton Hub 登录,所以如果升级 Operator,在 Red Hat OpenShift Pipelines 1.8 中会默认启用登录。要禁用此登录,请参阅从 OpenShift Pipelines 1.7.x -→ 1.8.x 升级后禁用 Tekton Hub 登录
在这个版本中,作为管理员,您可以将本地 Tekton Hub 实例配置为使用自定义 PostgreSQL 13 数据库,而不是默认数据库。为此,请创建一个名为
tekton-hub-db
的Secret
资源。例如:apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: <hostname> POSTGRES_DB: <database_name> POSTGRES_USER: <username> POSTGRES_PASSWORD: <password> POSTGRES_PORT: <listening_port_number>
- 在这个版本中,您不再需要登录到 Tekton Hub web 控制台,将目录中的资源添加到数据库。现在,当 Tekton Hub API 首次运行时,这些资源会自动添加。
- 在这个版本中,通过调用目录刷新 API 作业,每 30 分钟自动刷新目录。用户可以配置这个间隔。
1.10.1.7. Pipelines 作为代码(Pipelines as Code)
Pipelines as Code (PAC) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
-
在这个版本中,作为开发人员,如果您试图将重复的存储库添加到 Pipelines 作为代码运行,则从
tkn-pac
CLI 工具获得通知。输入tkn pac create repository
时,每个仓库必须具有一个唯一的 URL。此通知还有助于防止劫持漏洞攻击。 -
在这个版本中,作为开发人员,您可以使用新的
tkn-pac setup cli
命令,使用 webhook 机制将 Git 存储库作为代码添加到 Pipelines 中。这样,即使在使用 GitHub Apps 时也可以使用 Pipelines 作为代码。此功能包括对 GitHub、GitLab 和 BitBucket 上的存储库的支持。 在这个版本中,Pipelines 作为代码支持 GitLab 与特征集成,如下所示:
- 项目或组的 ACL(访问权限控制列表)
-
允许的用户的
/ok-to-test
支持 -
/retest
支持。
在这个版本中,您可以使用通用表达式语言 (CEL) 执行高级管道过滤。使用 CEL,您可以使用
PipelineRun
资源中的注解匹配带有不同 Git 供应商事件的管道运行。例如:... annotations: pipelinesascode.tekton.dev/on-cel-expression: | event == "pull_request" && target_branch == "main" && source_branch == "wip"
-
在以前的版本中,作为开发人员,每个 Git 事件在
.tekton
目录中只能运行一个管道运行,如拉取请求。在这个版本中,您可以在.tekton
目录中运行多个管道。Web 控制台显示运行的状态和报告。管道并行运行,并报告回 Git 提供程序接口。 -
在这个版本中,您可以通过对拉取请求为
/test
或/retest
添加注释来测试或重新测试管道运行。您还可以按名称指定管道运行。例如,您可以输入/test <pipelinerun_name>
或/retest <pipelinerun-name>
。 -
在这个版本中,您可以使用新的
tkn-pac delete repository
命令删除存储库自定义资源及其关联的 secret。
1.10.2. 可能会造成问题的更改
在这个版本中,
TaskRun
和PipelineRun
资源的默认指标级别改为以下值:apiVersion: v1 kind: ConfigMap metadata: name: config-observability namespace: tekton-pipelines labels: app.kubernetes.io/instance: default app.kubernetes.io/part-of: tekton-pipelines data: _example: | ... metrics.taskrun.level: "task" metrics.taskrun.duration-type: "histogram" metrics.pipelinerun.level: "pipeline" metrics.pipelinerun.duration-type: "histogram"
-
在这个版本中,如果
Pipeline
和PipelineRun
资源中存在注解或标签,Run
类型中的值将具有优先权。如果Task
和TaskRun
资源中存在注解或标签,则也是如此。 -
在 Red Hat OpenShift Pipelines 1.8 中,之前弃用的
PipelineRun.Spec.ServiceAccountNames
字段已被删除。使用PipelineRun.Spec.TaskRunSpecs
字段替代。 -
在 Red Hat OpenShift Pipelines 1.8 中,之前已弃用的
TaskRun.Status.ResourceResults.ResourceRef
字段已被删除。使用TaskRun.Status.ResourceResults.ResourceName
字段。 -
在 Red Hat OpenShift Pipelines 1.8 中,之前已弃用的
Conditions
资源类型已被删除。从包含它的Pipeline
资源定义中删除Conditions
资源。在PipelineRun
定义中使用when
表达式。
-
对于 Tekton 链,在这个发行版本中删除了
tekton-provenance
格式。通过在TektonChain
自定义资源中设置"artifacts.taskrun.format": "in-toto"
来使用in-toto
格式。
Red Hat OpenShift Pipelines 1.7.x 作为代码 0.5.x 附带。当前的更新附带了 Pipelines,作为代码 0.10.x。此更改在新控制器的
openshift-pipelines
命名空间中创建新路由。您必须在使用 Pipelines 作为代码的 GitHub Apps 或 Webhook 中更新此路由。要获取路由,请使用以下命令:$ oc get route -n openshift-pipelines pipelines-as-code-controller \ --template='https://{{ .spec.host }}'
-
在这个版本中,Pipelines 作为 Code 会重命名
Repository
自定义资源定义 (CRD) 的默认 secret 密钥。在 CRD 中,将token
替换为provider.token
,并将secret
替换为webhook.secret
。 -
在这个版本中,Pipelines 作为代码将特殊模板变量替换为支持用于私有仓库的多个管道运行的特殊模板变量。在管道运行中,将
secret: pac-git-basic-auth-{{repo_owner}}-{{repo_name}}
替换为secret: {{ git_auth_secret }}
。 在这个版本中,Pipelines as Code 更新
tkn-pac
CLI 工具中的以下命令:-
将
tkn pac repository create
替换为tkn pac create repository
。 -
将
tkn pac repository delete
替换为tkn pac delete repository
。 -
将
tkn pac repository list
替换为tkn pac list
。
-
将
1.10.3. 弃用和删除的功能
从 OpenShift Container Platform 4.11 开始,会删除用于安装和升级 Red Hat OpenShift Pipelines Operator 的
preview
和stable
频道。要安装和升级 Operator,请使用适当的pipelines-<version>
频道,或最新稳定版本的latest
频道。例如,要安装 OpenShift Pipelines Operator 版本1.8.x
,请使用pipelines-1.8
频道。注意在 OpenShift Container Platform 4.10 及更早的版本中,您可以使用
preview
和stable
频道来安装和升级 Operator。对
tekton.dev/v1alpha1
API 版本的支持(在 Red Hat OpenShift Pipelines GA 1.6 中已弃用)计划在以后的 Red Hat OpenShift Pipelines GA 1.9 发行版本中删除。此更改会影响管道组件,其中包括
TaskRun
,PipelineRun
,Task
,Pipeline
, 和tekton.dev/v1alpha1
类似。另外,将现有资源更新为使用apiVersion: tekton.dev/v1beta1
,如 Migrating From Tekton v1alpha1 to Tekton v1beta1 所述。对
tekton.dev/v1alpha1
API 版本的程序错误修复和支持仅到当前 GA 1.8 生命周期结束为止。重要对于 Tekton Operator,
operator.tekton.dev/v1alpha1
API 版本没有弃用。您不需要更改此值。-
在 Red Hat OpenShift Pipelines 1.8 中,
PipelineResource
自定义资源 (CR) 可用,但不再被支持。PipelineResource
CR 是一个技术预览功能,它属于tekton.dev/v1alpha1
API 的一部分,它已被弃用,并计划在以后的 Red Hat OpenShift Pipelines GA 1.9 发行版本中删除。 -
在 Red Hat OpenShift Pipelines 1.8 中,
Condition
自定义资源 (CR) 已删除。Condition
CR 是tekton.dev/v1alpha1
API 的一部分,它已被弃用,计划在以后的 Red Hat OpenShift Pipelines GA 1.9 发行版本中删除。 -
在 Red Hat OpenShift Pipelines 1.8 中,
gsutil
的gcr.io
镜像已被删除。这个删除可能会破坏带有依赖于此镜像的Pipeline
资源的集群。程序错误修复和支持只到 Red Hat OpenShift Pipelines 1.7 生命周期结束为主。
-
在 Red Hat OpenShift Pipelines 1.8 中,
Pipeline.Status.TaskRuns
和PipelineRun.Status.Runs
字段已弃用,计划在以后的发行版本中被删除。请参阅 PipelineRuns 中的 TEP-0100: 嵌入式 TaskRuns 和 Runs Status。 在 Red Hat OpenShift Pipelines 1.8 中,
pipelineRunCancelled
状态已弃用,计划在以后的发行版本中被删除。现在,PipelineRun
对象的安全终止已从 alpha 功能提升到 stable 功能。(请参阅 TEP-0058: Graceful Pipeline Run Termination。)另外,您可以使用Cancelled
状态替换pipelineRunCancelled
状态。您不需要更改
Pipeline
和Task
资源。如果您有会取消管道运行的工具,则必须在下一个发行版本中更新这些工具。这个更改也会影响 CLI、IDE 扩展等工具,以便支持新的PipelineRun
状态。由于这个功能默认可用,所以您不再需要在
TektonConfig
自定义资源定义中将pipeline.enable-api-fields
字段设置为alpha
。在 Red Hat OpenShift Pipelines 1.8 中,
PipelineRun
中的timeout
字段已弃用。反之,使用PipelineRun.Timeouts
字段,它现在从 alpha 功能提升到 stable 功能。由于这个功能默认可用,所以您不再需要在
TektonConfig
自定义资源定义中将pipeline.enable-api-fields
字段设置为alpha
。-
在 Red Hat OpenShift Pipelines 1.8 中,
init
容器在LimitRange
对象的默认请求计算中省略。
1.10.4. 已知问题
s2i-nodejs
管道无法使用nodejs:14-ubi8-minimal
镜像流来执行 source-to-image (S2I) 构建。使用该镜像流会生成一个error building at STEP "RUN /usr/libexec/s2i/assemble": exit status 127
信息。临时解决方案: 使用
nodejs:14-ubi8
而不是nodejs:14-ubi8-minimal
镜像流。
当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE (s390x) 集群上的任务将失败。
作为临时解决方案,您可以通过将
MAVEN_IMAGE
参数值设置为maven:3.6.3-adoptopenjdk-11
来指定自定义镜像。提示在您使用
tkn hub
在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x) 上基于 Tekton Catalog 安装任务前,请验证是否可以在这些平台上执行任务。要检查ppc64le
和s390x
是否列在任务信息的"Platforms"部分,您可以运行以下命令:tkn hub info task <name>
-
在 ARM、IBM Power Systems、IBM Z 和 LinuxONE 中,不支持
s2i-dotnet
集群任务。
-
隐式参数映射会错误地将参数从顶级
Pipeline
或PipelineRun
定义传递给taskRef
任务。映射应该只在顶层资源中使用任务进行,并带有非线taskSpec
规格。这个问题只通过将TektonConfig
自定义资源定义的pipeline
部分中的enable-api-fields
字段设置为alpha
来影响启用了这个功能的集群。
1.10.5. 修复的问题
- 在此次更新之前,管道的指标在 Web 控制台的 Developer 视图中运行的指标不完整且过期。在这个版本中,这个问题已被解决,指标正确。
-
在此次更新之前,如果管道有两个失败并有
retries=2
的并行任务,则最终任务永不会运行,管道超时并且无法运行。例如,pipelines-operator-subscription
任务会间歇性地失败,并显示以下错误消息:Unable to connect to server: EOF
。在这个版本中,这个问题已被解决,以便最终任务始终运行。 -
在此次更新之前,如果管道运行因为任务运行失败而停止,则其他任务运行可能无法完成重试。因此,不会调度
finally
任务,这会导致管道挂起。 这个版本解决了这个问题。TaskRuns
和Run
对象可以在管道运行停止时重试,即使是安全停止也是如此,以便管道运行可以完成。 -
在这个版本中,当
TaskRun
对象的命名空间中存在一个或多个LimitRange
对象时,会改变如何计算资源要求。现在,当从LimitRange
对象发出请求时,调度程序现在考虑step
容器并排除所有其他应用容器,如 sidecar 容器。 -
在此次更新之前,在特定的条件下,标志软件包可能会错误地解析子命令,并带有双短划线终止符
--
。在这种情况下,它会运行 entrypoint 子命令,而不是实际命令。在这个版本中解决了这个问题,这个问题会解决,entrypoint 会运行正确的命令。 -
在此次更新之前,如果拉取镜像失败,控制器可能会生成多个 panics,或者其拉取 (pull) 状态不完整。在这个版本中解决了这个问题,方法是检查
step.ImageID
值而不是status.TaskSpec
值。 -
在此次更新之前,取消一个包含未计划的自定义任务的管道运行会生成
PipelineRunCouldntCancel
错误。在这个版本中解决了这个问题。您可以取消包含非调度自定义任务的管道运行,而不会生成这个错误。 在此次更新之前,如果在
$params["<NAME>"]
或$params['<NAME>']
的<NAME>
中包括了一个句点字符 (.
),则不会提取句点右侧的任何部分。例如,对于$params["org.ipsum.lorem"]
,只会提取yorg
部分。在这个版本中解决了这个问题,
$params
可以提取完整的值。例如,$params["org.ipsum.lorem"]
和$params['org.ipsum.lorem']
是有效的,<NAME>
的完整值org.ipsum.lorem
都会被提取。如果
<NAME>
没有包含在单引号或双引号中,还会抛出一个错误。例如,$params.org.ipsum.lorem
是无效,并生成验证错误。
-
在这个版本中,
Trigger
资源支持自定义拦截器,并确保自定义拦截器服务的端口与ClusterInterceptor
定义文件中的端口相同。
-
在此次更新之前,Tekton Chains 和 Operator 组件的
tkn version
命令无法正常工作。在这个版本中解决了这个问题,命令可以正常工作,并返回这些组件的版本信息。 -
在此次更新之前,如果您运行
tkn pr delete --ignore-running
命令,且管道运行没有status.condition
值,tkn
CLI 工具会生成 null-pointer 错误 (NPE)。在这个版本中解决了这个问题,CLI 工具现在会生成错误,并正确忽略仍然运行的管道运行。 -
在此次更新之前,如果您使用
tkn pr delete --keep <value>
或tkn tr delete --keep <value>
命令,且管道运行或任务运行的数量小于其中的值,则命令不会如预期返回一个错误。在这个版本中解决了这个问题,以便命令在这些条件下正确返回错误。 -
在此次更新之前,如果您使用
tkn pr delete
或tkn tr delete
命令以及-p
或-t
标志与--ignore-running
标志一起,则命令会错误地删除运行或待处理资源。在这个版本中解决了这个问题,这些命令可以正确地忽略运行或待处理资源。
-
在此版本中,您可以使用
TektonChain
自定义资源配置 Tekton 链。这个功能可让您在升级后保留配置,这与chains-config
配置映射不同,这在升级过程中会被覆盖。 -
在这个版本中,除了
buildah
和s2i
集群任务外,ClusterTask
资源不再默认以 root 用户身份运行。 -
在此次更新之前,当将
init
用作第一个参数并后跟两个或更多个参数时,Red Hat OpenShift Pipelines 1.7.1 上的任务会失败。在这个版本中,这些标志会被正确解析,任务可以运行成功。 在此次更新之前,因为存在无效的角色绑定,在 OpenShift Container Platform 4.9 和 4.10 上安装 Red Hat OpenShift Pipelines Operator 会失败,并显示以下错误消息:
error updating rolebinding openshift-operators-prometheus-k8s-read-binding: RoleBinding.rbac.authorization.k8s.io "openshift-operators-prometheus-k8s-read-binding" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"Role", Name:"openshift-operator-read"}: cannot change roleRef
在这个版本中解决了这个问题,不再会发生失败。
-
在以前的版本中,升级 Red Hat OpenShift Pipelines Operator 会导致重新创建
pipeline
服务帐户,这意味着链接到服务帐户的 secret 会丢失。在这个版本中解决了这个问题。在升级过程中,Operator 不再重新创建pipeline
服务帐户。因此,已附加到pipeline
服务帐户的 secret 在升级后会保留,资源(任务和管道)可以继续正常工作。 -
在这个版本中,如果在
TektonConfig
自定义资源 (CR) 中配置了基础架构节点设置,Pipelines as Code pod 在基础架构节点上运行。 在以前的版本中,使用资源修剪器时,每个命名空间 Operator 创建了一个在独立容器中运行的命令。这个设计在有大量命名空间的集群中消耗太多资源。例如,要运行单个命令,带有 1000 个命名空间的集群会在 pod 中生成 1000 个容器。
在这个版本中解决了这个问题。它将基于命名空间的配置传递给作业,以便所有命令在循环中的一个容器中运行。
-
在 Tekton Chains 中,您必须定义一个名为
signed-secrets
的 secret,以存放用于签名任务和镜像的密钥。但是,在更新前,更新 Red Hat OpenShift Pipelines Operator 会重置或覆盖这个 secret,密钥会丢失。在这个版本中解决了这个问题。现在,如果在通过 Operator 安装 Tekton Chains 后配置了 secret,secret 会保留,且升级不会覆盖它。 在此次更新之前,所有 S2I 构建任务都会失败,并显示类似以下消息的错误:
Error: error writing "0 0 4294967295\n" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted time="2022-03-04T09:47:57Z" level=error msg="error writing \"0 0 4294967295\\n\" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted" time="2022-03-04T09:47:57Z" level=error msg="(unable to determine exit status)"
在这个版本中,
pipeline-scc
安全性上下文约束 (SCC) 与Buildah
和S2I
集群任务所需的SETFCAP
功能兼容。因此,Buildah
和S2I
构建任务可以成功运行。要成功运行
Buildah
集群任务和S2I
构建任务,适用于使用各种语言和框架编写的应用程序,添加以下适当的steps
对象(如build
和push
)的代码片段。securityContext: capabilities: add: ["SETFCAP"]
- 在此次更新之前,安装 Red Hat OpenShift Pipelines Operator 所需的时间比预期的要长。这个版本会优化一些设置来加快安装过程。
-
在这个版本中,Buildah 和 S2I 集群任务比之前的版本要少。有些步骤已合并到一个步骤中,它们最好使用
ResourceQuota
和LimitRange
对象,且不需要更多资源。 -
在这个版本中,在集群任务中升级 Buildah、
tkn
CLI 工具和skopeo
CLI 工具版本。 -
在此次更新之前,如果任何命名空间处于
Terminating
状态,Operator 会在创建 RBAC 资源时失败。在这个版本中,Operator 忽略了命名空间处于Terminating
状态,并创建 RBAC 资源。 -
在此次更新之前,prune cronjobs 的 pod 没有在基础架构节点上调度。相反,它们被调度到 worker 节点上,或没有调度到任何节点。在这个版本中,如果在
TektonConfig
自定义资源 (CR) 中进行了配置,这些类型的 pod 可以在基础架构节点上调度。
1.10.6. Red Hat OpenShift Pipelines 正式发布 1.8.1 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.8.1 包括在 OpenShift Container Platform 4.10, 4.11 和 4.12 中。
1.10.6.1. 已知问题
默认情况下,容器具有 restricted 权限来提高安全性。restricted 权限适用于 Red Hat OpenShift Pipelines Operator 中的所有控制器 pod,以及一些集群任务。由于权限受限,
git-clone
集群任务在特定配置下会失败。临时解决方案:无.您可以跟踪此问题 SRVKP-2634。
当安装程序集合处于失败状态时,
TektonConfig
自定义资源的状态会被错误地显示为True
,而不是False
。示例:失败的安装程序集
$ oc get tektoninstallerset NAME READY REASON addon-clustertasks-nx5xz False Error addon-communityclustertasks-cfb2p True addon-consolecli-ftrb8 True addon-openshift-67dj2 True addon-pac-cf7pz True addon-pipelines-fvllm True addon-triggers-b2wtt True addon-versioned-clustertasks-1-8-hqhnw False Error pipeline-w75ww True postpipeline-lrs22 True prepipeline-ldlhw True rhosp-rbac-4dmgb True trigger-hfg64 True validating-mutating-webhoook-28rf7 True
示例: 不正确的
TektonConfig
状态$ oc get tektonconfig config NAME VERSION READY REASON config 1.8.1 True
1.10.6.2. 修复的问题
-
在此次更新之前,pruner 会删除运行管道的任务运行,并显示以下警告:
some tasks were indicated completed without ancestors being done
。在这个版本中,pruner 会保留作为运行管道一部分的任务运行。 -
在此次更新之前,
pipeline-1.8
是安装 Red Hat OpenShift Pipelines Operator 1.8.x 的默认频道。在这个版本中,latest
是默认频道。 - 在此次更新之前,作为 Code 控制器 pod 的 Pipelines 无法访问用户公开的证书。在这个版本中,Pipelines as Code 可以访问路由,Git 存储库由自签名或自定义证书保护。
- 在此次更新之前,在从 Red Hat OpenShift Pipelines 1.7.2 升级到 1.8.0 后,任务会失败并带有 RBAC 错误。在这个版本中,任务会成功运行,不会出现 RBAC 错误。
-
在此次更新之前,无法使用
tkn
CLI 工具删除包含类型为array
的result
对象的任务运行和管道运行。在这个版本中,可以使用tkn
CLI 工具删除包含类型为array
的result
对象的任务运行和管道运行。 -
在此次更新之前,如果管道规格包含带有类型为
array
的ENV_VARS
参数的任务,则管道运行会失败,并带有以下错误:invalid input params for task func-buildpacks: param types don’t match the user-specified type: [ENV_VARS]
。在这个版本中,带有这样的管道和任务规格的管道不会失败。 -
在此次更新之前,集群管理员无法向
Buildah
集群任务提供config.json
文件来访问容器 registry。在这个版本中,集群管理员可以使用dockerconfig
工作区为Buildah
集群任务提供config.json
文件。
1.10.7. Red Hat OpenShift Pipelines General Availability 1.8.2 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.8.2 包括在 OpenShift Container Platform 4.10, 4.11 和 4.12 中。
1.10.7.1. 修复的问题
-
在此次更新之前,当使用 SSH 密钥克隆存储库时,
git-clone
任务会失败。在这个版本中,git-init
任务中的非 root 用户的角色会被删除,SSH 程序会在$HOME/.ssh/
目录中查找正确的密钥。