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

本文作者:徐晓伟

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

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

文档

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

说明

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

配置

默认依赖代理是关闭的

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

image.png

开启依赖代理

  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 菜单可能存在差异

image.png

image.png

使用

  1. 原始配置

    docker-build:image: docker:20.10.16stage: buildvariables:DOCKER_HOST: tcp://docker:2375DOCKER_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.16stage: buildvariables:DOCKER_HOST: tcp://docker:2375DOCKER_TLS_CERTDIR: ""services:- ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:20.10.16-dind
    

无法解析域名

  1. 问题

image.png

  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.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 ~]# 
    

域名证书信任

  1. 问题

image.png

  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 = trueEOFcat /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. 查看结果

image.png

    # 节选[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 的用户具有很高的参考意义!快来动手试试吧!

DevSecOps 成熟度评估.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UG NX二次开发(C#)-使用UG NX的开发模板创建项目失败的原因和解决方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、可能的原因与解决方案2.1 Visual studio安装不完整2.2 解决方案2.2.1 对于 .net 桌面开发2.2.2 使用C++的桌面开发2.2.3 通用Windows平台开发2.2.4 visual studio扩展开发2.2.5 单个组件…

C语言 获取系统时间

获取系统时间的函数 #define _TIMEBUFLEN (40) // 获取日志缓冲需要的大小 void GetSysTime(char* pTimeBuf, u32 dwSize) {if (pTimeBuf NULL){return;} #if defined(_MSC_VER)SYSTEMTIME sys { 0 };GetLocalTime(&sys);sprintf_s(pTimeBuf, dwSize, "%4d-%02d-%0…

SSH穿透ECS访问内网RDS数据库

处于安全考虑&#xff0c;RDS一般只会允许指定的IP进行访问&#xff0c;而我们开发环境的IP往往是动态的&#xff0c;每次IP变动都需要去修改RDS的白名单&#xff0c;为我们的工作带来很大的不便。 那么如何去解决这个问题&#xff1f; 假如我们有一台ESC服务器&#xff0c;E…

STC89C52学习笔记(八)

STC89C52学习笔记&#xff08;八&#xff09; 综述&#xff1a;本文讲述了LED点阵屏以及如何进行数据串行输入&#xff0c;并行输出。 一、LED点阵屏 1.介绍 LED点阵屏由多个LED组成&#xff0c;以矩阵形式排列&#xff08;类似于矩阵键盘&#xff09;&#xff0c;像素一般…

Objective-C学习笔记(@property,id,instancetype)4.9

1.增强property&#xff1a;自动生成getter和setter方法的声明和实现。 原理&#xff1a;①自动声明私有属性②自动生成getter和setter方法的声明和实现。 property 数据类型 变量名 注意变量名要去掉下划线&#xff0c;如果同时重写getter和setter那么不回自动声明私有属性。…

【iOS ARKit】App 中嵌入 AR Quick Look

AR Quick Look 功能强大&#xff0c;但在应用中嵌入并使用它实现 AR体验却非常简单&#xff0c;如其他所有QuickLook使用一样&#xff0c;简单到只需要提供一个文件名就可以达到目标。 AR Quick Look 支持.usdz 和.reality 两种格式文件&#xff0c;如果在 Xcode 工程中引入了 …

CSS滚动条样式修改

前言 目前我们可以通过 CSS伪类 来实现滚动条的样式修改&#xff0c;以下为修改滚动条样式用到的CSS伪类&#xff1a; ::-webkit-scrollbar — 整个滚动条 ::-webkit-scrollbar-button — 滚动条上的按钮 (上下箭头) ::-webkit-scrollbar-thumb — 滚动条上的滚动滑块 ::-web…

安卓逆向之-Xposed RPC

引言: 逆向为最终的协议,或者爬虫的作用。 有几种方式,比如直接能力强,搞成协议。 现在好多加密解密都写入到so ,所以可以使用unidbg 一个可以模拟器so 执行的环境的开源项目。RPC 调用,又分为Frida, 还有今天讲的Xposed RPC。 原理: Xposed 可以hook ,然后可以直接…

了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步&#xff0c;显著提升了各种任务的完成度。然而&#xff0c;其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数&#xff0c;需要…

Golang使用PGO优化程序性能

文章目录 参考文章PGO是什么使用PGO的好处PGO做了什么热函数内联什么是内联内联的好处Go默认的内联策略查看内联预算PGO的热函数内联 去虚拟化调用指令高速缓存 PGO有什么缺点可执行程序变大构建时间变长 PGO怎么使用典型的工作流程收集CPU配置文件生产环境启动PGO代码改动重新…

html中部分重要或有趣的标签讲解

1.a标签 在 HTML 语法中&#xff0c;a 标签称作 锚元素&#xff0c;这种称呼来源于 a 标签这种元素具有锚定资源的功能。从归属来看&#xff0c;所锚定的资源可以本地的&#xff0c;也可是来自网络上的&#xff1b;而从分类来看&#xff0c;所锚定的资源&#xff0c;可以是网页…

Electron+React 搭建桌面应用

创建应用程序 创建 Electron 应用 使用 Webpack 创建新的 Electron 应用程序&#xff1a; npm init electron-applatest my-new-app -- --templatewebpack 启动应用 npm start 设置 Webpack 配置 添加依赖包&#xff0c;确保可以正确使用 JSX 和其他 React 功能&#xff…

3.1 基本形式 机器学习

从本章本节开始就开始正式介绍机器学习的算法了&#xff01;我们首先登场的是---------线性模型。 w可以理解为权重&#xff0c;我们的x就是我们的样本点的各个特征数值&#xff0c;最后输出模型f&#xff08;x&#xff09;。其代表我们把样本点带入&#xff0c;以二分类为例&a…

厂房起火3D消防灭火安全救援模拟演练

深圳VR公司华锐视点依托前沿的VR虚拟现实制作、三维仿真和图形图像渲染技术&#xff0c;将参训者带入栩栩如生的火灾现场。佩戴VR头盔&#xff0c;参训者将真切体验火势蔓延的紧张与危机&#xff0c;身临其境地感受火灾的恐怖。 并且消防安全VR虚拟现实演练系统精心模拟了住宅、…

修复 Windows 上的 PyTorch 1.1 github 模型加载权限错误

问题: 在 Windows 计算机上执行示例 github 模型加载时,生成了 master.zip 文件的权限错误(请参阅下面的错误堆栈跟踪)。 错误堆栈跟踪: 在[4]中:en2de = torch.hub.load(pytorch/fairseq, transformer.wmt16.en-de, tokenizer=moses, bpe=subword_nmt) 下载:“https://…

90天玩转Python—11—基础知识篇:Python自动化操作Excel:读写、增删改查、分组统计全攻略

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

uniapp 卡片勾选

前言 公司的app项目使用的uniapp&#xff0c;项目里有一个可勾选的卡片功能&#xff0c;效果图如下&#xff1a; 找了一圈没找到什么太好的组件&#xff0c;于是就自己简单写了一个&#xff0c;记录一下。避免以后还会用到 代码 <template><view class"card-…

ELK 企业级日志分析系统 简单介绍

目录 一 ELK 简介 1&#xff0c; elk 是什么 2&#xff0c;elk 架构图 3&#xff0c;elk 日志处理步骤 二 Elasticsearch 简介 1&#xff0c; Elasticsearch 是什么 2&#xff0c; Elasticsearch 的核心概念 3&#xff0c; Elasticsearch 的原理 三 Logstas…

React Css 四种引入方式

React CSS 内联样式 优点 样式之间不会有冲突可以动态获取组件中state的值 缺点 要使用驼峰标识部分样式没有很友好的提示如果大量去写内敛样式 容易造成代码混乱伪类和伪元素无法编写 class HighCom extends PureComponent {constructor(props) {super(props)this.state…

labview技术交流-如何判断一个数是否为质数

问题起源 如何判断一个数是否为质数&#xff0c;其实并不难&#xff0c;只要你知道质数的定义&#xff0c;按照它的定义去编写代码就可以了。但是没有思路的人可能就会一直找不到方向&#xff0c;所以我就简单介绍一下。 还有我想吐槽的点&#xff0c;labview本来就是很小众的语…