快速开始
本文档将帮助您快速了解如何创建一个 OCI Connector,并使用它安全地访问容器镜像仓库,而无需直接处理凭据。
目录
介绍适用场景预计阅读时间注意事项前提条件流程概览操作步骤步骤 1:创建 Namespace步骤 2:创建仓库凭据和 OCI Connector步骤 3:创建容器构建/推送作业步骤 4:验证操作预期结果工作原理故障排查后续步骤介绍
适用场景
OCI(Open Container Initiative)Connector 提供了一种安全的方式来:
- 访问容器镜像仓库(CNCF Distribution Registry、Harbor 等),无需在工作负载中嵌入凭据
- 集中管理镜像仓库的认证信息
- 使用代理机制安全地推送和拉取容器镜像
- 配置容器工具以配合镜像仓库代理使用
该方案特别适用于:
- 需要向私有仓库推送镜像的 CI/CD 流水线
- 多团队环境中需要安全共享仓库凭据的场景
- Kubernetes 中的容器构建流程
预计阅读时间
15 分钟
注意事项
- OCI connector 通过 CSI 驱动集成安全注入仓库凭据。
- 不同的容器工具(如 Buildah 等)可能需要针对不安全仓库访问进行特定配置。
- 连接器生成的配置文件有效期为 30 分钟。
前提条件
- 已安装 Connectors 系统的 Kubernetes 集群(包含 Operator、Core 和 OCI 组件)。有关安装这些组件的详细信息,请参见安装指南。
- 已配置 kubectl 与您的集群通信
- 容器镜像仓库的访问凭据(CNCF Distribution Registry、Harbor 等)
- 具备 Kubernetes 资源的基本知识
流程概览
操作步骤
步骤 1:创建 Namespace
为本次演示创建一个专用的命名空间:
步骤 2:创建仓库凭据和 OCI Connector
创建包含仓库凭据的 Secret 和 OCI Connector 资源。有关创建和配置连接器的详细信息,请参见Connectors 快速开始指南。
确认连接器状态为 “Ready”:
输出应显示:
步骤 3:创建容器构建/推送作业
创建一个包含示例 Containerfile 的 ConfigMap:
创建一个使用连接器构建并推送容器镜像的作业:
卷定义中的关键参数:
connector.name:您的 OCI connector 名称configuration.names:指定从 OCI ConnectorClass 生成的配置类型:"registry-config":生成访问代理服务所需的认证配置(config.json)"buildkitd":生成用于不安全仓库访问的 BuildKit 守护进程配置
mountPath:指定配置文件在容器中的挂载路径:- "/root/.docker" 用于 OCI CLI(如 buildkit、buildah)的认证配置
- "/etc/buildkit" 用于 BuildKit 配置
步骤 4:验证操作
查看作业日志,确认镜像构建并推送成功:
您应能看到构建过程完成,并且镜像已推送到仓库。
预期结果
完成所有步骤后,您将看到:
-
OCI connector 处于 “Ready” 状态:
-
作业日志中显示镜像构建和推送成功,镜像通过连接器代理推送到仓库。
-
连接器状态字段中显示代理地址:
工作原理
OCI Connector 的工作流程:
- 创建一个代理服务,位于您的工作负载和容器镜像仓库之间
- 请求通过代理时注入认证信息
- 为容器工具提供配置文件以配合代理使用
连接器生成三种类型的配置文件,分别用于不同目的:
-
registry-config:生成包含访问代理服务所需认证信息的
config.json文件该配置是认证的关键,所有容器操作均需使用。
-
buildkitd:生成
buildkitd.toml文件,配置 BuildKit 信任不安全的仓库代理仅在使用 BuildKit 构建和推送镜像时需要。
查看生成的配置:
查看生成的配置内容:
故障排查
如果容器操作失败,请检查以下内容:
-
连接器状态:确保连接器处于 “Ready” 状态:
-
RBAC 权限:确认 RoleBinding 配置正确。
-
仓库访问:确认凭据有权访问指定的仓库。
-
配置挂载:确保配置卷正确挂载到作业中。
-
代理地址:确认镜像引用中使用了
status.proxy.httpAddress.url中的正确代理地址。
后续步骤
成功使用 OCI Connector 推送首个镜像后,您可以:
- 在 Kubernetes 工作负载中使用连接器拉取私有镜像
- 集成到 CI/CD 流水线中构建和推送镜像
- 配置不同的容器工具以配合连接器使用
- 将连接器与不同的镜像仓库服务配合使用