再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三

Gitlab runner 快速搭建CICD pipeline

640?wx_fmt=png

 

背景

日常开发中,相信大家已经做了很多的自动化运维环境,用的最多的想必就是利用Jenkins实现代码提交到自动化测试再到自动化打包,部署全流水线
Jenkins在devops担任了很重要的角色,但是另一方面相信目前大家的代码版本管理大多都是交给git来管理,在企业私有部署的大背景下,Gitlab由于丰富的插件和细粒度更高的权限控制被大家所采用。
如果只是把Gitlab作为代码版本管理,那就大大浪费他的附加价值,在Gitlab中自带CICD功能,此功能就可完全代替Jenkins,这样一来,我们就不必维护多套系统,简化开发到运维的复杂度
实践
由于gitlab资源消耗严重,本地没有搭建,所以使用gitlab官方

第一步注册gitlab账户(企业私有部署可忽略此步骤)

注册地址:https://gitlab.com/

第二步创建项目并推送至gitlab仓库

640?wx_fmt=png

 

并在项目中加入支持Docker容器的Dockerfile文件和支持触发gitlab CICD功能的 .gitlab-ci.yml脚本文件(此文件必须放在根目录)
最后的目录是这样

 640?wx_fmt=png

 

这两个文件的内容大致是
Dockerfile

640?wx_fmt=png

 

640?wx_fmt=png

 

 

推送Gitlab后的目录

640?wx_fmt=png

 


第三步安装gitlab Runner。

