Jenkins容器自动化部署与持续集成(Kubernetes)

   日期:2024-12-26    作者:ssffox 移动:http://oml01z.riyuangf.com/mobile/quote/47496.html

         本文是SpringCloud实战(九)-Docker自动化部署与持续集成,若要关注前文,请点击传送门

        SpringCloud实战(八)-断路器监控与集群监控(Hystrix Dashboard)

        前文我们介绍了Hystrix的集群监控。本文主要讲述SpringCloud构建镜像和远端部署。

        随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致。基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。因此,传统的人工部署已经心有余而力不足。

        持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环。合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量。

        操作系统是Centos7,需要大家提前搭建好Gitlab、Jenkins,并安装好Maven、Git、Jdk1.8、Docker、Nexus3等,我已经将这些工具的安装和部署教程都写好了,下面直接带上传送门

        Centos7安装Gitlab

        Centos7安装Jenkins

        Centos7安装Maven

        Centos7安装Jdk1.8

        Centos7安装Git

        Centos7安装Docker

        Centos7安装Nexus3

        搭建好上述环境后,我们就可以开始配置Jenkins来自动化部署了,相关架构图如下

        jenkins需要配置的细节比较多,大家千万别遗漏下任何细节哈。

        1、jenkins插件安装

        首先我们来安装一些需要用到的插件,Jenkins在进行页面安装的时候会自动给你安装一些插件,不过我们还需要用到其他的一些插件,我们先登录jenkins找到插件管理,访问 http://127.0.0.1:8371/,如图所示

        找到并点击可选插件tab,从过滤输入框中输入插件名就可以准确的找到该插件,然后安装就可以了,这里我列一个需要安装的插件列表

        目测应该是全的,如果下面的步骤中发现页面和我的不一样,可能是因为插件漏装了,大家直接在评论区提醒我,我立刻补全。

        安装好插件之后我们找到全局工具配置(在系统管理页面上,如图所示

        点击进去,进入全局工具配置页面,如图所示

        我们在这里对Maven、Jdk、Git、Docker进行配置的,如图所示

        这里Jdk、Maven需要在环境变量中配置一下,配置详情关注上文的准备工作,然后我们的全局工具配置就配好了。

        下面我们去配置系统设置,如图所示

        系统设置这里我们配置两个地方就好了,一个是SSH,一个是Gitlab,SSH的配置是为了我们能够连接到远端主机进行镜像拉取和部署,Gitlab的配置是为了和Jenkins建立关联,如图所示

        这里SSH的凭证用远端机器的登录用户名和密码,Gitlab凭证用Gitlab登录后的token,如图所示

        到这里系统设置就配置完成了。

        Jenkins配置完之后,我们来新建一个任务。

        我们新建一个Maven风格的项目,然后点击确定,进入到项目配置页面,这里我们需要配置Gitlab项目所在的地址,并且需要用token认证,Gitlab项目所在地址如图所示

        然后我们还需要写一下构建中和构建后执行的脚本。

        1、Jenkins参数化构建

        在开始写构建中和构建后执行脚本之前,需要参照以下文章搭建安装相关插件和学习参数配置,传送门如下

        Jenkins实现参数化构建

        2、Docker脚本配置方式

        Build阶段脚本如下

        Post Steps本地执行脚本如下

        Post Steps远端执行脚本如下

        详细配置,图示如下: 

        3、Kubernetes脚本配置方式

        Build阶段脚本如下

        Root POM

 

        Goals and options

 

        补充

        如果工程有多个模块,在Jenkins构建的时候只需要构建其中某一个模块的镜像,此时 Goals and options 如下所示

 

        maven非常智能,只要父工程的pom文件中关联了子工程,可以不需要指定目录进行打包、构建。

        Post Steps阶段脚本如下

        Execute shell

 

        Execute shell script on remote host using ssh(Master节点执行

 

        Execute shell script on remote host using ssh(Slave节点执行

 

        Execute shell script on remote host using ssh(Slave节点执行

 

        详细配置,图示如下: 

        对照着上面的图就更清楚了。

        然后我们需要创建一个springboot工程,这里我直接只用本专栏前面的eureka-server工程,需要做修改的地方是需要在工程的pom文件中增加docker插件配置

        如果需要将eureka-server上传到远端仓库,则需要在pom文件中增加Nexus远端仓库配置(这里的id需要与maven setting中的<servers><server><id>保持一致,通过相同的id进行配置关联

        并且需要在pom文件的同级目录新建一个Dockerfile文件,内容如下

        我们的SpringBoot工程就改造好了。

        我们需要修改maven的setting文件,需要增加我们的nexus上的镜像仓库地址,所以需要我们提前在nexus中新建一个docker仓库并获取到他的镜像仓库暴露端口,图示如下

        然后我们拿到docker仓库的访问路径之后,去修改maven setting中的docker仓库配置。

        setting配置内容如下

        我们同时还需要修改远端主机上的docker配置文件,需要指定镜像仓库为nexus的地址,所以我们先登陆到远端主机,通过下面的命令找到配置文件

        添加如下配置,将以下配置写入到文件中,保存并退出。

        其中192.168.3.202:8088就是我们nexus的docker仓库暴露出来的端口地址。

        修改完之后我们就可以在Jenkins中执行构建,如图所示

        然后我们就成功构建了Springboot工程,访问远端主机的服务路径,我这里是 http://192.168.3.206:8761/,之后就成功显示出eureka服务端监控平台,说明我们已经成功自动化部署了一个eureka-server项目。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号