Chains 配置
目录
概述配置在chains-config ConfigMap 中配置在 TektonConfig 中配置TaskRun 配置PipelineRun 配置OCI 配置存储配置Sigstore 功能配置透明日志使用 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 会将 TektonConfig 资源中的 Chains 配置同步到 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:是否生成 signing 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 令牌。
- 更多详细支持请参见 附加字段作为选项
- 以下配置也存在于 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 产物本身一起存储。更多信息请参见 cosign 文档。 - 如果存储为
tekton,证明会存储在 TektonTaskRun的 annotations 中。
PipelineRun 配置
与 TaskRun 类似,你可以配置 PipelineRun 的签名和存储。
- 如果存储为
oci,证明会与已存储的 OCI 产物本身一起存储。更多信息请参见 cosign 文档。 - 如果存储为
tekton,证明会存储在 TektonPipelineRun的 annotations 中。
OCI 配置
- 如果存储为
oci,证明会与已存储的 OCI 产物本身一起存储。更多信息请参见 cosign 文档。 - 如果存储为
tekton,证明会存储在 TektonTaskRun或PipelineRun的 annotations 中。
存储配置
Chains 支持多个存储后端用于存储证明和签名。 下面列出了一些更常见的选项,如需更详细的配置,请参见 存储配置
说明
- 如果你的 OCI 仓库使用自签名证书,则需要将
storage.oci.repository.insecure设置为true,以允许不安全连接。
Sigstore 功能配置
透明日志
注意: 如果 transparency.enabled 设置为 manual,则只有带有以下 annotation 的 TaskRun 和 PipelineRun 才会上传到透明日志: