gitlab 安装gitlabrunner 无法连接tiller_谈一谈GitLab Runner是个什么东东?

3c03c9e25749a7c9bd17436c35d3a631.png

概念

我从官网搜了一下,GitLab Runner 是一个开源项目, 它用来运行你定制的任务(jobs)并把结果返回给 GitLab。 GitLab Runner 配合GitLab CI(GitLab 内置的持续集成服务) 协调完成任务。

gitlab

想要了解 GitLab Runner之前,我们先要知道或者说必须要知道GitLab是什么东东?

GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。简单来说就是github的翻版,一个存放代码的仓库平台。最简单的应用场景就是开发使用git提交代码(push)到gitlab,也可以从gitlab下拉代码(pull)到本地。

对于开发者们来说,git + GitLab已经满足了日常的全部,根本没想过还有GitLab Runner这个东东。那么官方为什么还要推出GitLab Runner这个开源项目?它有哪些应用场景?对于开发者来说有没有必要学习GitLab Runner呢?

GitLab为什么要推出Gitlab Runner?

我个人观点是:GitLab为了加入可持续集成工具(CI/CD)市场。在国内IT界技术人士眼里几乎都听到过大名鼎鼎的jenkins,因为jenkins是一个可持续集成、交付、部署的web平台,jenkins在这个领域几乎占领了整个国内市场。当然还有一些国外的集成工具,但国内几乎都不用。

GitLab-CI(GitLab可持续集成服务)确实在大家眼里是一个比较陌生的概念,因为GitLab是从8.0版本才开始集成GitLab-CI功能的,应用的人本来就很少,所以知道人就更少了,但是随着近年来GitLab的发展越来越强盛,版本更新速度非常之快,功能应用也越来越丰富,其GitLab Runner就孕育而成了。

在当今,git + gitlab + jenkins还是主流的万精油方案,这无可厚非,但由于git + gitlab + gitlab-CI 部署非常轻便,加上越来越多人开始理解和应用gitlab-CI + gitlab-runner发布方案,大多数人都在朝着更加方便快捷部署方向前进,若干年后jenkins在国内的霸主地位岌岌可危,但最终还是要由市场来决定。

GitLab Runer 和 GitLab CI 关系

GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本。如下图所示:

296c23ce31d7243539db87dc96c07473.png

应用场景

因为我把gitlab-runner应用在web发布环境中,所以在实际应用中我进行了一些调整,把gitlab-runner当作“中转站”,一对多方式。“中转站”与各源站通过ssh连接,“中转站”定义好执行的脚本,脚本内容就是通过ssh连接到各源站执行git pull等操作。如下图所示:

0d65a1a01dbb668d9e9c00d979bd72f0.png

使用“中转站”的好处是:

1)单台server管理所有Runner即可,脚本管理集中化;

2)不用每台源站PC都要安装Runner,然后再注册,过于繁琐;

3)ssh 连接方式主流、便捷,但需要控制好防火墙策略;

4)在gitlab UI界面,管理runners也简洁明了;

5)单个job执行后,所有源站反馈结果信息集中化,方便查看;

其他方案

第一种(推荐):公用1个runner,很简单,所有后方集群向gitlab-ci注册,公用runner根据定义不同的脚本(脚本命名为不同集群名称,容易识别)去往不同的集群。(都是ssh连到集群执行命令)

第二种(高级):1台多个runner,虽然多,但是压力分摊到不同runner进程上,但也不适用建太多runner,这样管理反而不方便。

3469a3fd22753db476fd08c6e2f3fc2d.png
f736c533343ea3e9863584e8c6a1c2d9.png

我为什么要运行多个runner?

这个主要还是为了区分业务,每一类业务使用一个runner执行,这样在管理上也方便区分,当然,所有业务也可以共用一个runner。

最后,对于开发者来说有没有必要学习GitLab Runner?

我个人觉得GitLab的可持续集成服务和发布对于开发者来说只要知道有这个功能就可以了,而对于web框架部署或是运维人员来说就非常有必要学习一下了。

本文错漏不足之处还请见谅!

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

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

相关文章

mysql百万级去重_mysql优化小技巧之去除重复项(百万级数据)

mysql优化小技巧之去除重复项(百万级数据)发布时间:2018-06-11 11:54,浏览次数:482, 标签:mysql说到这个去重,脑仁不禁得一疼,尤其是出具量比较大的时候。毕竟咱不是专业的DB,所以嘞,只能自己弄…

高中必背88个数学公式_高中数学:必修+选修全部知识点精华!附高考必背203个公式...

童鞋们好呀,2021高考将至,但是很多高三同学还是处于一个很不好的状态感觉每一科都很紧张,学校学习的节奏快,自己基础又没跟上,还要补基础总觉得后一步还没跟上,就要迈下一步了,不知道从哪学&…

mysql获取逻辑日志_Mysql 逻辑架构图及日志系统

1、Mysql逻辑架构图场景一:一条SQL语句如何执行?如图显示一条SQL语句的执行过程:执行器的执行流程:2、Mysql日志系统说到日志系统,需要了解几个概念:creash-safe、redo log、binlog、WAL技术。Redo log用于…

专科学python真的不好_专科生转行做python运维靠谱吗?

看了下问题,专科做运维,的确在找工作的时候没有优势,but,这并不代表运维行业对学历要求高,而是你找别的工作,专科也没有什么优势。知乎水平动辄985,专科就显得那么的微不足道。但没有竞争力不太表找不到相关…

