本文作者:徐晓伟
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
本文主要讲述了如何在[极狐GitLab]启用依赖代理功能,用于加速构建过程,用于代理 Docker Hub 仓库。
文档
说明
该功能只能在群组下的项目中使用
配置
默认依赖代理是关闭的
不同版本的 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.16 stage: build variables: DOCKER_HOST: tcp://docker:2375 DOCKER_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.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
无法解析域名
- 问题
原因
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.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 ~]#
域名证书信任
- 问题
原因
- 域名证书无法验证
解决
- 新建群组项目,在群组中的项目测试
查看 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 = true EOF cat /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-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 的用户具有很高的参考意义!快来动手试试吧!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。