Chains 配置
目录
概述配置在chains-config ConfigMap 中配置在 TektonConfig 中配置TaskRun 配置PipelineRun 配置OCI 配置存储配置Sigstore 功能配置透明日志使用 Fulcio 的无密钥签名参考概述
Tekton Chains 是一个 Kubernetes Custom Resource Definition (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:attestations 的格式。artifacts.oci.storage:attestations 的存储后端。artifacts.pipelinerun.format:PipelineRuns 的 attestations 格式。artifacts.pipelinerun.storage:PipelineRuns 的 attestations 存储后端。artifacts.taskrun.format:TaskRuns 的 attestations 格式。artifacts.taskrun.storage:TaskRuns 的 attestations 存储后端。
在 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 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的别名,用于向后兼容。- 如果 storage 为
oci,attestations 将与已存储的 OCI artifact 本身一起存储。更多信息请参见 cosign documentation。 - 如果 storage 为
tekton,attestations 将存储在 TektonTaskRun的 annotations 中。
PipelineRun 配置
与 TaskRuns 类似,你可以配置 PipelineRun 的签名和存储。
- 如果 storage 为
oci,attestations 将与已存储的 OCI artifact 本身一起存储。更多信息请参见 cosign documentation。 - 如果 storage 为
tekton,attestations 将存储在 TektonPipelineRun的 annotations 中。
OCI 配置
- 如果 storage 为
oci,attestations 将与已存储的 OCI artifact 本身一起存储。更多信息请参见 cosign documentation。 - 如果 storage 为
tekton,attestations 将存储在 TektonTaskRun或PipelineRun的 annotations 中。
存储配置
Chains 支持多种用于存储 attestations 和 signatures 的后端。 下面列出了一些更常见的后端;如需更详细的配置,请参见 Storage Configuration
说明
- 如果你的 OCI repository 使用自签名证书,你需要将
storage.oci.repository.insecure设置为true,以允许不安全连接。
Sigstore 功能配置
透明日志
注意: 如果 transparency.enabled 设置为 manual,那么只有带有以下 annotation 的 TaskRuns 和 PipelineRuns 才会上传到透明日志: