1.2. 配置 Tekton 链


Red Hat OpenShift Pipelines Operator 默认安装 Tekton 链。您可以通过修改 TektonConfig 自定义资源来配置 Tekton 链;Operator 会自动应用您在此自定义资源中所做的更改。

要编辑自定义资源,请使用以下命令:

$ oc edit TektonConfig config

自定义资源包含一个 chain: 数组。您可以在这个阵列中添加任何支持的配置参数,如下例所示:

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  addon: {}
  chain:
    artifacts.taskrun.format: tekton
  config: {}

1.2.1. Tekton Chains 配置支持的参数

集群管理员可以使用各种支持的参数键和值来配置任务运行、OCI 镜像和存储的规格。

1.2.1.1. 任务运行工件支持的参数

表 1.1. 链配置:任务运行工件支持的参数
描述支持的值默认值

artifacts.taskrun.format

存储任务运行有效负载的格式。

in-toto, slsa/v1

in-toto

artifacts.taskrun.storage

任务运行签名的存储后端。您可以将多个后端指定为用逗号分开的列表,如 “tekton,oci”。要禁用存储任务运行工件,请提供空字符串 ""

tekton, oci, gcs, docdb, grafeas

oci

artifacts.taskrun.signer

用于签名任务运行有效负载的签名后端。

x509,kms

x509

注意

slsa/v1in-toto 的别名,用于向后兼容。

1.2.1.2. 管道运行工件支持的参数

表 1.2. 链配置:管道运行工件支持的参数
参数描述支持的值默认值

artifacts.pipelinerun.format

存储管道运行有效负载的格式。

in-toto, slsa/v1

in-toto

artifacts.pipelinerun.storage

用于存储管道运行签名的存储后端。您可以将多个后端指定为用逗号分开的列表,如 “tekton,oci”。要禁用存储管道运行工件,请提供一个空字符串 ""

tekton, oci, gcs, docdb, grafeas

oci

artifacts.pipelinerun.signer

用于签名管道运行有效负载的签名后端。

x509,kms

x509

artifacts.pipelinerun.enable-deep-inspection

当此参数为 true 时,Tekton Chains 会记录管道运行的子任务的结果。当此参数为 false 时,Tekton Chains 会记录管道运行的结果,而不是其子任务运行。

"true", "false"

"false"

注意
  • slsa/v1in-toto 的别名,用于向后兼容。
  • 对于 grafeas 存储后端,只支持 Container Analysis。您无法在 Tekton 链的当前版本中配置 grafeas 服务器地址。

1.2.1.3. OCI 工件支持的参数

表 1.3. 链配置: OCI 工件支持的参数
参数描述支持的值默认值

artifacts.oci.format

存储 OCI 有效负载的格式。

simplesigning

simplesigning

artifacts.oci.storage

用于存储 OCI 签名的存储后端。您可以将多个后端指定为用逗号分开的列表,如 “oci,tekton”。要禁用存储 OCI 工件,请提供一个空字符串 ""

tekton, oci, gcs, docdb, grafeas

oci

artifacts.oci.signer

用于签名 OCI 有效负载的签名后端。

x509,kms

x509

1.2.1.4. KMS 符号支持的参数

表 1.4. 链配置: KMS 符号支持的参数
参数描述支持的值默认值

signers.kms.kmsref

对要在 kms 符号器中使用的 KMS 服务的 URI 引用。

支持的方案:gcpkms://, awskms://, azurekms://, hashivault://.如需了解更多详细信息,请参阅 Sigstore 文档中的 供应商

 

1.2.1.5. 支持的存储参数

表 1.5. 链配置:存储支持的参数
参数描述支持的值默认值

storage.gcs.bucket

存储的 GCS 存储桶

  

storage.oci.repository

用于存储 OCI 签名和测试的 OCI 存储库。

如果您将其中一个工件存储后端配置为 oci,且没有定义此密钥,Tekton Chains 会将 attestation 与存储的 OCI 工件本身一起存储。如果您定义了这个密钥,则 attestation 不会与 OCI 工件一起存储,而是存储在指定的位置。如需更多信息,请参阅 cosign 文档

 

builder.id

为 in-toto attestations 设置的构建器 ID

 

https://tekton.dev/chains/v2

builddefinition.buildtype

in-toto attestation 的构建类型。当此参数为 https://tekton.dev/chains/v2/slsa 时,Tekton Chains 记录 in-toto attestations 严格符合 SLSA v1.0 规格。当此参数为 https://tekton.dev/chains/v2/slsa-tekton 时,Tekton Chains 记录带有附加信息(如每个 TaskRunPipelineRun 对象中的标签和注解)的 Tekton Chains 记录,并在 解析的Dependencies 下将每个任务添加到 PipelineRun 对象中。

https://tekton.dev/chains/v2/slsa,https://tekton.dev/chains/v2/slsa-tekton

https://tekton.dev/chains/v2/slsa

如果您启用了 docdb 存储方法用于任何工件,请配置 docstore 存储选项。有关 go-cloud docstore URI 格式的更多信息,请参阅文档 存储软件包文档。Red Hat OpenShift Pipelines 支持以下 docstore 服务:

  • firestore
  • dynamodb
