git+jenkins+harbor+kubernates可持续集成构建之——总览

大家好,我是Linux运维工程师 Linke 。技术过硬,很少挖坑~

首先要说一大堆废话,有兴趣的可以看看,没兴趣的直接看最下面就行了。DevOps理念的落地,最基本上先要实现CI/CD的落地实现,然后再继续往长远了建设其余周边自动化配套体系。建议没做过 CI / CD 的看一下,或许对你做持续集成交付整条线路的开发有一丁点帮助。

我们要知道 CI / CD  是啥子玩意儿。CI 全英文名 Continuous integration(持续集成),CD 全英文名 Continuous Delivery (持续交付),这两单词我不上网查,我反正是不会拼。

三年前,我就开始针对我们公司研发项目做 CI / CD 了。运维做的就好比是城市规划者,要掌控全局,因此各方面知识都要了解,网络、系统、开发、业务链路流、各种中间件数据库、监控等等才能规划清晰,哪个环节出了问题才能最直接的判断到问题所在。CI / CD 整条路做下来,这其中会碰到无数的问题需要解决。尤其是做 CD ,还是有相当多的地方需要用脚本或接口去实现的。

下面的这些介绍,只是某种场景。每个公司的流程不一样,那么你去做的时候就要按照实际情况做一些改动。办法总比困难多,只要你玩儿熟了,对这个思路理解深刻,那么应该没有解决不了的问题。只要各个链路通了,剩下的就是你的开发能力了,这么一套流程里,还是需要写很多脚本和接口才能实现的。基于此流程包装一个运维平台,那么面子工程和效率就都有了。

3年前我做了这套方案,经过3年的打磨优化(针对我们公司的),现在已经非常健壮了。这直接解放了运维干预的版本发布,我们要做的就是监控好各个环节。

k8s的监控,我推荐使用 prometheus ,它可以非常细度的监控k8s,并且现在大部分软件都有它的监控插件。有一点欠缺的是,prometheus没有端口监控,于是我研究了两天,自己写了个prometheus监控端口的插件。关于prometheus的,我在博客中的 《服务监控》 分类栏中有介绍,欢迎有缘人阅读。

-----------------------------------------------------------------------------------------------

先总的描述一下 git+jenkins+harbor+kubernates可持续集成 的链路流程,是如何从代码提交一步步交付到 k8s 的。

下图详解:研发将代码传到git上后,在项目工程内打了 tag ,git设置了触发模式,只要新打了tag后,就会通知jenkins的回调接口; jenkins收到git的通知后,到git地址上将最新 tag 拉到本地,根据自己的设置或者写好的脚本,执行完毕打成了docker镜像传到了 harbor 仓库中;邮件通知研发这个项目 没有问题 / 有问题 ; 由人工干预或自动的 jenkins 调k8s命令或者接口更新或创建此镜像有关的 pod ,pod被k8s分配到node上后,在harbor仓库拉取对应版本镜像到本地来启动容器。

流程图

 将上图的这个思路做出来。

先要将 gitlab 和 jenkins 关联起来,这一步简单说一下如何一步步实现 gitlab 自动触发 jenkins。 首先我们都知道在各种系统上 git 是可以配置免密码拉取代码的,同样 jenkins 也有这个功能。先实现 jenkins 可以免密拉取代码后,那么下一步就可以做自动触发拉代码策略了。在多项目的生产环境的话,会用很多git用户,很多项目被不同的人管理,只需要将每个项目都给jenkins用来克隆代码的用户可拉代码的权限即可。

自动拉代码具体工作流程是jenkins开设了某个项目的钩子地址,将这个钩子在gitlab的项目设置内配置上以后,选择一个触发它的策略,当 jenkins 的这个钩子被触发以后,jenkins就会去对应的git地址去克隆这个项目的代码。当代码克隆到 jenkins 服务器后,会统一存放到一个地方。然后就可以对这份代码做你想做的事情了,比如java源码编译下来以后,你需要编译,然后打成docker镜像,传到镜像仓库,jenkins是带有编译java的插件的,不过由于我所处的环境,我是直接写脚本完成的。当然,脚本也是jenkins拉完代码后去自动执行的。其实做到这里,已经实现了 CI/CD 中的 CI 了。

这里顺便提一下,jenkins调shell脚本或者python脚本都会读它的退出值,如果脚本退出值为错误值(shell只要是非0就错误),那么jenkins构建任务的球体会变成红色,如果是正确退出值,那么球体是蓝色,还有一种情况是黄色。

CD的做法就多种多样了,当镜像上传完毕后,剩下的事情就看实际情况而言了,但我认为不论是发布到生产环境还是测试环境,还是认为干预一下比较好。

下面是我写的一些博客,来实现 CI / CD 的。

首先要有个 gitlab,然后要在gitlab做一下配置,详见文档

gitlab安装

git+jenkins+harbor+kubernates可持续集成构建之 —— 配置gitlab

还要有个 jenkins,然后在jenkins上做一下配置,详见文档

git+jenkins+harbor+kubernates可持续集成构建之 —— centos7.7安装配置jenkins

harbor也要有,jenkins有权限上传镜像到harbor 就成,详见文档

Centos7安装Harbor

然后要有个 k8s ,详见文档

Kubernetes v1.15.1集群部署,etcd-v3.3.10集群独启动


最后要有个工作。你工作的这个公司想要搞这个套路,那么你就可以大显身手了。如果我帮助了你,那么你可以关注我,我的博客只发真货。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值