Git Connector
Git Connector 是一个平台无关的连接器,您可以使用它连接到任何 Git 服务器,如 GitHub、GitLab、Bitbucket。
您可以使用 Git Connector 在 CICD 流水线中安全地克隆私有仓库,或者在容器化工作负载中执行 Git 操作而无需凭证。
此外,您可以集中管理跨命名空间的 Git 访问配置,避免在每个命名空间中重复配置 Git 凭证。
本文档将介绍:
- Git 服务器的要求
- 如何基于 Git connectorclass 创建 Git Connector
- Git Connector 的代理和配置能力
目录
Git 服务器的要求基于 Git ConnectorClass 创建 Git Connector快速开始spec.connectorClassName描述地址认证使用基本认证凭证所需权限认证参数代理和配置代理地址配置更多Git 服务器的要求
要访问的 Git 服务器必须满足以下条件:
- 必须支持 HTTP/HTTPS 传输协议,并且仅兼容 Git 的“smart HTTP”协议模式。该模式是现代 Git 服务器的标准实现,支持高效的数据传输和认证机制。
基于 Git ConnectorClass 创建 Git Connector
快速开始
spec.connectorClassName
固定值 git。
描述
您可以通过 annotations 字段为 Git Connector 添加描述信息。
cpaas.io/description:Git Connector 的描述信息。
例如:
地址
spec.address 指定 Git 服务器的访问地址,例如:https://github.com。需要注意的是,该地址用于克隆 Git 仓库,而非 Git 服务器的 API 地址。
认证
Git Connector 支持以下认证类型:
basicAuth:基于用户名和密码的认证(可选),对应的 Secret 类型为kubernetes.io/basic-auth
使用基本认证
例如:
您需要在同一命名空间下创建一个 Secret,例如:
注意:password 字段不限于实际用户密码。您可以使用其他类型的凭证,如个人访问令牌(PAT)或 API 密钥,只要它们满足所需的 Secret 权限部分中列出的权限要求。
如果 Git 服务器不需要认证,可以省略 secretRef 字段:
凭证所需权限
配置的凭证所需权限取决于您打算如何在 Pod/流水线中使用它。此外,凭证必须对认证参数部分指定的认证仓库具有克隆权限。
例如:
- 如果您需要在流水线中使用该连接器执行克隆和推送操作,凭证必须对目标仓库同时具有克隆和推送权限。换言之,凭证应允许您从仓库克隆和向仓库推送。
- 如果您只需要在流水线中克隆仓库,凭证只需对目标仓库具有克隆权限。
出于安全最佳实践,建议创建权限最小化的凭证。当需要更高权限时,创建具有更高权限的 Secret 的独立 Connector,并使用命名空间隔离来控制哪些用户可以访问每个 Connector。
认证参数
为了验证凭证是否有效,您需要指定一个 Git 仓库路径。连接器将在运行时使用该凭证访问该仓库,以确定凭证的有效性。
该认证参数通过 spec.auth.params 指定。
repository:指定用于认证检查的 Git 仓库路径,例如org/repo.git。
例如:
代理和配置
为了让客户端能够在无凭证情况下访问 Git 仓库,Git connectorclass 提供了一个代理服务器,用于自动注入认证信息。
有访问该连接器权限的客户端可以使用此代理服务器访问 Git 仓库,无需在客户端配置凭证。
为简化使用,Git connectorclass 提供了可通过 CSI 挂载到 Pod 的配置信息。在 Pod 中执行 Git 操作时,可以自动使用代理服务完成 Git 操作。
代理地址
创建 Git Connector 时,系统会自动创建一个 Service 用于代理访问 Git 仓库。
系统会将代理地址记录在 status.proxy.httpAddress 字段。
例如:
配置
基于 Git connectorclass 创建的 Git Connector 提供以下配置:
gitconfig:Git 配置信息。
- 提供
.gitconfig配置文件,其中 Git 仓库地址将被替换为代理地址。结合 connector-csi-driver,该配置文件将被挂载到 Pod 中,使得通过代理访问 Git 仓库,无需在客户端配置凭证。
Pod 中生成的配置文件示例:
更多使用案例可参考 Using Git Connector in Clone Job。