安装就简单几步再不赘述,安装教程(https://docs.gitlab.com/runner/install/windows.html),
由于使用的gitlab 非企业版官方,所以就只能用它提供的共享runner,企业私有部署的gitlab,一般管理员会给每个开发人员分配一个注册令牌token用来与runner绑定
安装runner时,将gitlab地址(不包含仓库)和注册令牌在需要填入的时填入即可授权此runner与Gitlab交互
Runner大致就是用来执行一系列脚本的载体,当gitlab有代码提交,gitlab会通知与之对应的runner,麻烦runner帮他执行提前写好的脚本规则(runner可安装支持一个项目也可共享出来支持多个项目),执行的每一步状态会通知gitlab,gitlab会在CICD控制面板打印出来


第四步自动触发CICD

只要当根目录包含了.gitlab-ci.yml文件的项目提交至Gitlab,就会自动触发CICD,然后通知对应的Runner执行脚本,并将状态打印

640?wx_fmt=png

 

点击每个JOb可看到内部执行的计划和输出,此处和jenkins流程类似

640?wx_fmt=png

 

由于.gitlab-ci.yml文件包含了推送镜像到镜像仓库,此时我们打开腾讯镜像仓库即可看见编译打包上传好的镜像

 640?wx_fmt=png

640?wx_fmt=png

 

此时有了镜像,那我们就可以依靠此镜像创建k8s集群服务


第五步启用云厂商k8s容器编排服务

创建k8s服务的大致步骤为:

640?wx_fmt=png

 

只要在云厂商控制台启用对应步骤并配置即可实现一个k8s集群的容器服务,此过程各平台略有不同
由于考虑到腾讯云k8s服务按量付费没有最低余额限制,阿里云则需要100余额的门槛,所以在腾讯云充值了1.6元来进行实验

640?wx_fmt=png

 

腾讯云各步骤文档:
创建集群 :https://cloud.tencent.com/document/product/457/9091
镜像仓库 :https://cloud.tencent.com/document/product/457/9117
创建服务 :https://cloud.tencent.com/developer/article/1412348
以上步骤创建完毕可在应用中心服务一栏可看到当前正在运行的服务,此处我设置为Pod为2个,相当于此服务下两个站点实例作为一个集群

640?wx_fmt=png

 640?wx_fmt=png

640?wx_fmt=png

 

第六步创建镜像触发器

现在我们已经依靠gitlab的runner服务推送的镜像创建了k8s容器服务
但每次提交镜像都得人为去重置服务并选择新的镜像,这个重复乏味的劳动过程想必谁都不想去做,
这时候就要用到云厂商提供的触发器来操作这个重复的过程。
提前制定好触发规则,例如匹配到某tag名称或者创建时间,即自动进行拉取镜像创建服务的过程

点击添加触发器

 640?wx_fmt=png

 

这里触发规则选择了只要有新版本就触发,并且选择被触发的服务,镜像提交,即更新服务拉取最新镜像构建

640?wx_fmt=png

 

测试

修改任意gitlab仓库代码,提交,然后等构建完成后,进入腾讯云的触发器页面
显示触发成功,此时服务已经使用了最新的docke镜像版本

640?wx_fmt=png

 

检查一下账户余额,发现还有0.87元。。。关闭集群。。待下次继续使用

640?wx_fmt=png

以上是GItlab与腾讯云实现代码提交到容器持续交付的过程,其他例如阿里云流程也类似

这里不得不夸赞一下腾讯云,容器服务没有最低消费限制,几毛钱就能让广大群众学习K8S容器服务,对开发者很友好。。强烈安利。。

640?wx_fmt=jpeg


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

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

相关文章

Codeforces Round #726 (Div. 2) F. Figure Fixing 二分图 + 思维

传送门 文章目录题意:思路题意: 给你一张nnn个点mmm条边的图,每个点都有一个当前值aia_iai​,目标值bib_ibi​,每次可以选择一条边(i,j)(i,j)(i,j),将ai,aja_i,a_jai​,aj​都加上任意一个数,问…

【NOI2020】命运【树形dp】【线段树合并】

题意:给一棵 nnn 个点的树,每条边需要染成黑白两种颜色中的一种。给出 mmm 个条件,每个条件给出 u,vu,vu,v,其中 uuu 是 vvv 的祖先,要求 uuu 到 vvv 的链上至少一条黑边。求方案数 模 998244353998244353998244353。 …

.NET Core 3.0之深入源码理解Kestrel的集成与应用(二)

前言前一篇文章主要介绍了.NET Core继承Kestrel的目的、运行方式以及相关的使用,接下来将进一步从源码角度探讨.NET Core 3.0中关于Kestrel的其他内容,该部分内容,我们无需掌握,依然可以用好Kestrel,本文只是将一些内部…

Codeforces Round #726 (Div. 2) E2. Erase and Extend (Hard Version) 贪心

传送门 文章目录题意:思路:题意: 给你一个长度为nnn的串sss,你有两个操作可以使用: (1)(1)(1)从sss的结尾删除一个字母。 (2)sss(2)sss(2)sss。 让你通过若干次操作使其变成一个长度为kkk的串,且其字典序最…

【BZOJ3451】Normal【期望线性性】【点分治】【NTT卷积】

题意:随机分治中心点分治的期望操作次数 n≤3104n\leq 3\times 10^4n≤3104 即求点分树的 siz 之和的期望 即祖孙关系对数期望 考虑一有序点对 (u,v)(u,v)(u,v),uuu 在点分树上是 vvv 祖先当且仅当 uuu 是 u∼vu\sim vu∼v 路径上第一个被选为分治中心…

译 | 使用Roslyn分析器高效编写更好的代码

原文:Mika Dumont翻译:汪宇杰Roslyn 是 .NET 编译器平台,即使在运行代码之前,它也能帮助您捕获 Bug。例如内置于 Visual Studio 中的Roslyn 拼写检查分析器。假设您正在创建一个静态方法,并将 static 单词拼错为 statc…

Codeforces Round #724 (Div. 2) F. Omkar and Akmar 组合数学 + 博弈

传送门 文章目录题意:思路:题意: 思路: 首先我们先来研究一下这个游戏,手画几个会惊奇的发现,后手这个b怎么怎么画都赢啊???对,没错,就是怎么画都…

Visual Studio 支持 Java?谣言止于智者

在去年的某一段时间内,我们经常会看到标题类似为“宇宙第一 IDE Visual Studio 支持 Java 了!”的文章。当时,韩老师看到这篇文章也是一脸懵逼。公司里做 Java 的开发童鞋们就坐在韩老师附近(嗯,不超过五米的距离&…

【SCOI2014】方伯伯的商场之旅【数位dp】【单峰函数】

题意:给定 l,r,kl,r,kl,r,k ,对于一个 kkk 进制数,将数码看成这个位置的石子个数,每将一个石子移动 111 的距离需要 111 的代价。求 [l,r][l,r][l,r] 中的所有数在 kkk 进制下将石子集中在一个位置的最小代价之和。 l≤r≤1015,k≤…

Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 最小生成树 + 虚拟点

传送门 文章目录题意:思路:题意: 思路: 看错题导致误入歧途,如果能早点看见翻译也不至于一天多也没想出来。 求联通的最小代价,自然的想到了能不能建边跑最小生成树。 对于两点之间比较好弄,直…

【NOI2007】货币兑换【任意坐标斜率优化】【CDQ分治】

题意:有 A,B 两种金券,给出 nnn 天内分别的单位价格和可以购买的数量的比例。开始有 SSS 元,求 nnn 天后最多能有多少元。 提示:每次操作一定全买全卖 n≤105n\leq 10^5n≤105 设 fnf_nfn​ 表示第 nnn 天结束后手上…

小白开学Asp.Net Core 《八》

小白开学Asp.Net Core 《八》— — .Net Core 数据保护组件1、背景我在搞(https://github.com/AjuPrince/Aju.Carefree)这个开源项目的时候,想做一些防止恶意攻击的小功能(如果 我通过页面 /Dome/GetData?id123,那是不…

你必须知道的Docker镜像仓库的搭建

近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需…

nowcoder 河 我 车 题 错 天 乐 赛 倍增处理

传送门 文章目录题意:思路:题意: 思路: 倍增经典题了,考虑维护一个前缀和sum[i]sum[i]sum[i],对于iii位置我们肯定是贪心的选能到的最远位置,即第一个>sum[i−1]k>sum[i-1]k>sum[i−1…

狄利克雷生成函数

一个没啥用的东西,权当加深对数论函数和狄利克雷卷积的理解。 定义 序列 {f1,f2,…}\{f_1,f_2,\dots\}{f1​,f2​,…} 的狄利克雷生成函数 DGF 定义为 f(s)∑n1∞fnnsf(s)\sum_{n1}^{\infin}\frac{f_n}{n^s}f(s)n1∑∞​nsfn​​ 这里不要求 fff 是积性函数。 显…

ASP.NET Core Web Api之JWT(一)

最近沉寂了一段,主要是上半年相当于休息和调整了一段时间,接下来我将开始陆续学习一些新的技能,比如Docker、Jenkins等,都会以生活实例从零开始讲解起,到时一并和大家分享和交流。接下来几节课的内容将会讲解JWT&#…

Codeforces Round #658 (Div. 2) D. Unmerge 思维 + 背包

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 我们可以假设有两个桶&#xff0c;让后向里面放数&#xff0c;可以发现&#xff0c;如果向其中放入了aia_iai​&#xff0c;那么紧跟在他后面的所有<ai<a_i<ai​的数都必须跟在ai…

【牛客NOIP模拟】牛半仙的魔塔(增强版)【贪心】【并查集】

题意&#xff1a;一个魔塔游戏的地图是一棵以 111 为根的树&#xff0c;起点为根&#xff0c;除根外每个结点有一个怪物&#xff0c;给定每个怪物血量、攻击、防御、奖励蓝宝石个数&#xff08;加防御&#xff09;&#xff0c;勇士的血量、攻击、防御&#xff0c;遇到怪物必须战…

撸过一万行代码,你看过这篇文章吗?

北上广深真的是技术的宝地吗&#xff1f;犹记得刚刚参加工作之后&#xff0c;有人邀请我去深圳&#xff0c;说沿海地区是IT行业从业人员的宝地&#xff0c;只有在那里才会学到真正的技术&#xff0c;而且能拿到更高的工资&#xff0c;不管从哪个层面来说&#xff0c;都值得你去…

Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 初始有左右手&#xff0c;上面各有一个数字为000的卡牌&#xff0c;每次都有一个新卡kik_iki​&#xff0c;你可以将其放在左手或者右手&#xff0c;使两只手上的卡片范围在[ll,i,rl,i][l_{l,i},r_{l,i}][ll…