×

在 Red Hat OpenShift Pipelines 中,您可以使用TektonConfig 自定义资源 (CR) 自定义以下配置

  • 优化 OpenShift Pipelines 性能,包括 OpenShift Pipelines 控制器的 高可用性模式

  • 配置 Red Hat OpenShift Pipelines 控制平面

  • 更改默认服务帐户

  • 禁用服务监控

  • 配置管道解析器

  • 禁用管道模板

  • 禁用 Tekton Hub 集成

  • 禁用 RBAC 资源的自动创建

  • 修剪任务运行和管道运行

先决条件

  • 您已安装 Red Hat OpenShift Pipelines 运算符。

使用 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

所有字段都是可选的。如果您设置它们,Red Hat OpenShift Pipelines 运算符会将大多数字段作为参数包含在openshift-pipelines-controller命名空间下openshift-pipelines-controller容器中的openshift-pipelines-controller部署中。OpenShift Pipelines 运算符还会更新openshift-pipelines命名空间下config-leader-election配置映射中的buckets字段。

如果您未指定值,OpenShift Pipelines 运算符不会更新这些字段,并为 OpenShift Pipelines 控制器应用默认值。

如果您修改或删除任何性能字段,OpenShift Pipelines 运算符将更新openshift-pipelines-controller部署和config-leader-election配置映射(如果buckets字段已更改)并重新创建openshift-pipelines-controller Pod。

高可用性 (HA) 模式适用于 OpenShift Pipelines 控制器,该控制器根据管道运行和任务运行定义创建和启动 Pod。在没有 HA 模式的情况下,单个 Pod 执行这些操作,在高负载下可能会造成明显的延迟。

在 HA 模式下,OpenShift Pipelines 使用多个 Pod(副本)来执行这些操作。最初,OpenShift Pipelines 将每个控制器操作分配到一个桶中。每个副本从一个或多个桶中选择操作。如果两个副本可能同时选择相同的操作,控制器会在内部确定一个执行此操作的*领导者*。

HA 模式不影响 Pod 创建后任务运行的执行。

表 1. 用于调整 OpenShift Pipelines 性能的可修改字段
名称 描述 OpenShift Pipelines 控制器的默认值

disable-ha

启用或禁用高可用性 (HA) 模式。默认情况下,HA 模式已启用。

false

buckets

在 HA 模式下,用于处理控制器操作的 bucket 数量。最大值为 10

1

replicas

在 HA 模式下,创建用于处理控制器操作的 Pod 数量。此值应设置为等于或小于 buckets 值。

1

threads-per-controller

处理 OpenShift Pipelines 控制器工作队列时使用的线程(工作进程)数量。

2

kube-api-qps

REST 客户端对集群主机的每秒最大查询数 (QPS)。

5.0

kube-api-burst

节流的最大突发值。

10

OpenShift Pipelines 运算符不控制 OpenShift Pipelines 控制器的副本数量。部署的 replicas 设置决定了副本的数量。例如,要将副本数更改为 3,请输入以下命令:

$ oc --namespace openshift-pipelines scale deployment openshift-pipelines-controller --replicas=3

在 OpenShift Pipelines 控制器中,kube-api-qpskube-api-burst 字段的值将乘以 2。例如,如果 kube-api-qpskube-api-burst 值为 10,则实际的 QPS 和突发值将变为 20

配置 Red Hat OpenShift Pipelines 控制平面

您可以通过编辑 TektonConfig 自定义资源 (CR) 中的配置字段来自定义 OpenShift Pipelines 控制平面。Red Hat OpenShift Pipelines 运算符会自动添加配置字段及其默认值,以便您可以使用 OpenShift Pipelines 控制平面。

步骤
  1. 在 Web 控制台的**管理员**视角中,导航到**管理** → **自定义资源定义**。

  2. 使用**按名称搜索**框搜索 tektonconfigs.operator.tekton.dev 自定义资源定义 (CRD)。单击**TektonConfig** 查看 CRD 详情页面。

  3. 单击**实例**选项卡。

  4. 单击**config** 实例查看 TektonConfig CR 详情。

  5. 单击**YAML** 选项卡。

  6. 根据您的需求编辑 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
        enable-api-fields: stable
        enable-provenance-in-status: false
        enable-custom-tasks: true
        disable-creds-init: false
        disable-affinity-assistant: true

