Jenkins自动化部署完整流程

jenkins+maven+gitlab+harbor+k8s的 CI/CD

 首先需要安装jenkins,maven,gitlab,harobor,k8s等工具:

  1. jenkins安装   安装文档:https://www.cnblogs.com/momoyan/p/12770919.html
  2. maven安装    安装文档:https://blog.csdn.net/qq_38270106/article/details/97764483
  3. gitlab安装      安装文档:  https://www.cnblogs.com/momoyan/p/14033256.html
  4. harbor安装    安装文档:https://www.cnblogs.com/dalianpai/p/11800371.html
  5. k8s安装         安装文档:https://blog.csdn.net/weixin_42214548/article/details/109001157
  6. docker安装   安装文档:https://www.cnblogs.com/momoyan/p/9129200.html

1.Jenkins配置

安装完之后,开始配置:

1.1.安装jenkins插件

点击系统管理,管理插件,安装 GitHub Branch Source PluginGitlab Authentication pluginGitlab Hook PluginGitLab PluginMaven Repository Server PluginPublish Over SSHWorkspace Cleanup Plugin 这些插件

插件下载地址:

1.2.新建任务

 

 

1.3.配置jenkins项目

(1)写好描述 主要是写上项目名

 

 (2)配置git地址

 

 

注:第一个红框标起来的是git地址,是从gitlab上获取的,首先登陆gitlab,如下图,从这里获取

 

 

而第二个红框标识的证书而是需要从jenkins初始页面凭据添加的,首先点击jenkins首页的凭据,依次点击

 

 之后点击

 

 类型选择:

 

 之后设置成如图样子,注意username要和登陆jenkins的用户一样,证书生成也不多说,在jenkins本机生成,贴上去即可,ID选项不用管,之后会自动生成一串ID:

 

 设置好凭据后,回到创建jenkins项目的界面,选择:

 

 如果出现大片红色报错,没关系,那一定是gitlab没有配置jenkins的密钥,去配置一下,首先打开gitlab,点到相应项目中,再点击图中位置,填写好.ssh/id.rsa.pub中的内容即可:

 

 再回到jenkins看看是否可以了呢,可以了就不会报一片红~  继续下一步

(3)构建触发器选择基本默认,有别的需要可以自定义:

这个选项中的url之后会用到,需要配置到gitlab~

 

 (4)接下来就是maven打包这里,配置pom.xml的绝对路径,然后输入打包命令,将会自动完成:

 

 (5) 接下来就是配置建立后的步骤:

 

 添加shell,完成要完成的动作(根据自己需求来)

HOST="192.168.147.138"

API_PORT=80

IMAGE_NAME="192.168.147.138/docker-tomcat/tomcat:v$BUILD_NUMBER"

docker build -t $IMAGE_NAME .

docker push %IMAGE_NAME

sed -i "s/BUILD_NUMBER/$BUILD_NUMBER/g" docker-tomcat.yaml

 

 再添加一段ssh,通过这个把生成的包或者文件传到master并执行命令:

 

 

 

配置好点击保存,这样,jenkins就算完成了,接下来去到gitlab看下:

点到相应的项目中,配置url,这个url在jenkins配置的时候出现过,复制过来即可,保存

 

 配置好以后,拉到底下,我们测试一下:

 

 出现这样说明配置成功了:

 

 这样子整套CI/CD流程也就做完了,提交代码后会自动打包部署。

测试:

 写博客的这个项目我并没有保存,毕竟也是公司环境,所以我拿之前配置好的一个项目(项目名:docker)做下测试,记录下成果:

首先我提交代码,看jenkins变化:

 

 

部署已经成功了,看下部署过程:

 

 

 

 部署已经完成了,去机器上看下:

   kubectl get po

 

 下图可以看到这个pod镜像是刚打出来的,v33版本

   kubectl describe pod ng-364889701-m09zn

 

 去harbor看下镜像,是有的:

 

 

版本回滚

那么我们发现一个问题,cicd是做好了,可是如果版本有问题,怎样回滚呢,其实也是很好解决的,可以用k8s自己的rolling update机制去完成,不但可以回滚版本,还可以弹性伸缩pod数量。

首先先试一下回滚,查看一下之前的版本:

kubectl rollout history deployment ng

 

 让我们用一条命令回滚到上一版本:

kubectl rollout undo deployment ng

 

 

看下现在pod用的是否是上个版本的镜像:

kubectl get po

 

 之前我们是v33版本,回滚到v32版本也是成功了,接下来说下怎样回滚到指定版本:\

  kubectl rollout history deployment ng

 

 通过一条   

kubectl rollout undo deployment deploy名 --to-revision=2

指定版本前方所对应的数字即可。

弹性伸缩

接下来说如何弹性伸缩:

手动伸缩通过命令:

kubectl scale deployment deploy名 --replicas=2
例如:
kubectl scale deployment ng --replicas=2

设定replicas数量即可,如图:

 

posted @ 2020-12-06 22:47  漠漠颜  阅读(1209)  评论(0编辑  收藏  举报