如何在极狐GitLab 启用依赖代理功能

本文作者:徐晓伟

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

本文主要讲述了如何在[极狐GitLab]启用依赖代理功能,用于加速构建过程,用于代理 Docker Hub 仓库。

文档

  1. 依赖代理
  2. 管理 极狐GitLab 依赖代理
  3. 加快作业执行速度
  4. 构建容器镜像并将其推送到容器镜像库
  5. 极狐GitLab artifacthub
  6. 镜像

说明

该功能只能在群组下的项目中使用

配置

默认依赖代理是关闭的

不同版本的 GitLab 菜单可能存在差异

开启依赖代理

  1. 导出 helm GitLab 配置

    复制代码
    # 将已配置的值导出到文件中
    helm -n gitlab-test get values my-gitlab > my-gitlab.yaml
  2. 更新配置

    复制代码
    helm upgrade -n gitlab-test --install my-gitlab gitlab/gitlab --timeout 600s -f my-gitlab.yaml --set global.appConfig.dependencyProxy.enabled=true --version 7.7.0
  3. 查看开启结果

    不同版本的 gitlab 菜单可能存在差异

使用

  1. 原始配置

    复制代码
    docker-build:
      image: docker:20.10.16
      stage: build
      variables:
        DOCKER_HOST: tcp://docker:2375
        DOCKER_TLS_CERTDIR: ""
      services:
        - docker:20.10.16-dind
  2. 使用群组依赖代理

    复制代码
    # 项目地址:https://gitlab.test.helm.xuxiaowei.cn/xuxiaowei/docker
    # CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:代表群组环境变量,也可直接使用 gitlab.test.helm.xuxiaowei.cn/xuxiaowei/dependency_proxy/containers
    docker-build:
      image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:20.10.16
      stage: build
      variables:
        DOCKER_HOST: tcp://docker:2375
        DOCKER_TLS_CERTDIR: ""
      services:
        - ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:20.10.16-dind

无法解析域名

  1. 问题
  1. 原因

    k8s 工作节点无法解析 gitlab 域名,需要在 k8s 所有工作节点 的 宿主机 增加本机 hosts 解析

  2. 解决(在所有工作节点上操作

    增加 GitLab 域名 host

    复制代码
    [root@anolis-7-7 ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    172.25.25.31 	anolis-7-7
    
    172.25.25.32 	gitlab.test.helm.xuxiaowei.cn
    
    [root@anolis-7-7 ~]# 
    
    [root@anolis-7-9 ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    172.25.25.32 	anolis-7-9
    
    172.25.25.32 	gitlab.test.helm.xuxiaowei.cn
    
    [root@anolis-7-9 ~]# 

域名证书信任

  1. 问题
  1. 原因

    1. 域名证书无法验证
  2. 解决

    1. 新建群组项目,在群组中的项目测试

    2. 查看 webservice 端口

      复制代码
      kubectl -n gitlab-test get svc | grep webservice

      记录下方的 IP 10.110.211.99,端口 8080

      复制代码
      [root@anolis-7-9 ~]# kubectl -n gitlab-test get svc | grep webservice
      my-gitlab-webservice-default                 ClusterIP      10.110.211.99    <none>        8080/TCP,8181/TCP,8083/TCP                6d3h
      [root@anolis-7-9 ~]#
    3. 创建配置文件夹(在所有工作节点上操作

      复制代码
      mkdir -p /etc/containerd/certs.d/_default
    4. 创建配置文件,使用上方 webservice 的 IP、端口(在所有工作节点上操作

      复制代码
      cat > /etc/containerd/certs.d/_default/hosts.toml << EOF
      [host."https://gitlab.test.helm.xuxiaowei.cn"]
        capabilities = ["pull", "resolve", "push"]
        skip_verify = true
      
      EOF
      
      cat /etc/containerd/certs.d/_default/hosts.toml
    5. 修改 containerd 配置文件 /etc/containerd/config.toml,结果如下( 在所有工作节点上操作

      复制代码
           [plugins."io.containerd.grpc.v1.cri".registry]
             config_path = "/etc/containerd/certs.d"
    6. 重启 containerd(在所有工作节点上操作

      复制代码
      systemctl restart containerd
  3. 查看结果

复制代码
    # 节选
    [root@anolis-7-9 ~]# kubectl -n gitlab-test describe pod runner-wxpkss5w-project-7-concurrent-0-n5ovuw2o 
    ...
    Events:
      Type    Reason     Age   From               Message
      ----    ------     ----  ----               -------
      Normal  Scheduled  3s    default-scheduler  Successfully assigned gitlab-test/runner-wxpkss5w-project-7-concurrent-0-n5ovuw2o to anolis-7-7
      Normal  Pulled     3s    kubelet            Container image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-f5da3c5a" already present on machine
      Normal  Created    3s    kubelet            Created container init-permissions
      Normal  Started    2s    kubelet            Started container init-permissions
      Normal  Pulled     1s    kubelet            Container image "gitlab.test.helm.xuxiaowei.cn:443/xuxiaowei-com-cn/dependency_proxy/containers/docker:20.10.16" already present on machine
      Normal  Created    1s    kubelet            Created container build
      Normal  Started    1s    kubelet            Started container build
      Normal  Pulled     1s    kubelet            Container image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-f5da3c5a" already present on machine
      Normal  Created    1s    kubelet            Created container helper
      Normal  Started    1s    kubelet            Started container helper
      Normal  Pulled     1s    kubelet            Container image "gitlab.test.helm.xuxiaowei.cn:443/xuxiaowei-com-cn/dependency_proxy/containers/docker:20.10.16-dind" already present on machine
      Normal  Created    1s    kubelet            Created container svc-0
      Normal  Started    1s    kubelet            Started container svc-0
    [root@anolis-7-9 ~]# 

号外号外!

极狐GitLab 正在推出DevSecOps 成熟度测评!链接:https://gitlab.cn/devsecops-assessment/ 测评非常全面并提供了可靠建议,即使不付费买产品,对自己想要落地 DevSecOps 的用户具有很高的参考意义!快来动手试试吧!

相关推荐
Aliex_git10 天前
Dockerfile 优化实践笔记
笔记·学习·gitlab
成为你的宁宁10 天前
Jenkins 自动化部署前后端分离若依项目全攻略:涵盖环境配置、Maven/Node.js 工具安装、GitLab 项目协同,及前后端构建、服务器推送与代码更新验证全步骤
node.js·自动化·gitlab·jenkins·maven
sunshinebo11 天前
一次 GitLab 无法启动的排查:Docker 日志把 500G 磁盘打满
docker·eureka·gitlab
何以不说话11 天前
DevOps、Git 和 GitLab
git·gitlab·devops
ZAEQgyKFs13 天前
永磁同步电机模型预测电流控制+滑模控制 [1]速度环采用滑模控制 滑模控制器采用新型趋近律与扰...
gitlab
马克Markorg14 天前
使用 Docker Compose 本地部署 GitLab 教程
docker·容器·gitlab
大尚来也17 天前
CI/CD 流水线搭建实战:GitHub Actions vs GitLab CI 2026 深度对比与选型指南
ci/cd·gitlab·github
ProgramHan17 天前
github、gitlab、gitee分别都是什么,为什么不能访问?
gitee·gitlab·github
Aliex_git20 天前
Gitlab Runner 配置实践
笔记·学习·ci/cd·gitlab
阿莫西林夹馍20 天前
GitLab的IP地址发生变更导致Runner掉线
gitlab