安装和配置
安装和配置 OpenShift Pipelines
摘要
第 1 章 安装 OpenShift Pipelines
本指南帮助集群管理员了解将 Red Hat OpenShift Pipelines Operator 安装到 OpenShift Container Platform 集群的整个过程。
先决条件
-
可以使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群。 -
已安装了
oc
CLI。 -
您已在本地系统中安装了 OpenShift Pipelines ( tkn
)
CLI。 - 您的集群启用了 Marketplace 功能,或者手动配置 Red Hat Operator 目录源。
在同时具有 Windows 和 Linux 节点的集群中,Red Hat OpenShift Pipelines 只能在 Linux 节点上运行。
1.1. 在 Web 控制台中安装 Red Hat OpenShift Pipelines Operator
您可以使用 OpenShift Container Platform OperatorHub 中列出的 Operator 来安装 Red Hat OpenShift Pipelines。安装 Red Hat OpenShift Pipelines Operator 时,管道配置所需的自定义资源(CR)与 Operator 一起自动安装。
默认 Operator 自定义资源定义(CRD)config.operator.tekton.dev
现在被 tektonconfigs.operator.tekton.dev
替代。另外,Operator 提供以下额外的 CRD 来单独管理 OpenShift Pipelines 组件:tektonpipelines.operator.tekton.dev
、tektontriggers.operator.tekton.dev
和 tektonaddons.operator.tekton.dev
。
如果在集群中安装了 OpenShift Pipelines,现有安装会无缝升级。Operator 会根据需要将集群中的 config.operator.tekton.dev
实例替换为 tektonconfigs.operator.tekton.dev
实例,以及其它 CRD 的额外对象。
如果您手动更改现有安装,例如,在 config.operator.tekton.dev
CRD 实例中修改了目标命名空间(更改了 resource name - cluster
的项),则升级过程将不会非常流畅。在这种情况下,推荐的工作流是,先卸载安装,然后再重新安装 Red Hat OpenShift Pipelines Operator。
Red Hat OpenShift Pipelines Operator 现在提供选择您要安装的组件的选项,方法是将配置集指定为 TektonConfig
自定义资源 (CR) 的一部分。在安装 Operator 时会自动安装 TektonConfig
CR。支持的配置集有:
- Lite:此配置集只安装 Tekton Pipelines。
- Basic:此配置集安装 Tekton Pipelines、Tekton Triggers、Tekton Chains 和 Tekton Results。
-
All:在安装了
TektonConfig
CR 时,使用的默认配置集。此配置集安装所有 Tekton 组件,包括 Tekton Pipelines、Tekton Triggers、Tekton Chains、Tekton Results、Pipelines as Code 和 Tekton Addons。Tekton Addons 包括ClusterTriggerBindings
、ConsoleCLIDownload
、ConsoleQuickStart
和ConsoleYAMLSample
资源,以及使用openshift-pipelines
命名空间中的集群解析器可用的任务和步骤操作定义。
流程
- 在控制台的 Administrator 视角中,导航到 Operators → OperatorHub。
-
使用 Filter by keyword 复选框在目录中搜索
Red Hat OpenShift Pipelines
Operator。点 Red Hat OpenShift Pipelines Operator 标题。 - 参阅 Red Hat OpenShift Pipelines Operator 页中有关 Operator 的简单描述。点 Install。
在 Install Operator 页面中:
-
为 Installation Mode 选择 All namespaces on the cluster (default)。选择该项会将 Operator 安装至默认
openshift-operators
命名空间,这将启用 Operator 以进行监视并在集群中的所有命名空间中可用。 - 为 Approval Strategy 选择 Automatic。这样可确保以后对 Operator 的升级由 Operator Lifecycle Manager (OLM) 自动进行。如果您选择 Manual 批准策略,OLM 会创建一个更新请求。作为集群管理员,您必须手动批准 OLM 更新请求,才可将 Operator 更新至新版本。
选择一个 Update Channel。
-
latest
频道启用 Red Hat OpenShift Pipelines Operator 最新稳定版本的安装。目前,这是安装 Red Hat OpenShift Pipelines Operator 的默认频道。 要安装 Red Hat OpenShift Pipelines Operator 的特定版本,集群管理员可以使用对应的
pipelines-<version>
频道。例如,要安装 Red Hat OpenShift Pipelines Operator 版本1.8.x
,您可以使用pipelines-1.8
频道。注意从 OpenShift Container Platform 4.11 开始,用于安装和升级 Red Hat OpenShift Pipelines Operator 的
preview
和stable
频道不可用。但是,在 OpenShift Container Platform 4.10 及更早的版本中,您可以使用preview
和stable
频道来安装和升级 Operator。
-
-
为 Installation Mode 选择 All namespaces on the cluster (default)。选择该项会将 Operator 安装至默认
点 Install。您会看到 Installed Operators 页面中列出的 Operator。
注意Operator 会自动安装到
openshift-operators
命名空间中。检查 Status 是否已被设置为 Succeeded Up to date 来确认 Red Hat OpenShift Pipelines Operator 已安装成功。
警告即使其他组件的安装正在进行中,成功状态也可能会显示为 Succeeded Up to date。因此,在终端中手动验证安装非常重要。
验证 Red Hat OpenShift Pipelines Operator 的所有组件都已成功安装。在终端中登录到集群,并运行以下命令:
Copy to clipboardCopied$ oc get tektonconfig config
输出示例
Copy to clipboardCopiedNAME VERSION READY REASON config 1.18.0 True
如果 READY 条件为 True,则代表 Operator 及其组件已被成功安装。
另外,运行以下命令来检查组件版本:
Copy to clipboardCopied$ oc get tektonpipeline,tektontrigger,tektonchain,tektonaddon,pac
输出示例
NAME VERSION READY REASON tektonpipeline.operator.tekton.dev/pipeline v0.47.0 True NAME VERSION READY REASON tektontrigger.operator.tekton.dev/trigger v0.23.1 True NAME VERSION READY REASON tektonchain.operator.tekton.dev/chain v0.16.0 True NAME VERSION READY REASON tektonaddon.operator.tekton.dev/addon 1.11.0 True NAME VERSION READY REASON openshiftpipelinesascode.operator.tekton.dev/pipelines-as-code v0.19.0 True
1.2. 使用 CLI 安装 OpenShift Pipelines Operator
您可以使用命令行界面(CLI)从 OperatorHub 安装 Red Hat OpenShift Pipelines Operator。
流程
创建一个
Subscription
对象 YAML 文件,以便为 Red Hat OpenShift Pipelines Operator 订阅一个命名空间,如sub.yaml
:Subscription
YAML 示例
Copy to clipboardCopiedapiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-pipelines-operator namespace: openshift-operators spec: channel: <channel_name> 1 name: openshift-pipelines-operator-rh 2 source: redhat-operators 3 sourceNamespace: openshift-marketplace 4
运行以下命令来创建
Subscription
对象:
Copy to clipboardCopied$ oc apply -f sub.yaml
订阅会将 Red Hat OpenShift Pipelines Operator 安装到
openshift-operators
命名空间中。Operator 会自动将 OpenShift Pipelines 安装到默认的openshift-pipelines
目标命名空间中。
1.3. 在受限环境中的 Red Hat OpenShift Pipelines Operator
Red Hat OpenShift Pipelines Operator 支持在受限网络环境中安装管道。
Operator 会安装代理 Webhook,它会根据 cluster
代理对象在由 tekton-controllers 创建的 pod 容器中设置代理环境变量。它还会在 TektonPipelines
、TektonTriggers
、Controllers
、Webhooks
和 Operator Proxy Webhook
资源中设置代理环境变量。
默认情况下,openshift-pipelines
命名空间禁用代理 Webhook。要为任何其他命名空间禁用它,您可以在 namespace
对象中添加 operator.tekton.dev/disable-proxy: true
标签。
1.4. 其他资源
- 您可以参阅将 Operators 添加到集群一节中的内容来了解更多有关在 OpenShift Container Platform 上安装 Operator 的信息。
- 要配置 Tekton 链,请参阅为 Red Hat OpenShift Pipelines 提供链安全 使用 Tekton 链。
- 要配置 Tekton 结果,请参阅为 OpenShift Pipelines 可观察性使用 Tekton 结果。
- 要安装和部署 in-cluster Tekton Hub,请参阅 使用带有 Red Hat OpenShift Pipelines 的 Tekton Hub。
有关在受限环境中使用 OpenShift Pipelines 的更多信息,请参阅:
第 2 章 卸载 OpenShift Pipelines
集群管理员可以通过执行以下步骤卸载 Red Hat OpenShift Pipelines Operator:
删除可选组件(
TektonHub
和TektonResult
)的自定义资源(CR) (如果这些 CR 存在),然后删除TektonConfig
CR。小心如果在不删除可选组件的 CR 的情况下卸载 Operator,则无法在以后删除组件。
- 卸载 Red Hat OpenShift Pipelines Operator。
-
删除
operator.tekton.dev
组的自定义资源定义(CRD)。
安装 Operator 时,仅卸载 Operator 不会删除默认创建的 Red Hat OpenShift Pipelines 组件。
2.1. 删除 OpenShift Pipelines 自定义资源
如果存在可选组件( TektonHub
和 TektonResult
)的自定义资源(CR),请删除这些 CR。然后删除 TektonConfig
CR。
流程
- 在 Web 控制台的 Administrator 视角中,进入到 Administration → CustomResourceDefinitions。
-
在 Filter by name 字段中键入
TektonHub
以搜索TektonHub
自定义资源定义(CRD)。 -
点
TektonHub
CRD 的名称,以显示 CRD 的详情页面。 -
单击
实例选项卡
。 -
如果显示实例,点显示的实例的 Options 菜单
。
- 选择 Delete TektonHub。
- 点 Delete 以确认删除 CR。
-
重复这些步骤,在 Filter by name 框中搜索
TektonResult
,然后搜索TektonConfig
。如果为这些 CRD 找到任何实例,请删除这些实例。
删除 CR 也会删除 Red Hat OpenShift Pipelines 组件以及集群中的所有任务和管道。
如果您在不删除 TektonHub
和 TektonResult
CR 的情况下卸载 Operator,则无法在以后删除 Tekton Hub 和 Tekton Results 组件。
2.2. 卸载 Red Hat OpenShift Pipelines Operator
您可以使用 web 控制台中的 Administrator 视角卸载 Red Hat OpenShift Pipelines Operator。
流程
- 在 Operators → OperatorHub 页面中,使用 Filter by keyword 复选框来搜索 Red Hat OpenShift Pipelines Operator。
- 点 Red Hat OpenShift Pipelines Operator 标题。Operator 标题表示已安装 Operator。
- 在 Red Hat OpenShift Pipelines Operator 描述页面中,点 Uninstall。
- 在 Uninstall Operator? 窗口中,为这个 operator 选择 Delete all operand 实例,然后点 Uninstall。
卸载 OpenShift Pipelines Operator 时,安装 OpenShift Pipelines 的 openshift-pipelines
目标命名空间中的所有资源都将丢失,包括您配置的 secret。
2.3. 删除 operator.tekton.dev
组的自定义资源定义
删除 operator.tekton.dev
组的自定义资源定义(CRD)。这些 CRD 会在安装 Red Hat OpenShift Pipelines Operator 的过程中默认创建。
流程
- 在 Web 控制台的 Administrator 视角中,进入到 Administration → CustomResourceDefinitions。
-
在 Filter by name 框中键入
operator.tekton.dev
来搜索operator.tekton.dev
组中的 CRD。 要删除每个显示的 CRD,请完成以下步骤:
-
点 Options 菜单
。
- 选择 Delete CustomResourceDefinition。
- 点 Delete 以确认删除 CRD。
-
点 Options 菜单
其他资源
- 您可以参阅从集群中卸载 Operators一节中的内容来了解更多有关从 OpenShift Container Platform 上卸载 Operator 的信息。
第 3 章 在 TektonConfig 自定义资源中自定义配置
在 Red Hat OpenShift Pipelines 中,您可以使用 TektonConfig
自定义资源 (CR) 自定义以下配置:
- 优化 OpenShift Pipelines 性能,包括 OpenShift Pipelines 控制器的高可用性模式
- 配置 Red Hat OpenShift Pipelines control plane
- 更改默认服务帐户
- 禁用服务监控器
- 配置管道解析器
- 禁用管道模板
- 禁用 Tekton Hub 的集成
- 禁用自动创建 RBAC 资源
- 修剪任务运行和管道运行
3.1. 先决条件
- 已安装 Red Hat OpenShift Pipelines Operator。
3.2. 使用 TektonConfig CR 进行性能调优
您可以修改 TektonConfig
自定义资源 (CR) 中的 .spec.pipeline.performance
参数下的字段,以更改 OpenShift Pipelines 控制器的高可用性 (HA) 支持和性能配置。
TektonConfig 性能字段示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
pipeline:
performance:
disable-ha: false
buckets: 7
replicas: 5
threads-per-controller: 2
kube-api-qps: 5.0
kube-api-burst: 10
Copy to clipboardCopied
所有字段都是可选的。如果设置它们,Red Hat OpenShift Pipelines Operator 会在 openshift-pipelines-controller
容器下的 openshift-pipelines-controller
部署中包含大多数字段作为参数。OpenShift Pipelines Operator 还更新 openshift-pipelines
命名空间下的 config-leader-election
配置映射中的 bucket
字段。
如果没有指定值,OpenShift Pipelines Operator 不会更新这些字段,并应用 OpenShift Pipelines 控制器的默认值。
如果您修改或删除任何性能字段,OpenShift Pipelines Operator 会更新 openshift-pipelines-controller
部署和 config-leader-election
配置映射(如果 bucket
字段已更改),并重新创建 openshift-pipelines-controller
pod。
高可用性(HA)模式适用于 OpenShift Pipelines 控制器,它根据管道运行和任务运行定义创建并启动 pod。如果没有 HA 模式,单个 pod 会执行这些操作,可能会导致高负载出现大量延迟。
在 HA 模式中,OpenShift Pipelines 使用几个 pod (副本)来执行这些操作。最初,OpenShift Pipelines 将每个控制器操作分配到存储桶中。每个副本从一个或多个存储桶中选择操作。如果两个副本可以同时选择同一操作,控制器内部决定执行此操作的 领导。
HA 模式不会影响创建 pod 后运行的任务。
Name | 描述 | OpenShift Pipelines 控制器的默认值 |
---|---|---|
| 启用或禁用高可用性(HA)模式。默认情况下启用 HA 模式。 |
|
|
在 HA 模式中,用于处理控制器操作的存储桶数量。最大值为 |
|
|
在 HA 模式中,为处理控制器操作创建的 pod 数量。将此值设置为与 |
|
| 处理 OpenShift Pipelines 控制器的工作队列时要使用的线程数量 (worker) 数量。 |
|
| 从 REST 客户端到集群 master 的最大每秒查询数 (QPS)。 |
|
| 节流的最大突发。 |
|
OpenShift Pipelines Operator 不控制 OpenShift Pipelines 控制器的副本数。部署的 replicas
设置决定了副本数。例如,要将副本数改为 3,请输入以下命令:
$ oc --namespace openshift-pipelines scale deployment openshift-pipelines-controller --replicas=3
Copy to clipboardCopied
在 OpenShift Pipelines 控制器中,kube-api-qps
和 kube-api-burst
字段会乘以 2。例如,如果 kube-api-qps
和 kube-api-burst
值为 10
,则实际的 QPS 和 burst 值将变为 20
。
3.3. 配置 Red Hat OpenShift Pipelines control plane
您可以通过编辑 TektonConfig
自定义资源 (CR) 中的配置字段来自定义 OpenShift Pipelines control plane。Red Hat OpenShift Pipelines Operator 会自动使用默认值添加配置字段,以便您可以使用 OpenShift Pipelines control plane。
流程
- 在 Web 控制台的 Administrator 视角中,进入到 Administration → CustomResourceDefinitions。
-
使用 Search by name 复选框搜索
tektonconfigs.operator.tekton.dev
自定义资源定义 (CRD)。点 TektonConfig 查看 CRD 详情页面。 - 点 实例 选项卡。
-
点 config 实例查看
TektonConfig
CR 详情。 - 点 YAML 标签。
根据您的要求编辑
TektonConfig
YAML 文件。带有默认值的
TektonConfig
CR 示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: running-in-environment-with-injected-sidecars: true metrics.taskrun.duration-type: histogram metrics.pipelinerun.duration-type: histogram await-sidecar-readiness: true params: - name: enableMetrics value: 'true' default-service-account: pipeline require-git-ssh-secret-known-hosts: false enable-tekton-oci-bundles: false metrics.taskrun.level: task metrics.pipelinerun.level: pipeline enable-api-fields: stable enable-provenance-in-status: false enable-custom-tasks: true disable-creds-init: false disable-affinity-assistant: true
3.3.1. 带有默认值的可修改字段
以下列表包含 TektonConfig
CR 中所有可修改字段的默认值:
running-in-environment-with-injected-sidecars
(默认为true
):如果管道在不使用注入的 sidecar 的集群中运行的管道(如 Istio)将此字段设置为false
。将它设置为false
可缩短管道运行启动所需的时间。注意对于使用注入的 sidecar 的集群,将此字段设置为
false
可能会导致意外行为。-
await-sidecar-readiness
(默认:true
): 将此字段设置为false
以阻止 OpenShift Pipelines 在开始操作前等待TaskRun
sidecar 容器运行。这允许在不支持downwardAPI
卷类型的环境中运行任务。 -
default-service-account
(默认:pipeline
):此字段包含用于TaskRun
和PipelineRun
资源的默认服务帐户名称,如果没有指定。 require-git-ssh-secret-known-hosts
(默认为false
):将此字段设置为true
需要任何 Git SSH secret 都必须包含known_hosts
字段。- 有关配置 Git SSH secret 的更多信息,请参阅附加资源部分中的为 Git 配置 SSH 身份验证。
-
enable-tekton-oci-bundles
(默认:false
): 将此字段设置为true
以启用名为 Tekton OCI 捆绑包的实验性 alpha 功能。 enable-api-fields
(默认:stable
):设置此字段决定启用哪些功能。可接受的值为stable
、beta
或alpha
。注意Red Hat OpenShift Pipelines 不支持
alpha
值。-
enable-provenance-in-status
(默认:false
):将此字段设置为true
以启用TaskRun
和PipelineRun
状态中的provenance
字段。provenance
字段包含有关任务运行和管道运行中使用的资源的元数据,如从中获取远程任务或管道定义的源。 -
enable-custom-tasks
(默认为true
):将此字段设置为false
,以禁用管道中的自定义任务。 -
disable-creds-init
(默认为false
):将此字段设置为true
,以防止 OpenShift Pipelines 扫描附加的服务帐户并将任何凭证注入步骤。 -
disable-affinity-assistant
(默认为true
):将此字段设置为false
,为每个共享持久性卷声明工作区的TaskRun
资源启用关联性协助功能。
指标选项
您可以在 TektonConfig
CR 中修改以下 metrics 字段的默认值:
-
metrics.taskrun.duration-type
和metrics.pipelinerun.duration-type
(默认:histogram
):设置这些字段决定了任务或管道运行的持续时间类型。可接受的值是gauge
或histogram
。 -
metrics.taskrun.level
(默认:task
):此字段决定了任务运行指标的级别。可接受的值为taskrun
,task
, 或namespace
。 -
metrics.pipelinerun.level
(默认为pipeline
):此字段决定了管道运行指标的级别。可接受的值为pipelinerun
、pipeline
或namespace
。
3.3.2. 可选的配置字段
以下字段没有默认值,只有在配置它们时才会考虑它们。默认情况下,Operator 不会在 TektonConfig
自定义资源 (CR) 中添加和配置这些字段。
-
default-timeout-minutes
:此字段为TaskRun
和PipelineRun
资源设置默认超时时间(如果没有在创建它们时指定)。如果任务运行或管道运行需要的时间超过其执行设置的分钟数,则任务运行或管道运行会超时并取消。例如,default-timeout-minutes: 60
代表将默认值设为 60 分钟。 -
default-managed-by-label-value
:此字段包含提供给app.kubernetes.io/managed-by
标签的默认值,如果未指定,它被应用到所有TaskRun
pod。例如,default-managed-by-label-value: tekton-pipelines
。 -
default-pod-template
:此字段设置默认TaskRun
和PipelineRun
pod 模板(如果没有指定)。 -
default-cloud-events-sink
:此字段设置TaskRun
和PipelineRun
资源的默认CloudEvents
sink(如果未指定)。 -
default-task-run-workspace-binding
:此字段包含Task
资源已声明,但TaskRun
资源没有明确声明的工作区的默认工作区配置。 -
default-affinity-assistant-pod-template
:此字段设置用于关联性助手 pod 的默认PipelineRun
pod 模板(如果没有指定)。 -
default-max-matrix-combinations-count
:此字段包含从列表中生成的默认最大组合数(如果未指定)。
3.4. 更改 OpenShift Pipelines 的默认服务帐户
您可以通过编辑 .spec.pipeline
和 .spec.trigger
规格中的 default-service-account
字段来更改 OpenShift Pipelines 的默认服务帐户。默认服务帐户名称为 pipeline
。
Example
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
pipeline:
default-service-account: pipeline
trigger:
default-service-account: pipeline
enable-api-fields: stable
Copy to clipboardCopied3.5. 为 OpenShift Pipelines 安装命名空间设置标签和注解
您可以为 openshift-pipelines
命名空间设置标签和注解,其中 Operator 安装 OpenShift Pipelines。
不支持更改 openshift-pipelines
命名空间的名称。
通过将标签和注解添加到 TektonConfig
自定义资源(CR)的 spec.targetNamespaceMetadata
规格中来指定标签和注解。
为 openshift-pipelines
命名空间设置标签和注解示例
apiVersion: operator.tekton.dev/v1
kind: TektonConfig
metadata:
name: config
spec:
targetNamespaceMetadata:
labels: {"example-label":"example-value"}
annotations: {"example-annotation":"example-value"}
Copy to clipboardCopied3.6. 为管道控制器设置重新同步周期
您可以为管道控制器配置重新同步周期。每次重新同步周期后,控制器会协调所有管道运行和任务运行,而不考虑事件。
默认重新同步周期为 10 小时。如果您有大量管道运行和任务运行,每 10 小时进行完全协调可能会消耗太多资源。在这种情况下,您可以配置较长的重新同步周期。
先决条件
-
使用
cluster-admin
权限登录到 OpenShift Container Platform 集群。
流程
在
TektonConfig
自定义资源中,为管道控制器配置重新同步周期,如下例所示。Example
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: options: deployments: tekton-pipelines-controller: spec: template: spec: containers: - name: tekton-pipelines-controller args: - "-resync-period=24h" 1
- 1
- 这个示例将重新同步周期设置为 24 小时。
3.7. 禁用服务监控器
您可以禁用作为 OpenShift Pipelines 一部分的服务监控器,以公开遥测数据。要禁用服务监控器,请在 TektonConfig
自定义资源 (CR) 的 .spec.pipeline
规格中将 enableMetrics
参数设置为 false
:
Example
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
pipeline:
params:
- name: enableMetrics
value: 'false'
Copy to clipboardCopied3.8. 配置管道解析器
您可以在 TektonConfig
自定义资源 (CR) 中配置管道解析器。您可以启用或禁用这些管道解析器:
-
enable-bundles-resolver
-
enable-cluster-resolver
-
enable-git-resolver
-
enable-hub-resolver
Example
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
pipeline:
enable-bundles-resolver: true
enable-cluster-resolver: true
enable-git-resolver: true
enable-hub-resolver: true
Copy to clipboardCopied
您还可以在 TektonConfig
CR 中提供特定于解析器的配置。例如,以 map[string]string
格式定义以下字段来为每个管道解析器设置配置:
Example
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
pipeline:
bundles-resolver-config:
default-service-account: pipelines
cluster-resolver-config:
default-namespace: test
git-resolver-config:
server-url: localhost.com
hub-resolver-config:
default-tekton-hub-catalog: tekton
Copy to clipboardCopied3.9. 禁用解析器任务和管道模板
默认情况下,TektonAddon
自定义资源(CR)会在集群中安装 resolverTasks
和 pipelineTemplates
资源,以及集群中的 OpenShift Pipelines。
您可以通过在 .spec.addon
规格中将参数值设置为 false
来禁用解析器任务和管道模板的安装。
流程
运行以下命令来编辑
TektonConfig
CR:
Copy to clipboardCopied$ oc edit TektonConfig config
在
TektonConfig
CR 中,将.addon.params
spec 中的resolverTasks
和pipelineTemplates
参数值设置为false
:禁用解析器任务和管道模板资源的示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... addon: params: - name: resolverTasks value: 'false' - name: pipelineTemplates value: 'false' # ...
重要只有在
resolverTasks
参数的值为true
时,才可将pipelinesTemplates
参数的值设置为true
。
3.10. 禁用 Tekton Hub 的集成
您可以通过在 TektonConfig
自定义资源 (CR) 中将 enable-devconsole-integration
参数设置为 false
来禁用 web 控制台 Developer 视角中的 Tekton Hub 集成。
禁用 Tekton Hub 示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
hub:
params:
- name: enable-devconsole-integration
value: false
Copy to clipboardCopied3.11. 禁用自动创建 RBAC 资源
Red Hat OpenShift Pipelines Operator 的默认安装会为集群中的所有命名空间创建多个基于角色的访问控制(RBAC)资源,但与 ^(openshift|kube)-*
正则表达式模式匹配的命名空间除外。在这些 RBAC 资源中,pipelines-scc-rolebinding
安全性上下文约束(SCC)角色绑定资源是一个潜在的安全问题,因为关联的 pipelines-scc
SCC 具有 RunAsAny
特权。
要在安装 Red Hat OpenShift Pipelines Operator 后禁用集群范围的 RBAC 资源,集群管理员可在集群级 TektonConfig
自定义资源(CR)中将 createRbacResource
参数设置为 false
。
流程
运行以下命令来编辑
TektonConfig
CR:
Copy to clipboardCopied$ oc edit TektonConfig config
-
在
TektonConfig
CR 中,将createRbacResource
param 设置为false
:
TektonConfig
CR 示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
params:
- name: createRbacResource
value: "false"
# ...
Copy to clipboardCopied3.12. 禁用管道和任务的内联规格
默认情况下,OpenShift Pipelines 支持以下管道和任务的内联规格:
您可以创建一个
Pipeline
CR,其中包含一个或多个任务规格,如下例所示:Pipeline
CR 中的内联规格示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: Pipeline metadata: name: pipelineInline spec: tasks: taskSpec: # ...
您可以创建一个
PipelineRun
自定义资源(CR),其中包含管道规格,如下例所示:PipelineRun
CR 中的内联规格示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: PipelineRun metadata: name: pipelineRunInline spec: pipelineSpec: tasks: # ...
您可以创建一个包含任务规格的
TaskRun
自定义资源(CR),如下例所示:TaskRun
CR 中的内联规格示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: TaskRun metadata: name: taskRunInline spec: taskSpec: steps: # ...
您可以在某些或所有情况下禁用内联规格。要禁用内联规格,请设置 TektonConfig
CR 的 . spec.pipeline 规格的
disable-inline-spec
字段,如下例所示:
禁用内联规格的配置示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
pipeline:
disable-inline-spec: "pipeline,pipelinerun,taskrun"
# ...
Copy to clipboardCopied
您可以将 disable-inline-spec
参数设置为任何单个值,或以逗号分隔的多个值列表。参数的值是有效的:
value | 描述 |
---|---|
|
您不能使用 |
|
您不能使用 |
|
您不能使用 |
3.13. 自动修剪任务运行和管道运行
过时的 TaskRun
和 PipelineRun
对象及其执行的实例占用了可用于活跃运行的物理资源。为了获得最佳性能,Red Hat OpenShift Pipelines 提供了一个修剪器组件,它会自动删除各种命名空间中未使用的对象及其实例。
您可以使用 TektonConfig
自定义资源并使用命名空间注解修改命名空间的配置,为整个安装配置修剪器。但是,您无法选择性地自动修剪命名空间中的单个任务运行或管道运行。
3.13.1. 配置修剪器
您可以使用 TektonConfig
自定义资源配置定期修剪与管道运行和任务运行关联的资源。
以下示例与默认配置对应:
修剪器配置示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
# ...
spec:
pruner:
resources:
- taskrun
- pipelinerun
keep: 100
prune-per-resource: false
schedule: "* 8 * * *"
startingDeadlineSeconds: 60
# ...
Copy to clipboardCopied参数 | 描述 |
---|---|
| 运行修剪器进程的 Cron 调度。默认调度每天 08:00 运行进程。如需有关 Cron schedule 语法的更多信息,请参阅 Kubernetes 文档中的 Cron schedule 语法。 |
|
修剪器应用到的资源类型。可用的资源类型为 |
| 要保留的每个类型的最新资源数量。 |
|
如果设置为
如果设置为 |
|
保存资源的最长时间,以分钟为单位。例如,若要保留在五天内创建的资源,请将 |
| 这个参数是可选的。如果因任何原因而在调度时间没有启动修剪器作业,此设置将配置持续启动任务的最长时间,以秒为单位。如果作业没有在指定时间内启动,OpenShift Pipelines 会考虑这个作业失败,并在下一次调度的时间启动修剪器。如果没有指定此参数,且修剪器作业不会在调度的时间启动,OpenShift Pipelines 会尝试稍后启动作业。 |
keep
和 keep-since
参数是互斥的。在您的配置中只使用其中之一。
3.13.2. 自动修剪任务运行和管道运行的注解
要修改在命名空间中运行和管道运行的配置,您可以在命名空间中设置注解。
以下命名空间注解的含义与 TektonConfig
自定义资源中的对应键相同:
-
operator.tekton.dev/prune.schedule
-
operator.tekton.dev/prune.resources
-
operator.tekton.dev/prune.keep
-
operator.tekton.dev/prune.prune-per-resource
-
operator.tekton.dev/prune.keep-since
operator.tekton.dev/prune.resources
注解接受以逗号分隔的列表。要修剪任务运行和管道运行,请将此注解设置为 "taskrun, pipelinerun"
。
可用的额外命名空间注解如下:
-
operator.tekton.dev/prune.skip
:设置为true
时,配置注解的命名空间不会被修剪。 -
operator.tekton.dev/prune.strategy
:将此注解的值设置为keep
或keep-since
。
例如,以下注解会保留在最后 5 天中创建的所有任务运行和管道运行,并删除旧的资源:
auto-pruning 注解示例
kind: Namespace
apiVersion: v1
# ...
metadata:
annotations:
operator.tekton.dev/prune.resources: "taskrun, pipelinerun"
operator.tekton.dev/prune.keep-since: 7200
# ...
Copy to clipboardCopied3.14. 为 Webhook 设置其他选项
另外,您可以为 OpenShift Pipelines 中几个控制器创建的 webhook 设置 failurePolicy
、timeoutSeconds
或 sideEffects
选项。有关这些选项的更多信息,请参阅 Kubernetes 文档。
先决条件
-
已安装
oc
命令行工具。 -
您使用安装 OpenShift Pipelines 的命名空间的管理员权限登录到 OpenShift Container Platform 集群,通常是
openshift-pipelines
命名空间。
流程
查看 OpenShift Pipelines 控制器创建的 webhook 列表。Webhook 有两种类型:变异 Webhook 和验证 Webhook。
要查看变异 Webhook 列表,请输入以下命令:
Copy to clipboardCopied$ oc get MutatingWebhookConfiguration
输出示例
Copy to clipboardCopiedNAME WEBHOOKS AGE annotation.operator.tekton.dev 1 4m20s proxy.operator.tekton.dev 1 4m20s webhook.operator.tekton.dev 1 4m22s webhook.pipeline.tekton.dev 1 4m20s webhook.triggers.tekton.dev 1 3m50s
要查看验证 Webhook 列表,请输入以下命令:
Copy to clipboardCopied$ oc get ValidatingWebhookConfiguration
输出示例
Copy to clipboardCopiedNAME WEBHOOKS AGE config.webhook.operator.tekton.dev 1 4m24s config.webhook.pipeline.tekton.dev 1 4m22s config.webhook.triggers.tekton.dev 1 3m52s namespace.operator.tekton.dev 1 4m22s validation.pipelinesascode.tekton.dev 1 2m49s validation.webhook.operator.tekton.dev 1 4m24s validation.webhook.pipeline.tekton.dev 1 4m22s validation.webhook.triggers.tekton.dev 1 3m52s
在
TektonConfig
自定义资源(CR)中,根据需要为每个控制器添加变异并验证 Webhook 的配置,如下例所示。将validation.webhook.pipeline.tekton.dev
spec 用于验证 webhook,将webhook.pipeline.tekton.dev
spec 用于变异 Webhook。重要-
您无法为 Operator Webhook
设置配置
。 -
所有设置都是可选的。例如,您可以设置
timeoutSeconds
参数,并省略failurePolicy
和sideEffects
参数。
Pipelines 控制器的设置示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: TektonConfig metadata: name: config spec: pipeline: options: webhookConfigurationOptions: validation.webhook.pipeline.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None webhook.pipeline.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None
Triggers 控制器的设置示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: TektonConfig metadata: name: config spec: triggers: options: webhookConfigurationOptions: validation.webhook.triggers.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None webhook.triggers.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None
Pipelines as Code 控制器的设置示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: TektonConfig metadata: name: config spec: pipelinesAsCode: options: webhookConfigurationOptions: validation.pipelinesascode.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None pipelines.triggers.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None
Tekton Hub 控制器的设置示例
Copy to clipboardCopiedapiVersion: operator.tekton.dev/v1 kind: TektonConfig metadata: name: config spec: hub: options: webhookConfigurationOptions: validation.webhook.hub.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None webhook.hub.tekton.dev: failurePolicy: Fail timeoutSeconds: 20 sideEffects: None
-
您无法为 Operator Webhook