mysql实例详解_MySQL 多实例详解

MySQL多实例配置方法1、单一配置文件2、多配置文件。二、实战步骤:1、同步时间2、准备mysql依赖包3、环境准备3.1添加mysql用户3.2编译安装mysql4、安装MySQL多实例5、准备配置文件6、启动MySQL7、登录mysql与一些安全措施8、关闭MySQL9,、提供简易管理脚本10、为my…

如何提高go代码覆盖率_如何通过静态分析提高iOS代码质量

随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析。程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分…

mysql 查看表是否存在_MySQL优化篇二

单表优化最佳左前缀原则为,保持索引的定义和使用顺序的一致性将含In的范围查询,放到where条件语句的最后。索引需要逐步优化两表优化小表驱动大表避免索引失效的一些原则:复合索引,不要跨列或无序使用(最佳左前缀&…

centos下mysql 命令_CentOS下mysql数据库常用命令总结

### 1.更改root密码mysqladmin -uroot password yourpassword### 2.远程登陆mysql服务器mysql -uroot -p -h192.168.137.10 -P3306### 3.查询数据库show databases;### 4.进入某个数据库use databasename;### 5.列出数据库中的表show tables;### 6.查看某个表全部字段desc slow…

java http请求_如何设置Fiddler来拦截Java代码发送HTTP请求,进行各种问题排查

我们使用Java的RestTemplate或者Apache的HTTPClient编程的时候,经常遇到需要跟踪Java代码发送的HTTP请求明细的情况。和javascript代码在浏览器里发送请求可以通过Chrome开发者工具方便地跟踪一样,对于Java代码发送的网络请求,我们也可以使用…

mysql自增id用完了_MySQL 自增 ID 用完了怎么办?

MySQL 自增 ID 用完了怎么办?在MySQL中有很多类型的自增ID,每个自增ID都设置了初始值,然后按照一定的步长增加,只要定义了字节长度,那么就会有上限,如果达到上限再次添加,则会报主键冲突错误&am…

第十篇学会编写python代码_Python之路,第十篇:Python入门与基础10

python3 函数函数(function)什么是函数:函数是可以重复执行的代码块,可以重复使用;作用: 定义用户级的函数;实现了一个代码块的封装;语法:def 函数名(参数列表):语句块(代码块)...…

python报错怎么看_python中的错误如何查看

python常见的错误有1.NameError变量名错误2.IndentationError代码缩进错误3.AttributeError对象属性错误4.TypeError类型错误5.IOError输入输出错误6.KeyError字典键值错误具体介绍1.NameError变量名错误报错:>>> print aTraceback (most recent call last…

http通道连接mysql_通过http tunnel连接mysql

在/etc/nginx/nginx.conf的第一行加上load_module /usr/lib64/nginx/modules/ngx_http_proxy_connect_module.so;nginx -s reload> nginx: [emerg] dlopen() "/usr/lib64/nginx/modules/ngx_http_proxy_connect_module.so" failed (/usr/lib64/nginx/modules/ngx_…

山洪沟防洪治理工程技术规范_幸福沟水库一期工程完工丨尚志城市供水、防洪、农业灌溉皆升级...

日前,尚志市幸福沟水库一期工程建设完成,已蓄水试运行。幸福沟水库工程是列入黑龙江省“十三五”规划的重点水利项目,是哈市重点推进的两座中型水库之一,也是尚志市一项打基础、利长远、惠民生的重大战略民生工程。幸福沟水库位于…

子类怎么继承父类方法中的变量_JavaOOP_04 封装 继承

一、封装概念:隐藏程序内部的具体实现细节,对外提供接口,从而提高程序的安全性。高内聚,低耦合。使用封装的步骤:1、属性私有化,使用private访问修饰符进行修饰2、对外提供 setter/getter 方法 setter设置值…

mySQL字符串字段区别_MySQL类型之(字符串列类型区分、数据类型区分)

1.首先CHAR, VARCHAR, TEXT和BINARY, VARBINARY, BLOB的区别:CHAR, VARCHAR, TEXT称为: 非二进制字符串;BINARY, VARBINARY, BLOB称为:二进制字符串;非二进制字符串和二进制字符串的区别是:非二进制字符串包含的是字符字符串…

mysql 社区版密码如何修改_如何用优雅的方法修改MySQL root密码

搭噶好,我系小编,我好久没发文章了啊,今天发文章的原因是,我竟然忘了我的MySQL root密码。。本来想找RAKsmart客服直接重置啥的,后来想想还是自己搞吧,还能长知识。然后,我发现一个事情&#xf…

python全局变量赋值_Python全局变量和局部变量

python中,对于变量作用域的规定有些不一样。在诸如C/C、java等编程语言中,默认在函数的内部是能够直接訪问在函数外定义的全局变量的,可是这一点在python中就会有问题。以下是一个样例。test.py:#!/usr/bin/pythonCOUNT1def func():COUNT CO…

mysql dos入门_在dos上操作mysql的基本?

2安装:A,双击运行“mysql-5.5.27-win32.msi”B,MySQL安装向导启动C,按“Next”继续3配置:MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL 主要目标是快速、健…

python读取api接口频率_Python基础(API接口测试)

importflask,json,pymysqlfrom flask importrequest, jsonify, Responsefrom datetime importdatetimefrom flask_cors importCORSdbpymysql.Connect(hostlocalhost,port3306,userroot,passwd24576946,dbschool,)cursordb.cursor()server flask.Flask(__name__)#允许跨域访问CO…