本文作者:徐晓伟
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
本文主要讲述了如何在[极狐GitLab]启用依赖代理功能,用于加速构建过程,用于代理 Docker Hub 仓库。
文档
- 依赖代理
- 管理 极狐GitLab 依赖代理
- 加快作业执行速度
- 构建容器镜像并将其推送到容器镜像库
- 极狐GitLab artifacthub
- 镜像
说明
该功能只能在群组下的项目中使用
配置
默认依赖代理是关闭的
不同版本的 GitLab 菜单可能存在差异
开启依赖代理
-
导出 helm GitLab 配置
# 将已配置的值导出到文件中 helm -n gitlab-test get values my-gitlab > my-gitlab.yaml
-
更新配置
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
-
查看开启结果
不同版本的 gitlab 菜单可能存在差异
使用
-
原始配置
docker-build:image: docker:20.10.16stage: buildvariables:DOCKER_HOST: tcp://docker:2375DOCKER_TLS_CERTDIR: ""services:- docker:20.10.16-dind
-
使用群组依赖代理
# 项目地址: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.16stage: buildvariables:DOCKER_HOST: tcp://docker:2375DOCKER_TLS_CERTDIR: ""services:- ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:20.10.16-dind
无法解析域名
- 问题
-
原因
k8s 工作节点无法解析 gitlab 域名,需要在 k8s 所有工作节点 的 宿主机 增加本机 hosts 解析
-
解决(在所有工作节点上操作)
增加 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.localdomain6172.25.25.31 anolis-7-7172.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.localdomain6172.25.25.32 anolis-7-9172.25.25.32 gitlab.test.helm.xuxiaowei.cn[root@anolis-7-9 ~]#
域名证书信任
- 问题
-
原因
- 域名证书无法验证
-
解决
-
新建群组项目,在群组中的项目测试
-
查看 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 ~]#
-
创建配置文件夹(在所有工作节点上操作)
mkdir -p /etc/containerd/certs.d/_default
-
创建配置文件,使用上方 webservice 的 IP、端口(在所有工作节点上操作)
cat > /etc/containerd/certs.d/_default/hosts.toml << EOF [host."https://gitlab.test.helm.xuxiaowei.cn"]capabilities = ["pull", "resolve", "push"]skip_verify = trueEOFcat /etc/containerd/certs.d/_default/hosts.toml
-
修改 containerd 配置文件 /etc/containerd/config.toml,结果如下( 在所有工作节点上操作)
[plugins."io.containerd.grpc.v1.cri".registry]config_path = "/etc/containerd/certs.d"
-
重启 containerd(在所有工作节点上操作)
systemctl restart containerd
-
-
查看结果
# 节选[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-7Normal Pulled 3s kubelet Container image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-f5da3c5a" already present on machineNormal Created 3s kubelet Created container init-permissionsNormal Started 2s kubelet Started container init-permissionsNormal Pulled 1s kubelet Container image "gitlab.test.helm.xuxiaowei.cn:443/xuxiaowei-com-cn/dependency_proxy/containers/docker:20.10.16" already present on machineNormal Created 1s kubelet Created container buildNormal Started 1s kubelet Started container buildNormal Pulled 1s kubelet Container image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-f5da3c5a" already present on machineNormal Created 1s kubelet Created container helperNormal Started 1s kubelet Started container helperNormal 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 machineNormal Created 1s kubelet Created container svc-0Normal Started 1s kubelet Started container svc-0[root@anolis-7-9 ~]#
号外号外!
极狐GitLab 正在推出DevSecOps 成熟度测评!链接:https://gitlab.cn/devsecops-assessment/ 测评非常全面并提供了可靠建议,即使不付费买产品,对自己想要落地 DevSecOps 的用户具有很高的参考意义!快来动手试试吧!