Chains 的认证
目录
概述OCI Registry 认证创建 Registry 凭据基于现有凭据创建 Secret通过在命令行中提供凭据来创建 Secret使用 pod 设置凭据使用 Pod Template使用 ServiceAccountFulcio 认证,用于 Keyless 签名基本配置自定义 Fulcio Endpoint参考资料概述
必须先配置认证,才能在 Chains 中使用以下功能:
- 在对镜像签名后,将签名推送到 OCI registry
- 在使用 Keyless 签名时,使用 Fulcio 获取签名证书
OCI Registry 认证
要推送到 OCI registry,Chains controller 会在两个位置查找凭据:
- 在执行 Task 的 pod 中
- 在配置为运行该 Task 的 service account 中
创建 Registry 凭据
基于现有凭据创建 Secret
如果你已经运行过 podman login,可以将 config.json 中存储的凭据复制到 Kubernetes 中。
请确保不使用任何外部凭据存储(例如操作系统的原生 keychain)来存储这些凭据,并且 config.json 的格式如下:
使用 config.json 创建 secret:
通过在命令行中提供凭据来创建 Secret
首先,你需要获取 registry 的凭据(本示例中这些凭据位于名为 credentials.json 的文件中)。然后,创建一个类型为 kubernetes.io/dockerconfigjson 的 Kubernetes secret:
设置 config.json 键
使用 pod 设置凭据
使用 Pod Template
Tekton 支持指定 Pod template,以自定义运行 Task 的 Pod。你必须在使用 cli 启动 Task 时提供 Pod template,或者将其嵌入到 TaskRun 中。
以下是一个配置了 registry-credentials secret 的 TaskRun 示例:
使用 ServiceAccount
授予 service account 对该 secret 的访问权限:
现在,Chains 对在 service account $SERVICE_ACCOUNT_NAME 下运行的任何 TaskRun 都具有推送权限。
ServiceAccount 的 imagePullSecrets 属性中的 secret 也会被考虑在内。不过,其他 Tekton 组件可能不会这样做。推荐使用 secrets 属性。
Fulcio 认证,用于 Keyless 签名
基本配置
默认部署在安装到 EKS 或 GKE 集群的情况下,可与公共 Fulcio 正常配合使用。你只需要将以下内容添加到 tekton-chains 命名空间中的 chains-config ConfigMap 的 data 部分:
自定义 Fulcio Endpoint
如果你运行的是自己的 Fulcio 实例,则需要为其进行配置。你还需要在 chains-config 中添加以下内容,以将 Chains 指向你的 fulcio 实例: