6.2. Red Hat OpenShift Pipelines 技术预览 1.0 发行注记
6.2.1. 新功能
OpenShift Pipelines 技术预览 (TP) 1.0 现在包括在 OpenShift Container Platform 4.4 中。OpenShift Pipelines TP 1.0 更新为支持:
- Tekton Pipelines 0.11.3
-
Tekton
tkn
CLI 0.9.0 - Tekton Triggers 0.4.0
- 基于 Tekton Catalog 0.11 的 ClusterTasks
除了包括修复和稳定性改进的信息外,以下突出介绍了 OpenShift Pipelines 1.0 中的新内容。
6.2.1.1. Pipelines
- 支持 v1beta1 API 版本。
- 支持改进的 LimitRange。在以前的版本中,LimitRange 只能为 TaskRun 和 PipelineRun 指定。现在不需要显式指定 LimitRange。命名空间间使用最小 LimitRange。
- 支持使用 TaskResults 和 TaskParams 在任务间共享数据。
-
现在,管道可以被配置为不覆盖
HOME
环境变量和 Steps 的WorkDir
。 -
与任务步骤类似,
sidecar
现在支持脚本模式。 -
现在,您可以在 TaskRun 的
podTemplate
中指定不同调度程序的名称 。 - 支持使用 Star Array Notation 替换变量。
- Tekton Controller 现在可以配置为监控单个命名空间。
- 现在,在 Pipeline、Task、ClusterTask、Resource 和 Condition 规格中添加了一个新的 description 字段。
- 在 Git PipelineResources 中添加代理参数。
6.2.1.2. Pipelines CLI
-
现在,为以下
tkn
资源添加了describe
子命令:eventlistener
、condition
、triggertemplate
、clustertask
和triggerbinding
。 -
在以下命令中添加
v1beta1
支持以及v1alpha1
的向后兼容性:clustertask
、task
、pipeline
、pipelinerun
和taskrun
。 以下命令现在可以使用
--all-namespaces
标志选项列出所有命名空间的输出结果:-
tkn task list
-
tkn pipeline list
-
tkn taskrun list
tkn pipelinerun list
这些命令的输出也可以通过
--no-headers
选项在没有标头的情况下显示信息。
-
-
现在您可以使用默认参数值启动 Pipeline,方法是在
tkn pipelines start
命令中指定--use-param-defaults
标记。 -
现在,在
tkn pipeline start
和tkn task start
命令中增加了对 Workspace 的支持。 -
现在增加了一个新命令
clustertriggerbinding
,它带有以下子命令:describe
、delete
和list
。 -
现在,您可以使用本地或远程
yaml
文件直接启动管道运行。 -
describe
子命令现在显示一个改进的详细输出。现在,除了新的项,如description
、timeout
、param description
和sidecar status
,命令输出还提供了关于一个特定tkn
资源的更详细的信息。 -
现在,如果命名空间中只有一个任务,
tkn task log
命令会直接显示日志。
6.2.1.3. 触发器
-
现在触发器可以同时创建
v1alpha1
和v1beta1
Pipeline 资源。 -
支持新的通用表达式语言(CEL)拦截器功能 -
compareSecret
。此功能安全地将字符串与 CEL 表达式中的 secret 进行比较。 - 支持 EventListener Trigger 一级的验证和授权。
6.2.2. 已弃用的功能
本发行版本中已弃用了以下内容:
Steps 规格中的环境变量
$HOME
,变量workingDir
已被弃用,并可能在以后的发行版本中有所变化。目前,在 Step 容器中,HOME
和workingDir
分别被/tekton/home
和/workspace
覆盖。在以后的发行版本中,这两个字段将不会被修改,它将被设置为容器镜像和任务 YAML 中定义的值。在本发行版本中,使用标签
disable-home-env-overwrite
和disable-working-directory-overwrite
来禁用对HOME
和workingDir
的覆盖。以下命令已被弃用,并可能在以后的版本中被删除:
-
tkn pipeline create
-
tkn task create
-
-
在
tkn resource create
命令中使用-f
标志现已弃用。以后的发行版本中可能会删除它。 -
tkn clustertask create
命令中的-t
标记和--timeout
标记(使用秒格式)现已被弃用。现在只支持持续超时格式,例如1h30s
。这些已弃用的标记可能会在以后的版本中删除。
6.2.3. 已知问题
- 如果您要从 OpenShift Pipelines 的旧版本升级,则必须删除您现有的部署,然后再升级到 OpenShift Pipelines 版本 1.0。要删除现有的部署,您必须首先删除自定义资源,然后卸载 OpenShift Pipelines Operator。如需了解更多详细信息,请参阅卸载 OpenShift Pipelines 部分。
-
提交相同的
v1alpha1
任务多次会导致错误。在重新提交一个v1alpha1
任务时,使用oc replace
而不是使用oc apply
。 当向一个容器添加一个新用户时,
buildah
ClusterTask 并不会工作。当安装 Operator 时,
buildah
ClusterTask 的--storage-driver
标志没有指定,因此它会被设置为默认值。在某些情况下,这会导致存储驱动程序设置不正确。当添加一个新用户时,错误的 storage-driver 会造成buildah
ClusterTask 失败并带有以下错误:useradd: /etc/passwd.8: lock file already used useradd: cannot lock /etc/passwd; try again later.
作为临时解决方案,在
buildah-task.yaml
文件中手工把--storage-driver
标识的值设置为overlay
:以
cluster-admin
身份登录到集群:$ oc login -u <login> -p <password> https://openshift.example.com:6443
使用
oc edit
命令编辑buildah
ClusterTask:$ oc edit clustertask buildah
buildah
clustertask YAML 文件的最新版本会在由EDITOR
环境变量指定的编辑器中打开。在
steps
字段中找到以下command
字段:command: ['buildah', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--layers', '-f', '$(params.DOCKERFILE)', '-t', '$(resources.outputs.image.url)', '$(params.CONTEXT)']
使用以下内容替换
command
字段:command: ['buildah', '--storage-driver=overlay', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--no-cache', '-f', '$(params.DOCKERFILE)', '-t', '$(params.IMAGE)', '$(params.CONTEXT)']
- 保存文件并退出。
另外,您还可以直接在 web 控制台中直接修改 buildah ClusterTask YAML 文件。导航到 Pipelines
Cluster Tasks buildah
。从 Actions 菜单中选择 Edit Cluster Task,如前所示替换command
项。
6.2.4. 修复的问题
-
在以前的版本中,即使镜像构建已在进行中,
DeploymentConfig
任务也会触发新的部署构建。这会导致 Pipeline 的部署失败。在这个版本中,deploy task
命令被oc rollout status
命令替代,它会等待正在进行中的部署完成。 -
现在在 Pipeline 模板中添加了对
APP_NAME
参数的支持。 -
在以前的版本中,Java S2I 的 Pipeline 模板无法在 registry 中查询镜像。在这个版本中,使用现有镜像 PipelineResources 而不是用户提供的
IMAGE_NAME
参数来查找镜像。 - 所有 OpenShift Pipelines 镜像现在都基于 Red Hat Universal Base Images(UBI)。
-
在以前的版本中,当 Pipeline 在
tekton-pipelines
以外的命名空间中安装时,tkn version
命令会将 Pipeline 版本显示为unknown
。在这个版本中,tkn version
命令会在任意命名空间中显示正确的 Pipeline 版本。 -
tkn version
命令不再支持-c
标志。 - 非管理员用户现在可以列出 ClusterTriggerBindings。
- 现在为 CEL 拦截器修复了 EventListener CompareSecret 功能。
-
现在,
task
和clustertask
的list
、describe
和start
子命令在 Task 和 ClusterTask 有相同名称时可以正确地显示输出。 - 在以前的版本中,OpenShift Pipelines Operator 修改了特权安全性上下文约束 (SCC),这会在集群升级过程中造成错误。这个错误现已解决。
-
在
tekton-pipelines
命名空间中,现在将所有 TaskRuns 和 PipelineRuns 的超时设置为使用 ConfigMap 的default-timeout-minutes
字段。 - 在以前的版本中,Web 控制台中的 Pipelines 部分没有为非管理员用户显示。这个问题现已解决。