Git Connector
Git Connector 是一个平台无关的连接器,您可以使用它连接到任何 Git 服务器,如 GitHub、GitLab、Bitbucket。
您可以使用 Git Connector 在 CICD 流水线中安全地克隆私有仓库,或者在容器化工作负载中执行无凭证的 Git 操作。
此外,您可以集中管理跨命名空间的 Git 访问配置,避免在每个命名空间中重复配置 Git 凭证。
本文档将介绍:
- Git 服务器的要求
- 如何基于 Git connectorclass 创建 Git Connector
- Git Connector 的代理和配置能力
目录
Git 服务器的要求
要访问的 Git 服务器必须满足以下条件:
- 必须支持 HTTP/HTTPS 传输协议,并且仅兼容 Git 的“smart HTTP”协议模式。该模式是现代 Git 服务器的标准实现,支持高效的数据传输和认证机制。
基于 Git ConnectorClass 创建 Git Connector
快速开始
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: github-demo
spec:
connectorClassName: git
address: https://github.com
auth:
name: basicAuth
params:
- name: repository
value: "kubernetes/website.git"
spec.connectorClassName
固定值 git
。
描述
您可以通过 annotations
字段为 Git Connector 添加描述信息。
cpaas.io/description
:Git Connector 的描述信息。
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: github-demo
annotations:
cpaas.io/description: "连接到 GitHub 以访问团队公共仓库"
地址
spec.address
指定 Git 服务器的访问地址,例如:https://github.com
。需要注意的是,该地址用于克隆 Git 仓库,而非 Git 服务器的 API 地址。
认证
Git connectorclass 支持以下认证类型:
basicAuth
:基于用户名和密码的认证(可选),对应的凭证类型为 kubernetes.io/basic-auth
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: github-demo
spec:
connectorClassName: git
address: https://github.com
auth:
name: basicAuth
secretRef:
name: github-secret
您需要在同一命名空间下创建一个 Secret
,例如:
apiVersion: v1
stringData:
password: your-password
username: your-username
kind: Secret
metadata:
name: github-secret
type: kubernetes.io/basic-auth
如果 Git 服务器不需要认证,可以省略认证信息。
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: github-demo
spec:
connectorClassName: git
address: https://github.com
auth:
name: basicAuth
认证参数
为了验证凭证是否有效,您需要指定一个 Git 仓库路径。连接器将在运行时使用该凭证访问该仓库,以判断凭证的有效性。
该认证参数通过 spec.auth.params
指定。
repository
:指定用于认证校验的 Git 仓库路径,例如 org/repo.git
。
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: github-demo
spec:
connectorClassName: git
address: https://github.com
auth:
name: basicAuth
params:
- name: repository
value: org/repo.git
secretRef:
name: github-secret
代理和配置
为了让客户端能够无凭证访问 Git 仓库,Git connectorclass 提供了一个代理服务器,用于自动注入认证信息。
拥有访问该连接器权限的客户端可以使用此代理服务器访问 Git 仓库,无需在客户端配置凭证。
为了简化使用,Git connectorclass 提供了可通过 CSI 挂载到 Pod 的配置信息。在 Pod 中执行 Git 操作时,可以自动使用代理服务完成 Git 操作。
代理地址
创建 Git Connector 时,系统会自动创建一个用于代理访问 Git 仓库的 Service。
系统会将代理地址记录在 status.proxy.httpAddress
字段中。
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: github-demo
spec:
# . . .
status:
conditions:
# . . .
proxy:
httpAddress:
url: http://c-github-demo.default.svc.cluster.local
配置
基于 Git connectorclass 创建的 Git Connector 提供以下配置:
gitconfig:Git 配置信息。
- 提供
.gitconfig
配置文件,其中 Git 仓库地址将被替换为代理地址。结合 connector-csi-driver,该配置文件会被挂载到 Pod 中,使得通过代理访问 Git 仓库,无需在客户端配置凭证。
Pod 中生成的配置文件示例:
[http]
extraHeader = Authorization: Basic <base64 encoded token of the service account>
[url "http://c-github-demo.default.svc"]
insteadOf = https://github.com
更多使用示例可参考 在 Clone Job 中使用 Git Connector。
更多