1.13. Red Hat OpenShift Pipelines 正式发行 1.5 发行注记
Red Hat OpenShift Pipelines General Availability (GA) 1.5 现在包括在 OpenShift Container Platform 4.8 中。
1.13.1. 兼容性和支持列表
这个版本中的一些功能当前还只是一个技术预览。它们并不适用于在生产环境中使用。
在下表中,被标记为以下状态的功能:
TP | 技术预览 |
GA | 公开发行 |
请参阅红帽门户网站中关于对技术预览功能支持范围的信息:
功能 | 版本 | 支持状态 |
---|---|---|
Pipelines | 0.24 | GA |
CLI | 0.19 | GA |
目录 | 0.24 | GA |
触发器 | 0.14 | TP |
Pipeline 资源 | - | TP |
如果您有疑问或希望提供反馈信息,请向产品团队发送邮件 pipelines-interest@redhat.com。
1.13.2. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.5 中的新内容。
Pipeline 运行和任务运行将由目标命名空间中的 cron 作业自动修剪。cron 作业使用
IMAGE_JOB_PRUNER_TKN
环境变量来获取tkn image
的值。在这个版本中,TektonConfig
自定义资源包括以下字段:... pruner: resources: - pipelinerun - taskrun schedule: "*/5 * * * *" # cron schedule keep: 2 # delete all keeping n ...
在 OpenShift Container Platform 中,您可以通过修改
TektonConfig
自定义资源中的新参数clusterTasks
和pipelinesTemplates
的值来自定义 Tekton Add-ons 组件的安装:apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: profile: all targetNamespace: openshift-pipelines addon: params: - name: clusterTasks value: "true" - name: pipelineTemplates value: "true" ...
如果您使用
TektonConfig
创建附加组件,或者直接使用 Tekton Add-ons 创建附加组件,则允许进行自定义。但是,如果没有传递参数,控制器会添加带有默认值的参数。注意-
如果使用
TektonConfig
自定义资源创建附加组件,并且稍后在Addon
自定义资源中更改参数值,则TektonConfig
自定义资源中的值将覆盖更改。 -
只有在
clusterTasks
参数的值为true
时,才可将pipelinesTemplates
参数的值设置为true
。
-
如果使用
enableMetrics
参数添加到TektonConfig
自定义资源中。您可以使用它来禁用服务监控器,这是 OpenShift Container Platform 的 Tekton Pipelines 的一部分。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: profile: all targetNamespace: openshift-pipelines pipeline: params: - name: enableMetrics value: "true" ...
- 添加了 EventListener OpenCensus 指标(在进程级别捕获指标)。
- 触发器现在具有标签选择器;您可以使用标签为事件监听程序配置触发器。
添加了用于注册拦截器的
ClusterInterceptor
自定义资源定义,允许您注册您可以插入的新Interceptor
类型。另外,还会进行以下相关更改:-
在触发器规格中,您可以使用包含
ref
字段的新 API 来配置拦截器来引用集群拦截器。另外,您可以使用params
字段添加传递到拦截器进行处理的参数。 -
捆绑的拦截器 CEL、GitHub、GitLab 和 BitBucket 已迁移。它们使用新的
ClusterInterceptor
自定义资源定义来实施。 -
核心拦截器迁移到新格式,使用旧语法创建的任何新触发器都会自动切换到新的
ref
或params
语法。
-
在触发器规格中,您可以使用包含
-
要在显示日志时禁用任务名称的前缀或步骤,可将
--prefix
选项用于log
命令。 -
要显示特定组件的版本,请使用
tkn version
命令中的新的--component
标志。 -
添加了
tkn hub check-upgrade
命令,其他命令会根据管道版本进行修改。此外,search
命令输出中也会显示目录名称。 -
在
start
命令中添加了对可选工作区的支持。 -
如果
plugins
目录中不存在插件,则会在当前路径中搜索它们。 tkn start [task | clustertask | pipeline]
命令以互动方式启动,并询问params
值,即使指定了默认参数也是如此。若要停止交互式提示,可在调用 命令时传递--use-param-defaults
标志。例如:$ tkn pipeline start build-and-deploy \ -w name=shared-workspace,volumeClaimTemplateFile=https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.15/01_pipeline/03_persistent_volume_claim.yaml \ -p deployment-name=pipelines-vote-api \ -p git-url=https://github.com/openshift/pipelines-vote-api.git \ -p IMAGE=image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/pipelines-vote-api \ --use-param-defaults
-
version
字段在tkn task describe
命令中添加。 -
如果只有一个资源,则会自动选择
TriggerTemplate
或TriggerBinding
或ClusterTriggerBinding
或Eventlistener
等资源的选项会添加到describe
命令中。 -
在
tkn pr describe
命令中添加了跳过的任务部分。 -
添加了对
tkn clustertask logs
的支持。 -
移除
config.yaml
中的 YAML 合并和变量。另外,现在kustomize
和ytt
等工具可以更轻松地使用release.yaml
文件。 - 添加了对包含句点字符(".")的资源名称的支持。
-
PodTemplate
规格中的hostAliases
数组添加到主机名解析的 pod 级别覆盖中。它通过修改/etc/hosts
文件来实现。 -
引入了一个变量
$(tasks.status)
,用于访问任务的聚合执行状态。 - 为 Windows 添加入口点二进制构建。
1.13.3. 已弃用的功能
在
when
表达式中,对写入的字段的支持会被删除。when
表达式仅支持使用小写字母编写的字段。注意如果您在 Tekton Pipelines
v0.16
(Operatorv1.2.x
) 中应用了一个带有when
表达式的管道,则必须重新应用它。当您将 Red Hat OpenShift Pipelines Operator 升级到
v1.5
时,openshift-client
和openshift-client-v-1-5-0
集群任务会具有SCRIPT
参数。但是,ARGS
参数和git
资源会从openshift-client
集群任务的规格中删除。这个变化可能会造成问题,只有在ClusterTask
资源的name
字段中没有特定版本的集群任务才可以无缝地进行升级。要防止管道运行出现问题,在升级后使用
SCRIPT
参数,因为它会将之前在ARGS
参数中指定的值移到集群任务的SCRIPT
参数中。例如:... - name: deploy params: - name: SCRIPT value: oc rollout status <deployment-name> runAfter: - build taskRef: kind: ClusterTask name: openshift-client ...
当您从 Red Hat OpenShift Pipelines Operator
v1.4
升级到v1.5
时,TektonConfig
自定义资源的配置集名称现在会改变。表 1.5. TektonConfig 自定义资源的配置集 Pipelines 1.5 中的配置集 Pipelines 1.4 中的对应的配置集 安装的 Tekton 组件 All (默认配置集)
All (默认配置集)
Pipelines、Triggers、Add-ons
Basic
默认
Pipelines、Triggers
Lite
Basic
Pipelines
注意如果在
TektonConfig
自定义资源的config
实例中使用profile: all
,则不需要更改资源规格。但是,如果安装的 Operator 在升级前是 Default 或 Basic 配置集,则必须在升级后编辑
TektonConfig
自定义资源的config
实例。例如,如果配置在升级前是profile: basic
,请确保在升级到 Pipelines 1.5 后为profile: lite
。disable-home-env-overwrite
和disable-working-dir-overwrite
字段现已弃用,并将在以后的发行版本中删除。在本发行版本中,这些标志的默认值被设置为true
,以便向后兼容。注意在下一个发行版本 (Red Hat OpenShift Pipelines 1.6) 中,
HOME
环境变量不会自动设置为/tekton/home
,对于任务运行的默认工作目录也不会设置为/workspace
。这些默认设置与步骤中镜像 Dockerfile 设置的任何值冲突。-
ServiceType
和podTemplate
字段已从EventListener
spec 中删除。 - 控制器服务帐户不再请求集群范围的权限来列出和监视命名空间。
EventListener
资源的状态有一个名为Ready
的新条件。注意将来,
EventListener
资源的其他状态条件将会被弃用,而使用Ready
状态条件。-
EventListener
响应中的eventListener
和namespace
字段已弃用。现在改为使用eventListenerUID
字段。 replicas
在EventListener
spec 中已被弃用。相反,spec.replicas
字段移到KubernetesResource
spec 中的spec.resources.kubernetesResource.replicas
。注意replicas
字段将在以后的发行版本中删除。-
配置内核拦截器的旧方法已弃用。但是,它会继续正常工作,直到在以后的版本中被删除。现在,
Trigger
资源中的拦截器被配置为使用新的基于ref
和params
的语法。生成的默认 webhook 会自动将旧语法的使用切换为新触发器的新语法。 -
对于
ClusterRoleBinding
资源,使用Userbac.authorization.k8s.io/v1
而不是已弃用的deprecatedrbac.authorization.k8s.io/v1beta1
。 -
在集群角色中,对资源(如
serviceaccounts
、secrets
、configmaps
和limitranges
等)的集群范围的写访问权限已被移除。另外,对资源(如deployments
、statefulsets
和deployment/finalizers
等)的集群范围的访问权限也被移除。 -
Tekton 不再使用
caching.internal.knative.dev
组中的image
自定义资源定义,它已在此发行版本中排除。
1.13.4. 已知问题
git-cli 集群任务使用 alpine/git 基础镜像构建,它预期
/root
作为用户的主目录。但是,这并没有在git-cli
集群任务中显式设置。在 Tekton 中,任务的每个步骤都会使用
/tekton/home
覆盖默认主目录,除非另有指定。这会覆盖基础镜像的$HOME
环境变量,从而导致git-cli
集群任务失败。此问题有望在即将发布的版本中解决。对于 Red Hat OpenShift Pipelines 1.5 及更早的版本,您可以使用以下任一临时解决方案来避免
git-cli
集群任务失败:在步骤中设置
$HOME
环境变量,使其不会被覆盖。-
[可选] 如果您使用 Operator 安装了 Red Hat OpenShift Pipelines,然后将
git-cli
集群任务克隆到一个单独的任务中。此方法可确保 Operator 不会覆盖对集群任务所做的更改。 -
执行
oc edit clustertasks git-cli
命令。 将预期的
HOME
环境变量添加到步骤的 YAML 中:... steps: - name: git env: - name: HOME value: /root image: $(params.BASE_IMAGE) workingDir: $(workspaces.source.path) ...
警告对于 Operator 安装的 Red Hat OpenShift Pipelines,如果您在更改
HOME
环境变量前没有将git-cli
集群任务克隆到单独的任务中,则会在 Operator 协调过程中覆盖更改。
-
[可选] 如果您使用 Operator 安装了 Red Hat OpenShift Pipelines,然后将
禁用在
feature-flags
配置映射中覆盖HOME
环境变量。-
执行
oc edit -n openshift-pipelines configmap feature-flags
命令。 将
disable-home-env-overwrite
标志的值设置为true
。警告- 如果使用 Operator 安装 Red Hat OpenShift Pipelines,则在 Operator 协调过程中会覆盖更改。
-
修改
disable-home-env-overwrite
标志的默认值可能会破坏其他任务和集群任务,因为它会更改所有任务的默认值。
-
执行
为
git-cli
集群任务使用其他服务帐户,因为在使用管道的默认服务帐户时会覆盖HOME
环境变量。- 创建新服务帐户。
- 将您的 Git secret 链接到您刚才创建的服务帐户。
- 在执行任务或管道时使用服务帐户。
-
在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持
s2i-dotnet
集群任务和tkn hub
命令。 -
当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上的任务将失败。作为临时解决方案,您可以通过将
MAVEN_IMAGE
参数值设置为maven:3.6.3-adoptopenjdk-11
来指定自定义镜像。
1.13.5. 修复的问题
-
dag
任务中的when
表达式不允许指定任何其他任务访问执行状态的上下文变量 ($(tasks.<pipelineTask>.status)
)。 -
使用 Owner UID 而不是 Owner 名称,这有助于在
PipelineRun
资源快速删除并重新创建的情况下,避免通过删除volumeClaimTemplate
PVC 创建的竞争条件。 -
为非 root 用户触发的
build-base
镜像添加了pullrequest-init
的新 Dockerfile。 -
当一个管道或任务在运行时使用
-f
选项,且它的定义中的param
中没有定义type
,将生成一个验证错误,而不是管道或任务以静默方式运行失败。 -
对于
tkn start [task | pipeline | clustertask]
命令,--workspace
标记的描述现在一致。 - 在解析参数时,如果遇到空数组,则对应的交互式帮助现在会显示为空字符串。