可修改字段及其默认值

以下列表包含 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):如果未指定,此字段包含要用于 TaskRunPipelineRun 资源的默认服务帐户名称。

  • require-git-ssh-secret-known-hosts(默认值:false):将此字段设置为 true 要求任何 Git SSH 密钥都必须包含 known_hosts 字段。

    • 有关配置 Git SSH 密钥的更多信息,请参阅附加资源部分中的《配置 Git 的 SSH 身份验证》。

  • enable-tekton-oci-bundles(默认值:false):将此字段设置为 true 以启用名为 Tekton OCI bundle 的实验性 alpha 功能的使用。

  • enable-api-fields(默认值:stable):设置此字段决定启用哪些功能。可接受的值为 stablebetaalpha

    Red Hat OpenShift Pipelines 不支持 alpha 值。

  • enable-provenance-in-status(默认值:false):将此字段设置为 true 以启用填充 TaskRunPipelineRun 状态中的 provenance 字段。provenance 字段包含有关在任务运行和管道运行中使用的资源的元数据,例如获取远程任务或管道定义的来源。

  • enable-custom-tasks(默认值:true):将此字段设置为 false 以禁用在管道中使用自定义任务。

  • disable-creds-init(默认值:false):将此字段设置为 true 以阻止 OpenShift Pipelines 扫描附加的服务帐户并将任何凭据注入您的步骤。

  • disable-affinity-assistant(默认值:true):将此字段设置为 false 以启用针对共享持久卷声明工作区的每个 TaskRun 资源的亲和性助手。

指标选项

您可以修改 TektonConfig CR 中以下指标字段的默认值

  • metrics.taskrun.duration-typemetrics.pipelinerun.duration-type(默认值:histogram):设置这些字段决定任务或管道运行的持续时间类型。可接受的值为 gaugehistogram

  • metrics.taskrun.level(默认值:task):此字段决定任务运行指标的级别。可接受的值为 taskruntasknamespace

  • metrics.pipelinerun.level(默认值:pipeline):此字段决定管道运行指标的级别。可接受的值为 pipelinerunpipelinenamespace

可选配置字段

以下字段没有默认值,只有在您配置它们时才会被考虑。默认情况下,运算符不会在 TektonConfig 自定义资源 (CR) 中添加和配置这些字段。

  • default-timeout-minutes:此字段设置 TaskRunPipelineRun 资源的默认超时时间(如果在创建它们时未指定)。如果任务运行或管道运行执行时间超过设定的分钟数,则任务运行或管道运行将超时并取消。例如,default-timeout-minutes: 60 将 60 分钟设置为默认值。

  • default-managed-by-label-value:此字段包含赋予应用于所有 TaskRun Pod 的 app.kubernetes.io/managed-by 标签的默认值(如果未指定)。例如,default-managed-by-label-value: tekton-pipelines

  • default-pod-template:此字段设置 TaskRunPipelineRun Pod 的默认模板(如果未指定)。

  • default-cloud-events-sink:此字段设置用于 TaskRunPipelineRun 资源的默认 CloudEvents 接收器(如果未指定)。

  • default-task-run-workspace-binding:此字段包含Task资源声明但TaskRun资源未显式声明的工作区的默认工作区配置。

  • default-affinity-assistant-pod-template:如果未指定,此字段设置用于亲和性助手 Pod 的默认PipelineRun Pod 模板。

  • default-max-matrix-combinations-count:如果未指定,此字段包含从矩阵生成的默认最大组合数。

更改 OpenShift Pipelines 的默认服务帐户

您可以通过编辑.spec.pipeline.spec.trigger规范中的default-service-account字段来更改 OpenShift 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

为 OpenShift Pipelines 安装命名空间设置标签和注释

您可以为操作符安装 OpenShift Pipelines 的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"}

设置管道控制器的重新同步周期

您可以配置管道控制器的重新同步周期。在每个重新同步周期,控制器都会协调所有管道运行和任务运行,而不管事件如何。

默认重新同步周期为 10 小时。如果您有大量的管道运行和任务运行,每 10 小时进行一次完全协调可能会消耗过多的资源。在这种情况下,您可以配置更长的重新同步周期。

先决条件
  • 您已使用cluster-admin权限登录到您的 OpenShift Container Platform 集群。

步骤
  • TektonConfig自定义资源中,配置管道控制器的重新同步周期,如下例所示。

    示例
    apiVersion: 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 小时。

禁用服务监控

您可以禁用服务监控(它是 OpenShift Pipelines 的一部分)以公开遥测数据。要禁用服务监控,请在TektonConfig自定义资源 (CR) 的.spec.pipeline规范中将enableMetrics参数设置为false

示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pipeline:
    params:
       - name: enableMetrics
         value: 'false'

配置管道解析器

您可以在TektonConfig自定义资源 (CR) 中配置管道解析器。您可以启用或禁用这些管道解析器。

  • enable-bundles-resolver

  • enable-cluster-resolver

  • enable-git-resolver

  • enable-hub-resolver

示例
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

您还可以提供TektonConfig CR 中的解析器特定配置。例如,以map[string]string格式定义以下字段以设置每个管道解析器的配置。

示例
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

禁用解析器任务和管道模板

默认情况下,TektonAddon自定义资源 (CR) 会与 OpenShift Pipelines 一起在集群中安装resolverTaskspipelineTemplates资源。

您可以通过在.spec.addon规范中将参数值设置为false来禁用解析器任务和管道模板的安装。

步骤
  1. 通过运行以下命令编辑TektonConfig CR

    $ oc edit TektonConfig config
  2. TektonConfig CR 中,将.addon.params规范中的resolverTaskspipelineTemplates参数值设置为false

    禁用解析器任务和管道模板资源的示例
    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      addon:
        params:
          - name: resolverTasks
            value: 'false'
          - name: pipelineTemplates
            value: 'false'
    # ...

    只有当resolverTasks参数的值为true时,才能将pipelinesTemplates参数的值设置为true

禁用 Tekton Hub 集成

您可以通过在TektonConfig自定义资源 (CR) 中将enable-devconsole-integration参数设置为false来禁用 Web 控制台**开发人员**透视图中的 Tekton Hub 集成。

禁用 Tekton Hub 的示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  hub:
    params:
      - name: enable-devconsole-integration
        value: false

禁用 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

步骤
  1. 通过运行以下命令编辑TektonConfig CR

    $ oc edit TektonConfig config
  2. TektonConfig CR 中,将createRbacResource参数值设置为false

TektonConfig CR 示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  params:
  - name: createRbacResource
    value: "false"
# ...

禁用管道和任务的内联规范

默认情况下,OpenShift Pipelines 支持在以下情况下内联指定管道和任务:

  • 您可以创建一个包含一个或多个任务规范的Pipeline CR,如下例所示:

    Pipeline CR 中内联规范的示例
    apiVersion: operator.tekton.dev/v1
    kind: Pipeline
    metadata:
      name: pipelineInline
    spec:
      tasks:
        taskSpec:
    # ...
  • 您可以创建一个包含管道规范的PipelineRun自定义资源 (CR),如下例所示:

    PipelineRun CR 中内联规范的示例
    apiVersion: operator.tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: pipelineRunInline
    spec:
      pipelineSpec:
        tasks:
    # ...
  • 您可以创建一个包含任务规范的TaskRun自定义资源 (CR),如下例所示:

    TaskRun CR 中内联规范的示例
    apiVersion: 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"
# ...

您可以将disable-inline-spec参数设置为任何单个值或多个值的逗号分隔列表。参数的以下值有效:

表 2.disable-inline-spec参数支持的值
描述

pipeline

您不能使用taskSpec:规范在Pipeline CR 中定义任务。相反,您必须使用taskRef:规范从Task CR 中合并任务或使用解析器指定任务。

pipelinerun

您不能使用pipelineSpec:规范在PipelineRun CR 中定义管道。相反,您必须使用pipelineRef:规范从Pipeline CR 中合并管道或使用解析器指定管道。

taskrun

您不能使用taskSpec:规范在TaskRun CR 中定义任务。相反,您必须使用taskRef:规范从Task CR 中合并任务或使用解析器指定任务。

任务运行和管道运行的自动修剪

陈旧的TaskRunPipelineRun对象及其已执行的实例会占用可用于活动运行的物理资源。为了优化这些资源的使用,Red Hat OpenShift Pipelines提供了一个修剪器组件,该组件会自动删除各个命名空间中未使用的对象及其实例。

您可以使用TektonConfig自定义资源配置整个安装的修剪器,并使用命名空间注释修改命名空间的配置。但是,您不能选择性地自动修剪命名空间中的单个任务运行或管道运行。

配置修剪器

您可以使用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
# ...
表 3. 修剪器配置支持的参数
参数 描述

schedule

运行修剪器进程的Cron计划。默认计划每天08:00运行该进程。有关Cron计划语法的更多信息,请参见Kubernetes文档中的Cron计划语法

resources

修剪器适用的资源类型。可用的资源类型为taskrunpipelinerun

keep

要保留的每种类型的最新资源数量。

prune-per-resource

如果设置为false,则keep参数的值表示任务运行或管道运行的总数。例如,如果keep设置为100,则修剪器将保留100个最新的任务运行和100个最新的管道运行,并删除所有其他资源。

如果设置为true,则keep参数的值将针对引用每个管道的管道运行和引用每个任务的任务运行分别计算。例如,如果keep设置为100,则修剪器将保留Pipeline1的100个最新的管道运行、Pipeline2的100个最新的管道运行、Task1的100个最新的任务运行,依此类推,并删除所有其他资源。

keep-since

保留资源的最长时间(以分钟为单位)。例如,要保留创建日期不超过五天前的资源,请将keep-since设置为7200

startingDeadlineSeconds

此参数是可选的。如果修剪器作业由于任何原因未在计划时间启动,此设置将配置作业仍可以启动的最长时间(以秒为单位)。如果作业未在指定时间内启动,OpenShift Pipelines 将认为此作业失败,并在下次计划时间启动修剪器。如果您未指定此参数且修剪器作业未在计划时间启动,OpenShift Pipelines 将尝试在以后的任何时间启动该作业。

keepkeep-since参数是互斥的。在配置中只使用其中一个。

用于自动修剪任务运行和管道运行的注释

要修改命名空间中任务运行和管道运行的自动修剪配置,您可以在命名空间中设置注释。

以下命名空间注释与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:将此注释的值设置为keepkeep-since

例如,以下注释保留过去五天内创建的所有任务运行和管道运行,并删除较旧的资源

自动修剪注释示例
kind: Namespace
apiVersion: v1
# ...
spec:
  annotations:
    operator.tekton.dev/prune.resources: "taskrun, pipelinerun"
    operator.tekton.dev/prune.keep-since: 7200
# ...

为Webhook设置其他选项

您可以选择为OpenShift Pipelines中多个控制器创建的Webhook设置failurePolicytimeoutSecondssideEffects选项。有关这些选项的更多信息,请参见Kubernetes文档

先决条件
  • 您已安装oc命令行实用程序。

  • 您已使用OpenShift Pipelines安装命名空间(通常是openshift-pipelines命名空间)的管理员权限登录到您的OpenShift Container Platform集群。

步骤
  1. 查看OpenShift Pipelines控制器创建的Webhook列表。Webhook有两种类型:变异Webhook和验证Webhook。

    1. 要查看变异Webhook列表,请输入以下命令

      $ oc get MutatingWebhookConfiguration
      示例输出
      NAME                             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
    2. 要查看验证Webhook列表,请输入以下命令

      $ oc get ValidatingWebhookConfiguration
      示例输出
      NAME                                                 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
  2. TektonConfig自定义资源 (CR) 中,根据需要在每个控制器的部分下添加变异和验证Webhook的配置,如下例所示。对验证Webhook使用validation.webhook.pipeline.tekton.dev规范,对变异Webhook使用webhook.pipeline.tekton.dev规范。

    • 您不能为operator Webhook设置配置。

    • 所有设置都是可选的。例如,您可以设置timeoutSeconds参数,并省略failurePolicysideEffects参数。

    管道控制器示例设置
    apiVersion: 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
    触发器控制器示例设置
    apiVersion: 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
    管道即代码控制器示例设置
    apiVersion: 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控制器示例设置
    apiVersion: 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