Chains 配置
目录
概述配置在chains-config ConfigMap 中配置在 TektonConfig 中配置TaskRun 配置PipelineRun 配置OCI 配置存储配置Sigstore 特性配置Transparency Log使用 Fulcio 的无密钥签名参考概述
Tekton Chains 是一个 Kubernetes 自定义资源定义(CRD)控制器,可用于在 Tekton 中管理供应链安全。本文档介绍如何配置 Tekton Chains。
配置
Chains 配置存储在 tekton-pipelines 或 tekton-chains 命名空间中名为 chains-config 的 ConfigMap 里。你可以修改该 ConfigMap 来更改 Chains 的行为。
默认情况下,Tekton Chains 会通过 TektonConfig 资源自动部署。你可以修改 TektonConfig 资源来配置 Chains。
本质上,Tekton Operator 会将 Chains 配置从 TektonConfig 资源同步到 TektonChains 资源,并最终反映到 chains-config ConfigMap 中。
如果你通过 TektonConfig 部署 Chains,就必须通过 TektonConfig 配置 Chains。
如果你只修改 chains-config ConfigMap 中的配置,而它没有同步到 TektonChains 资源,那么这些配置可能会丢失。
当 TektonConfig 中的配置发生变化,或者其他原因触发 reconciliation 时,chains-config ConfigMap 中的配置将被覆盖。
不过,某些高级配置只支持在 chains-config ConfigMap 中配置,由于 validation webhook 的限制,无法在 TektonConfig 中配置。
如果你遇到这个问题,需要禁用 TektonConfig 对 Chains 的自动部署,并手动创建一个 TektonHub 资源。
下面简单演示配置 Chains 的不同方式。
在 chains-config ConfigMap 中配置
下面是 chains-config ConfigMap 的示例:
提示: 布尔值是字符串,例如
"true"或"false"。
YAML 字段说明:
artifacts.oci.format:证明材料的格式。artifacts.oci.storage:证明材料的存储后端。artifacts.pipelinerun.format:PipelineRun 证明材料的格式。artifacts.pipelinerun.storage:PipelineRun 证明材料的存储后端。artifacts.taskrun.format:TaskRun 证明材料的格式。artifacts.taskrun.storage:TaskRun 证明材料的存储后端。
在 TektonConfig 中配置
在 TektonConfig 资源中,Chains 的配置大致如下:
提示: 布尔值使用原始类型,例如
true或false。
YAML 字段说明:
spec.chain:此部分包含 Chains 的配置。disabled:是否禁用 Chains。- 这是 TektonConfig 独有的配置,在 TektonChains 中不存在。
generateSigningSecret:是否生成签名 secret。- 这是 TektonConfig 独有的配置,在 TektonChains 中不存在。
controllerEnvs:Tekton Chains controller 的环境变量。- 这是 TektonConfig 独有的配置,在 TektonChains 中不存在。
name:环境变量名称。value:环境变量值。
options:Tekton Chains controller 的选项。- 这是 TektonConfig 独有的配置,在 TektonChains 中不存在。
deployments.tekton-chains-controller:Tekton Chains controller 的部署选项。spec.template.spec.containers.env.SIGSTORE_ID_TOKEN:Tekton Chains controller 的 ID token。
- 更详细的支持信息可以在 Additional fields as options 中找到
- 以下配置也存在于
TektonChains中,并最终会同步到chains-configConfigMap。artifacts.oci.formatartifacts.oci.storageartifacts.pipelinerun.formatartifacts.pipelinerun.storageartifacts.taskrun.formatartifacts.taskrun.storagestorage.oci.repository.insecuresigners.x509.fulcio.addresssigners.x509.fulcio.issuertransparency.enabledtransparency.url
TaskRun 配置
说明
slsa/v1是in-toto的别名,用于向后兼容。- 如果存储为
oci,证明材料将与存储的 OCI artifact 本身一起存储。更多信息请参见 cosign documentation。 - 如果存储为
tekton,证明材料将存储在 TektonTaskRun的 annotations 中。
PipelineRun 配置
与 TaskRun 类似,你也可以配置 PipelineRun 的签名和存储。
- 如果存储为
oci,证明材料将与存储的 OCI artifact 本身一起存储。更多信息请参见 cosign documentation。 - 如果存储为
tekton,证明材料将存储在 TektonPipelineRun的 annotations 中。
OCI 配置
- 如果存储为
oci,证明材料将与存储的 OCI artifact 本身一起存储。更多信息请参见 cosign documentation。 - 如果存储为
tekton,证明材料将存储在 TektonTaskRun或PipelineRun的 annotations 中。
存储配置
Chains 支持多种用于存储证明材料和签名的存储后端。 下面列出了一些更常见的选项;如需更详细的配置,请参见 Storage Configuration
说明
- 如果你的 OCI repository 使用自签名证书,则需要将
storage.oci.repository.insecure设置为true,以允许不安全连接。
Sigstore 特性配置
Transparency Log
注意: 如果 transparency.enabled 设置为 manual,则只有带有以下 annotation 的 TaskRun 和 PipelineRun 会上传到透明日志: