如何给极狐GitLab Runner 添加 MinIO 域名 host

本篇作者:徐晓峰

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

本篇文章介绍了如何自定义极狐 Gitlab Runner 使用的 MinIO 域名 host

问题

  1. 实例项目:https://framagit.org/xuxiaowei-com-cn/cache.git ,分支:maven

  2. 发现异常:


  1. 分析

    1. 流水线作业运行开始,无法下载依赖,无法解析到 MinIO(缓存服务器)的 IP
    2. 流水线作业运行结束,无法上传依赖,无法解析到 MinIO(缓存服务器)的 IP

启用 GitLab Runner 缓存域名配置

  1. 导出 helm gitlab 配置

    # 将已配置的值导出到文件中
    helm -n gitlab-test get values my-gitlab > my-gitlab.yaml
    
  2. 查看 gitlab runner 默认配置

    # 此处为节选,不同版本可能会存在差异,请以 https://artifacthub.io/packages/helm/gitlab/gitlab?modal=values 中的配置为准
    gitlab-runner:
      runners:
        config: |
          [[runners]]
            [runners.kubernetes]
            image = "ubuntu:22.04"
            {{- if .Values.global.minio.enabled }}
            [runners.cache]
              Type = "s3"
              Path = "gitlab-runner"
              Shared = true
              [runners.cache.s3]
                ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }}
                BucketName = "runner-cache"
                BucketLocation = "us-east-1"
                Insecure = false
            {{ end }}
    
  3. 修改配置如下

    gitlab-runner:
      runners:
        config: |
          [[runners]]
            [runners.kubernetes]
            image = "ubuntu:22.04"
            [[runners.kubernetes.host_aliases]]
            ip = "172.25.25.32"
            hostnames = [ "minio.test.helm.xuxiaowei.cn" ]
            {{- if .Values.global.minio.enabled }}
            [runners.cache]
              Type = "s3"
              Path = "gitlab-runner"
              Shared = true
              [runners.cache.s3]
                ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }}
                BucketName = "runner-cache"
                BucketLocation = "us-east-1"
                Insecure = false
            {{ end }}
    
  4. 更新配置

    helm upgrade -n gitlab-test --install my-gitlab gitlab/gitlab --timeout 600s -f my-gitlab.yaml --version 7.7.0
    
  5. 等待所有 gitlab-runner 旧 pod 删除完成,新 pod 正常运行时,重试流水线,即可正确解析到 MinIO(缓存服务器)的 IP


  1. 有上图可知,无法验证 MinIO(缓存服务器)域名证书, 解决方案可以使用GitLab Runner 信任缓存域名证书的方法解决。

更多关于极狐GitLab 的最佳实践,请搜索关注【极狐GitLab】公众号或者登录极狐GitLab 官网 https://gitlab.cn 进行学习。