You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes部署的自定义GitLab CI Runner无法连接gitlab.com Docker仓库

问题根因

该报错是因为你的自定义Runner的构建环境中,Docker客户端不信任registry.gitlab.com返回的SSL证书,通常有三类触发场景:

  • Runner部署的AKS集群内部存在SSL流量拦截代理,签发了自定义签名的GitLab站点证书
  • 你使用的Docker-in-Docker服务镜像/CI执行镜像默认缺失公网根证书信任列表
  • CI执行镜像属于精简版本,未预装ca-certificates工具包,无法识别公网可信根证书
解决方案

方案1:修改GitLab Runner部署配置(持久生效,适配所有任务)

如果你是通过Helm部署的AKS Runner,修改values.yaml配置,追加证书挂载规则:

  1. 先将需要信任的根证书存入AKS集群的Secret中:
kubectl create secret generic gitlab-registry-ca --from-file=./gitlab-ca.crt
  1. 在values.yaml的runners配置段增加挂载配置:
runners:
  config: |
    [[runners]]
      [runners.kubernetes]
        image = "docker:latest"
        privileged = true
      [[runners.kubernetes.volumes.secret]]
        name = "gitlab-registry-ca"
        mount_path = "/etc/docker/certs.d/registry.gitlab.com/"
        read_only = true
      [[runners.kubernetes.volumes.secret]]
        name = "gitlab-registry-ca"
        mount_path = "/usr/local/share/ca-certificates/"
        read_only = true
  1. 升级Runner部署后生效
helm upgrade gitlab-runner gitlab/gitlab-runner -f values.yaml

方案2:在CI流水线中临时注入证书(无需修改Runner配置,仅适配当前项目)

在项目的.gitlab-ci.yml的before_script段增加证书导入逻辑:

before_script:
  # 若使用alpine基础镜像需先安装证书工具
  - apk add --no-cache ca-certificates openssl
  - |
    echo "$GITLAB_REGISTRY_CA" > /usr/local/share/ca-certificates/gitlab-ca.crt
    update-ca-certificates
    mkdir -p /etc/docker/certs.d/registry.gitlab.com/
    cp /usr/local/share/ca-certificates/gitlab-ca.crt /etc/docker/certs.d/registry.gitlab.com/ca.crt
  - docker login registry.gitlab.com -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

提前将根证书内容存入项目CI变量GITLAB_REGISTRY_CA即可。

验证操作

配置完成后重新执行构建任务,docker login操作即可正常完成,后续镜像构建、推送流程可正常执行。

内容的提问来源于stack exchange,提问作者ghostika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:54:03