表 1.6. 链配置:docstore 存储支持的参数
参数描述支持的值默认值

storage.docdb.url

docstore 集合的 go-cloud URI 引用。在为任何工件启用了 docdb 存储方法时使用。

firestore://projects/[PROJECT]/databases/(default)/documents/[COLLECTION]?name_field=name

 

storage.docdb.mongo-server-url

用于 docdb 存储的 Mongo 服务器 URL 的值(MONGO_SERVER_URL)。此 URL 可以包含身份验证信息。对于生产环境,提供身份验证信息,如纯文本配置可能不安全。在生产环境中使用替代 storage.docdb.mongo-server-url-dir 配置设置。

  

storage.docdb.mongo-server-url-dir

名为 MONGO_SERVER_URL 的文件所在的目录。此文件包含用于 docdb 存储的 Mongo 服务器 URL (MONGO_SERVER_URL)。提供此文件作为 secret,并为 Tekton Chains 控制器配置此文件,如 创建和挂载 Mongo 服务器 URL secret 中所述。

示例值: /tmp/mongo-url

 

如果您为任何工件启用 grafeas 存储方法,请配置 Grafeas 存储选项。有关 Grafeas 备注和发生的更多信息,请参阅 Grafeas 概念

要创建并行,Red Hat OpenShift Pipelines 必须首先创建用于链接并行的备注。Red Hat OpenShift Pipelines 创建两种类型的发生: ATTESTATION Occurrence 和 BUILD Occurrence。

Red Hat OpenShift Pipelines 使用可配置的 noteid 作为备注名称的前缀。它附加 ATTESTATION 备注的后缀 -simplesigning,以及 BUILD 备注的后缀 -intoto。如果没有配置 noteid 字段,Red Hat OpenShift Pipelines 将使用 tekton-<NAMESPACE> 作为前缀。

表 1.7. 链配置:Grafeas 存储支持的参数
参数描述支持的值默认值

storage.grafeas.projectid

Grafeas 服务器用于存储发生的 OpenShift Container Platform 项目。

  

storage.grafeas.noteid

可选:用于所有创建备注的名称的前缀。

没有空格的字符串。

 

storage.grafeas.notehint

可选:Grafeas ATTESTATION 备注的 human_readable_name 字段。

 

此 attestation 备注由 Tekton 链生成

另外,您还可以在测试时启用额外的二进制透明度上传。

表 1.8. 链配置:支持参数,以获得透明测试存储
参数描述支持的值默认值

transparency.enabled

启用或禁用自动二进制透明度上传。

true,false,manual

false

transparency.url

如果启用,用于上传二进制透明度的 URL。

 

https://rekor.sigstore.dev

注意

如果将 transparency.enabled 设置为 manual,则只有带有以下注解的任务和管道运行上传到透明度日志中:

chains.tekton.dev/transparency-upload: "true"

如果配置 x509 签名后端,您可以选择使用 Fulcio 启用无密钥签名。

表 1.9. 链配置:使用 Fulcio 进行 x509 密钥无密钥签名的支持参数
参数描述支持的值默认值

signers.x509.fulcio.enabled

从 Fulcio 启用或禁用请求自动证书。

true, false

false

signers.x509.fulcio.address

请求证书的 Fulcio 地址(如果启用)。

 

https://v1.fulcio.sigstore.dev

signers.x509.fulcio.issuer

预期的 OIDC 签发者。

 

https://oauth2.sigstore.dev/auth

signers.x509.fulcio.provider

从中请求 ID 令牌的供应商。

Google,spiffe,github,filesystem

Red Hat OpenShift Pipelines 会尝试使用每个供应商

signers.x509.identity.token.file

包含 ID 令牌的文件的路径。

  

signers.x509.tuf.mirror.url

TUF 服务器的 URL。必须存在 $TUF_URL/root.json

 

https://sigstore-tuf-root.storage.googleapis.com

如果您配置 kms 签名后端,请根据需要设置 KMS 配置,包括 OIDC 和 Spire。

表 1.10. 链配置: KMS 签名支持的参数
参数描述支持的值默认值

signers.kms.auth.address

KMS 服务器的 URI (VAULT_ADDR 的值)。

  

signers.kms.auth.token

KMS 服务器的身份验证令牌 (VAULT_TOKEN 值)。将令牌作为纯文本配置提供可能不安全。在生产环境中,使用替代 signers.kms.auth.token-path 配置设置。

  

signers.kms.auth.token-path

包含 KMS 服务器的身份验证令牌的完整路径名( VAULT_TOKEN的值)。将此文件作为 secret 提供,并为 Tekton Chains 控制器配置此文件,如 创建和挂载 KMS 身份验证令牌 secret 中所述。

示例值: /etc/kms-secrets/KMS_AUTH_TOKEN

 

signers.kms.auth.oidc.path

OIDC 身份验证的路径(例如,Vault 为 jwt)。

  

signers.kms.auth.oidc.role

