必须设置认证以利用 Chains 中的以下功能:
要推送到 OCI 注册表,Chains 控制器将在两个位置查找凭据:
如果您已经运行过 docker login
,可以将存储在 config.json 中的凭据复制到 Kubernetes。
确保没有使用任何外部凭据存储,例如操作系统的本地钥匙串,并且 config.json 格式如下:
使用 config.json 创建 secret:
首先,您需要获取注册表的凭据(在此示例中存储在名为 credentials.json
的文件中)。然后,创建一个 Docker config 类型的 Kubernetes secret:
设置 config.json
键
Tekton 支持指定 Pod 模板以自定义运行 Task 的 Pod。您必须在使用 cli 启动 Task 或将其嵌入 TaskRun 时提供 Pod 模板。
下面是一个配置了 registry-credentials
secret 的 TaskRun 示例:
授予 service account 访问 secret 的权限:
现在,Chains 对运行在 service account $SERVICE_ACCOUNT_NAME
下的任何 TaskRuns 拥有推送权限。
ServiceAccount 的 imagePullSecrets
属性中的 secrets 也会被考虑,但其他 Tekton 组件可能不会如此。推荐使用 secrets
属性的方式。
默认部署假设安装在 EKS 或 GKE 集群中,将使用公共 Fulcio。您只需在 tekton-chains
命名空间的 chains-config
ConfigMap 的 data 部分添加以下内容:
如果您运行自己的 Fulcio 实例,需要为此配置 Fulcio。您还需要通过向 chains-config
添加以下内容来指向您的 fulcio 实例: