4.10. 在 TektonConfig 自定义资源中自定义配置
在 Red Hat OpenShift Pipelines 中,您可以使用 TektonConfig
自定义资源 (CR) 自定义以下配置:
- 配置 Red Hat OpenShift Pipelines control plane
- 更改默认服务帐户
- 禁用服务监控器
- 禁用集群任务和管道模板
- 禁用 Tekton Hub 的集成
- 禁用自动创建 RBAC 资源
- 修剪任务运行和管道运行
4.10.1. 先决条件
- 已安装 Red Hat OpenShift Pipelines Operator。
4.10.2. 配置 Red Hat OpenShift Pipelines control plane
您可以通过编辑 TektonConfig
自定义资源 (CR) 中的配置字段来自定义 Pipelines control plane。Red Hat OpenShift Pipelines Operator 会自动使用默认值添加配置字段,以便您可以使用 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 示例apiVersion: 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 embedded-status: both enable-api-fields: stable enable-provenance-in-status: false enable-custom-tasks: true disable-creds-init: false disable-affinity-assistant: true
4.10.2.1. 带有默认值的可修改字段
以下列表包含 TektonConfig
CR 中所有可修改字段的默认值:
running-in-environment-with-injected-sidecars
(默认为true
):如果管道在不使用注入的 sidecar 的集群中运行的管道(如 Istio)将此字段设置为false
。将它设置为false
可缩短管道运行启动所需的时间。注意对于使用注入的 sidecar 的集群,将此字段设置为
false
可能会导致意外行为。-
await-sidecar-readiness
(默认:true
): 将此字段设置为false
以阻止 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 功能。 embedded-status
(默认为both
):此字段有三个可接受值:-
full
: 启用在PipelineRun
状态中嵌入的所有Run
和TaskRun
状态 -
minimal
:使用名称、类型和 API 版本等信息为 'PipelineRun' 状态中的每个运行和任务运行生成ChildReferences
字段的信息。 both
: 引用full
和minimal
两者的值注意embedded-status
字段已弃用,并将在以后的发行版本中删除。另外,管道默认嵌入状态将改为minimal
。
-
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
,以防止 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
。
4.10.2.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
:此字段包含从列表中生成的默认最大组合数(如果未指定)。
4.10.3. 更改 Pipelines 的默认服务帐户
您可以通过编辑 .spec.pipeline
和 .spec.trigger
规格中的 default-service-account
字段来更改 Pipelines 的默认服务帐户。默认服务帐户名称为 pipeline
。
示例
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
4.10.4. 禁用服务监控器
您可以禁用作为 Pipelines 一部分的服务监控器,以公开遥测数据。要禁用服务监控器,请在 TektonConfig
自定义资源 (CR) 的 .spec.pipeline
规格中将 enableMetrics
参数设置为 false
:
示例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: params: - name: enableMetrics value: 'false'
4.10.5. 禁用集群任务和管道模板
默认情况下,TektonAddon
自定义资源 (CR) 在集群中安装 clusterTasks
和 pipelineTemplates
资源,以及集群中的 Pipelines。
您可以通过在 .spec.addon
规格中将参数值设置为 false
来禁用 clusterTasks
和 pipelineTemplates
资源的安装。另外,您可以禁用 communityClusterTasks
参数。
示例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: addon: params: - name: clusterTasks value: 'false' - name: pipelineTemplates value: 'false' - name: communityClusterTasks value: 'true'
4.10.6. 禁用 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
4.10.7. 禁用自动创建 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 示例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: params: - name: createRbacResource value: "false" ...
作为集群管理员或具有适当权限的用户,当您为所有命名空间禁用自动创建 RBAC 资源时,默认的 ClusterTask
资源无法正常工作。要使 ClusterTask
资源正常工作,您必须手动为每个预期的命名空间创建 RBAC 资源。
4.10.8. 自动修剪任务运行和管道运行
过时的 TaskRun
和 PipelineRun
对象及其执行的实例占用了可用于活跃运行的物理资源。为了优化这些资源,Red Hat OpenShift Pipelines 提供了注解,集群管理员可以使用它们来自动修剪不同命名空间中未使用的对象及其实例。
通过指定注解配置自动修剪会影响整个命名空间。您不能选择性地自动修剪一个命名空间中的单个任务运行或管道运行。
4.10.8.1. 自动修剪任务运行和管道运行的注解
要自动修剪任务运行和管道运行,您可以在命名空间中创建以下注解:
-
operator.tekton.dev/prune.schedule
:如果此注解的值与TektonConfig
自定义资源定义中指定的值不同,则会在该命名空间中创建新的 cron 作业。 -
operator.tekton.dev/prune.skip
:设置为true
时,配置它的命名空间不会被修剪。 -
operator.tekton.dev/prune.resources
:此注解接受以逗号分隔的资源列表。要修剪单一资源,如管道运行,将此注解设置为"pipelinerun"
。要修剪多个资源,如任务运行和管道运行,将此注解设置为"taskrun, pipelinerun"
。 -
operator.tekton.dev/prune.keep
:使用此注解保留资源而不进行修剪。 operator.tekton.dev/prune.keep-since
:使用此注解来根据其存在的时间来保留资源。此注解的值必须等于资源的年龄(以分钟为单位)。例如,若要保留在五天内创建的资源,请将keep-since
设置为7200
。注意keep
和keep-since
注释是互斥的。对于任何资源,您只能配置其中一个。-
operator.tekton.dev/prune.strategy
:将此注解的值设置为keep
或keep-since
。
例如,请考虑以下注解,这些注解会保留在最后五天中创建的所有任务运行和管道运行,并删除旧的资源:
auto-pruning 注解示例
... annotations: operator.tekton.dev/prune.resources: "taskrun, pipelinerun" operator.tekton.dev/prune.keep-since: 7200 ...