OIDC 身份验证的角色。

  

signers.kms.auth.spire.sock

KMS 令牌的 Spire 套接字的 URI (例如:unix:///tmp/spire-agent/public/api.sock)。

  

signers.kms.auth.spire.audience

从 Spire 请求 SVID 的受众。

  

1.2.2. 创建并挂载 Mongo 服务器 URL secret

您可以使用机密提供用于 docdb 存储(MONGO_SERVER_URL)的 Mongo 服务器 URL 的值。您必须创建此 secret,将其挂载到 Tekton Chains 控制器上,并将 storage.docdb.mongo-server-url-dir 参数设置为挂载 secret 的目录。

先决条件

  • 已安装 OpenShift CLI (oc)实用程序。
  • 您可以使用 openshift-pipelines 命名空间的管理权限登录到 OpenShift Container Platform 集群。

流程

  1. 输入以下命令,使用 MONGO_SERVER_URL 文件创建一个名为 mongo-url 的 secret,该文件包含 Mongo 服务器 URL 值:

    $ oc create secret generic mongo-url -n tekton-chains \
      --from-file=MONGO_SERVER_URL=<path>/MONGO_SERVER_URL 1
    1
    包含 Mongo 服务器 URL 值的 MONGO_SERVER_URL 文件的完整路径和名称。
  2. TektonConfig 自定义资源(CR)的 chain 部分中,配置 Tekton Chains 控制器上的 secret,并将 storage.docdb.mongo-server-url-dir 参数设置为挂载 secret 的目录,如下例所示:

    挂载 mongo-url secret 的配置示例

    apiVersion: operator.tekton.dev/v1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      chain:
        disabled: false
        storage.docdb.mongo-server-url-dir: /tmp/mongo-url
        options:
          deployments:
            tekton-chains-controller:
              spec:
                template:
                  spec:
                    containers:
                    - name: tekton-chains-controller
                      volumeMounts:
                      - mountPath: /tmp/mongo-url
                        name: mongo-url
                    volumes:
                    -  name: mongo-url
                       secret:
                        secretName: mongo-url
    # ...

1.2.3. 创建并挂载 KMS 身份验证令牌 secret

您可以使用 secret 为 KMS 服务器提供身份验证令牌。例如,如果 KMS 供应商是 Hashicorp Vault,则 secret 必须包含 VAULT_TOKEN 的值。

您必须创建此 secret,将其挂载到 Tekton Chains 控制器上,并将 signers.kms.auth.token-path 参数设置为身份验证令牌文件的完整路径。

先决条件

  • 已安装 OpenShift CLI (oc)实用程序。
  • 您可以使用 openshift-pipelines 命名空间的管理权限登录到 OpenShift Container Platform 集群。

流程

  1. 输入以下命令,使用 KMS_AUTH_TOKEN 文件创建一个名为 kms-secrets 的 secret,该文件包含 KMS 服务器的身份验证令牌:

    $ oc create secret generic kms-secrets -n tekton-chains \
      --from-file=KMS_AUTH_TOKEN=<path_and_name> 1
    1
    包含 KMS 服务器的身份验证令牌的完整路径和名称,例如 /home/user/KMS_AUTH_TOKEN。您可以使用另一个文件名而不是 KMS_AUTH_TOKEN
  2. TektonConfig 自定义资源(CR)的 chain 部分中,在 Tekton Chains 控制器上配置 secret,并将 signers.kms.auth.token-path 参数设置为身份验证令牌文件的完整路径,如下例所示:

    挂载 kms-secrets secret 的配置示例

    apiVersion: operator.tekton.dev/v1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      chain:
        disabled: false
        signers.kms.auth.token-path: /etc/kms-secrets/KMS_AUTH_TOKEN
        options:
          deployments:
            tekton-chains-controller:
              spec:
                template:
                  spec:
                    containers:
                    - name: tekton-chains-controller
                      volumeMounts:
                      - mountPath: /etc/kms-secrets
                        name: kms-secrets
                    volumes:
                    -  name: kms-secrets
                       secret:
                        secretName: kms-secrets
    # ...

1.2.4. 启用 Tekton 链仅在所选命名空间中运行

默认情况下,Tekton Chains 控制器监控所有命名空间中的所有资源。您可以自定义 Tekton 链,以仅在特定命名空间中运行,这对操作提供了精细的控制。

先决条件

  • 使用 cluster-admin 权限登录到 OpenShift Container Platform 集群。

流程

  • TektonConfig CR 中,在 chain 部分中,添加 the- namespace= 参数,使其包含控制器应该监控的命名空间。

    以下示例显示了 Tekton Chains 控制器的配置,以仅监控 devtest 命名空间中的资源,相应地过滤 PipelineRunTaskRun 对象:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      chain:
        disabled: false
        options:
          deployments:
            tekton-chains-controller:
              spec:
                template:
                  spec:
                    containers:
                    - args:
                      - --namespace=dev, test 1
                      name: tekton-chains-controller
    1
    如果没有提供或留空,则控制器默认监视所有命名空间。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.