本次通过Gitlab+Jenkins+K8s集群+Kuboard+Harbor实现自动化CICD,当容器镜像推送到 Harbor镜像库中之后,自动触发docker pull 更新 Kubernetes 环境中的容器镜像。
实验拓扑图:
由于在之前的文章中已经部署过k8s集群、harbor、kuboard,所以就不在这里介绍了,大家可以结合以下文章进行部署;本次重点介绍CICD自动化的实现与落地。
Breeze1.19.0部署Kubernetes1.19.0高可用集群:
https://blog.51cto.com/890909/2538107
Kuboard图形化管理k8s集群及harbor镜像库集成:
https://blog.51cto.com/890909/2538334
解决Jenkins初始化插件失败:
https://blog.51cto.com/890909/2488882
一. Gitlab配置:
去gitlab官网下载最新版rpm包,拷贝到gitlab服务器,我这里下载了gitlab-ce-13.4.1-ce.0.el7.x86_64.rpm
修改Hosts:
修改gitlab.rb文件,添加gitlab登录地址:
重新配置gitlab:
等待完成后,用浏览器登录“http://192.168.50.17”,修改登录密码,用root用户登录。
创建项目:
⑴ 通过http克隆项目:
登录到client客户端:
测试提交文件:
登录gitlab进行查看:
⑵ 通过SSH克隆:
登录到client客户端:
登录到gitlab网站:
点击右上角,"settings"
添加客户端SSH KEY:
以后可以通过SSH免密提交代码了
测试:
二. 配置Jenkins:
到jenkins和java官网下载rpm包,不在赘述,我这里下载的是jenkins-2.259-1.1.noarch.rpm、jdk-8u261-linux-x64.rpm
⑴ 登录jenkins:
在浏览器输入“http://192.168.50.18:8080”,复制地址/var/lib/jenkins/secrets/initialAdminPassword
登录jenkins服务器解锁:
⑵ 安装推荐的插件:
此处附上解决初始化插件问题解决地址:https://blog.51cto.com/890909/2488882
⑶ 用admin登录,自行更改密码:
① 插件管理:
插件管理----可选插件----“查找docker”,选择"docker-build-step和Docker",进行安装。
安装完成后的效果:
⑶ 系统配置:
① 进入系统配置----Docker Builder
Docker URL tcp://192.168.50.15:2375
点击,Test Connection进行测试。
由于harbor默认没有启用docker远程连接,还需要先设置docker远程连接,才能访问2375端口,方法如下:
登录到harbor主机:
② 新增一个docker云:
新版jenkins更改了docker云配置位置:
输入一样的URL:
⑷ 权限设置:
⑸ jenkins主机登录harbor镜像库报错解决方法:
在docker login harbor主机时,发现无法访问,从网上找来解决方案:
⑹ 创建任务:
新建任务,CICD,选择自由风格
配置:
构建触发器:
勾选"触发远程构建",身份验证令牌输入相关令牌码
记住jenkins URL,gitlab webhook会用到,http://192.168.50.18:8080/job/CICD/build?token=password
构建:
选择执行shell:
在执行shell里输入相关命令:
保存,后面我再讲每条命令的作用。
⑺ kuboard创建Deployment:
在cicd命名空间创建nginx的Deployment,NodePort为32568
点击CI/CD集成,会发现有相关更新镜像教程:
我们找到自动触发教程,查看如何集成:
教程的大致意思是,镜像版本改成$变量,这样在每次触发时,会更新为最新镜像,在我的脚本中为"192.168.50.15/cicd/cicd-nginx:'$version'"
⑻ 这里我来讲解一下我所写脚本的作用:
⑼ 查看nginx服务:
在浏览器输入master vip ip + 32568端口:
⑽ 配置gitlab与jenkins的联动:
在jenkins主机上:
登录jenkins网站:
安全----全局安全配置
① 授权策略:
"登录用户可以做任何事",勾选"匿名用户具有可读权限"
② 跨站请求伪造保护:
目前高版本的jenkins无法手动关闭,需要在jenkins主机里修改:
添加蓝框部分:
③ 登录到gitlab网页:
点击"扳手"按钮,Settings----Network----Outbound requests,勾选"Allow requests to the local network from web hooks and services"
"Save changes"
进入cicd项目,Settings----Integrations----Go to Webhooks
URL输入:http://192.168.50.18:8080/job/CICD/build?token=password
Add webhook
三. 实战CICD项目:
登录client客户端:
四. 镜像回滚:
先登录harbor,查看镜像版本:
找一个时间最早的镜像,进行回滚
登录到kuboard:
文章来源: blog.51cto.com,作者:wdd0129,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.51cto.com/890909/2540060