在 Tekton 任务中使用 GitLab Connector

在 Tekton 任务中使用 GitLab Connector 可以实现 GitLab 凭据的集中管理,并在 Tekton 任务执行过程中安全访问 GitLab 仓库。

Tekton 任务的要求

并非所有 Tekton 任务都能使用 GitLab Connector。

GitLab Connector 通过 CSI Driver 注入临时凭据。它提供的配置会生成带有临时认证和 URL 重写设置的配置文件:

  • gitconfig:为 Git CLI 操作提供 .gitconfig 文件
  • gitlabconfig:为 GitLab CLI(glab)操作提供 config.yml 文件

生成的 .gitconfig 示例:

[http]
    extraHeader = Authorization: Basic OmV5Smhixxxxxxxxx==
[url "http://c-gitlab-connector.gitlab-demo.svc"]
    insteadOf = https://gitlab.com

生成的 config.yml 示例:

git_protocol: http
host: c-gitlab-connector.gitlab-demo.svc
no_prompt: true
telemetry: false
hosts:
  c-gitlab-connector.gitlab-demo.svc:
    token: k8s-api-token-xxxxxxxx

因此,Tekton 任务必须满足以下要求才能使用 GitLab Connector:

对于 Git CLI 操作:

  • 支持通过 Workspace 挂载 .gitconfig 文件

对于 GitLab CLI(glab)操作:

  • 支持通过 Workspace 挂载 config.yml 文件
  • 支持通过 Workspace 挂载 .gitconfig 文件(使用 glab 克隆仓库或操作仓库目录时必需)

使用说明

使用 GitConfig 进行 Git CLI 操作

在 Tekton 任务中使用 Git CLI 时,挂载 gitconfig 配置:

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: git-demo
spec:
  # . . .
  workspaces:
  - name: git-auth
    csi:
      driver: connectors-csi
      readOnly: true
      volumeAttributes:
        connector.name: gitlab-connector
        configuration.names: "gitconfig"

参数说明:

  • name:Task 中定义的 Workspace 名称
  • csi
    • driver:固定值 connectors-csi
    • readOnly:固定值 true
    • volumeAttributes:CSI 卷属性
      • connector.name:GitLab Connector 名称
      • connector.namespace:(可选)GitLab Connector 所在命名空间,未指定则使用 TaskRun 所在命名空间
      • configuration.names:配置名称(Git CLI 操作为 gitconfig

使用 GitLabConfig 进行 GitLab CLI 操作

在 Tekton 任务中使用 GitLab CLI(glab)时,需同时挂载 gitlabconfiggitconfig

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: glab-demo
spec:
  # . . .
  workspaces:
  - name: gitlab-auth
    csi:
      driver: connectors-csi
      readOnly: true
      volumeAttributes:
        connector.name: gitlab-connector
        connector.namespace: ""
        configuration.names: "gitlabconfig,gitconfig"

Task 应当:

  1. 将配置文件复制到合适的位置:

    • .gitconfig~/.gitconfig
    • config.yml~/.config/glab-cli/config.yml
  2. 设置正确的文件权限:

    • ~/.gitconfig644
    • ~/.config/glab-cli/config.yml600

使用自定义 CLI 工具配合 GitLab Connector

使用自定义 CLI 工具(如 reviewdog)配合 GitLab Connector 时,可以使用内置的配置文件通过代理服务访问 GitLab API。

详情请参见:Connectors CSI Built-in Configurations

或参考 Using Reviewdog with GitLab Connector 获取更多信息。

延伸阅读