Jenkins+Rancher自动化部署

Jenkins+Rancher自动化部署,第1张

本文主要记录Jenkins+Rancher+k8s自动化部署相关配置说明,不涉及rancher和jenkins安装部署,包含java server项目、WAR项目、前端VUE项目部署配置介绍。
服务器环境信息:

需要在安装jenkins服务上部署下面相应的软件,请注意软件版本,如已经安装相关软件,可跳过此章节。

需要安装rancher-cli,并且使用jenkins用户预先登录rancher平台:命令参考:

--token:这个用户的token建议设置为永不过期,在rancher管理端 -> api&key > 添加。

建议安装阿里镜像,提高编译速度:

jenkins启动用户需要添加到docker组中:
项目主要是java和vue开发的,所以需要安装Maven Integration plugin插件。
spring boot或者spring cloud自带容器,以及其它服务类型的java后端应用部署。

1、填写项目名称,选择"构建一个maven项目"
点击下面"OK"按钮

2、填写项目描述信息
3、输入项目地址,并选择用户凭证
本文通过condingnet作为代码管理平台,点击"Add"添加自己账号凭证(输入codingnet平台登陆账号密码即可)。

4、配置maven编译脚本
5、编写rancher部署脚本
Dockerfile参数说明:FROM:选择基础镜像包,该项目是用java语言开发需要jdk18所以选择openjdk:8ADD:将bRule-deploy-100targz文件解压并上传到镜像的brule目录EXPOSE:容器内部启动2002端口,根据自身项目填写指定端口,多个端口填写多行EXPOSE标签ENTRYPOINT:容器启动时执行的命令,执行多条命令使用&&拼接,命令行中带&需要加上转移符\&,使用tail -fn监听应用日志,以便容器日志查看。

用于创建docker镜像,就好比创建一个已经安装并且配置好了应用程序的 *** 作系统镜像。

参数说明:19216810021:5000:为本地docker镜像服务器地址brule:latest:应用名称,根据自身项目名称修改

利用上面创建好的 *** 作系统镜像启动一个vmware虚拟机,创建k8s容器。

参数说明:brule:应用名称,根据自身项目名称修改,应用名称规范()image:刚才创建的docker镜像containerPort:容器启动端口,多个端口使用多行containerPort标签声明,端口限制在30000-32000

前面vmware虚拟机创建好后,怎么能让别人访问?这个时候就需要创建一个网络服务,用于打通路由器与vmware本地虚拟机的网络。

参数说明:brule:应用名称,根据自身项目名称修改port:容器启动端口nodePort:对外提供服务端口,外部机器访问

将上面配置好的shell脚本复制到Post Steps -> 执行shell文本域中,并点击"保存" -> "立即构建"即可部署。

1、进入刚才创建好的jenkins任务,点击立即构建
2、点击左下角构建任务,选择"Console Output",查看构建日志
3、登录rancher管理平台,查看构建好的应用
基于J2EE项目的war包部署,前面 *** 作都一致,只是shell部署脚本稍有不同,这里主要详细说明rancher部署脚本。

Dockerfile参数说明:FROM:选择基础镜像包,war统一使用tomcat容器部署,tomcat:85-jre8-slimADD:将operationwar文件解压并上传到镜像的/usr/local/tomcat/webapps/目录EXPOSE:容器内部启动8080端口,根据自身项目填写指定端口,多个端口填写多行EXPOSE标签

这里不需要配置ENTRYPOINT标签,因为tomcat镜像包中已经有了。

用于创建docker镜像,就好比创建一个已经安装并且配置好了应用程序的 *** 作系统镜像。

参数说明:19216810021:5000:为本地docker镜像服务器地址operation:latest:应用名称,根据自身项目名称修改

利用上面创建好的 *** 作系统镜像启动一个vmware虚拟机,创建k8s容器。

参数说明:operation:应用名称,根据自身项目名称修改image:刚才创建的docker镜像containerPort:容器启动端口,多个端口使用多行containerPort标签声明,端口限制在30000-32000

前面vmware虚拟机创建好后,怎么能让别人访问?这个时候就需要创建一个网络服务,用于打通路由器与vmware本地虚拟机的网络。

参数说明:operation:应用名称,根据自身项目名称修改port:容器启动端口nodePort:对外提供服务端口,外部机器访问

将上面配置好的shell脚本复制到Post Steps -> 执行shell文本域中,并点击"保存" -> "立即构建"即可部署。

基于webpack构建的VUE项目部署,前面 *** 作都一致,只是shell部署脚本稍有不同,这里主要详细说明rancher部署脚本。

Dockerfile参数说明:FROM:选择基础镜像包,前端统一使用tomcat容器部署,tomcat:85-jre8-slimCOPY:将/dist目录上传到镜像的/usr/local/tomcat/webapps/fastquery/目录EXPOSE:容器内部启动8080端口,根据自身项目填写指定端口,多个端口填写多行EXPOSE标签

这里不需要配置ENTRYPOINT标签,因为tomcat镜像包中已经有了。

用于创建docker镜像,就好比创建一个已经安装并且配置好了应用程序的 *** 作系统镜像。

参数说明:19216810021:5000:为本地docker镜像服务器地址operation:latest:应用名称,根据自身项目名称修改

利用上面创建好的 *** 作系统镜像启动一个vmware虚拟机,创建k8s容器。

前面vmware虚拟机创建好后,怎么能让别人访问?这个时候就需要创建一个网络服务,用于打通路由器与vmware本地虚拟机的网络。

参数说明:shutcm-fastquery-web:应用名称,根据自身项目名称修改port:容器启动端口nodePort:对外提供服务端口,外部机器访问

将上面配置好的shell脚本复制到Post Steps -> 执行shell文本域中,并点击"保存" -> "立即构建"即可部署。

Jenkins 是一个开源的、功能强大的应用程序,可持续集成并且持续交付项目。Jenkins自动构建项目的流程原理如下图所示:

用户通过将源码push到svn或者git等仓库上,然后Jenkins会定期pull检查仓库中的源码是否有变化。如发生变化则会重新构建测试项目并打包生成相应的文件存放在指定的目录,这过程中的完成情况可设置以邮件的形式反馈给管理员,并且管理员可登陆到Jenkins上查看相应项目的构建情况。接着项目构建成功后,Jenkins会把相应的项目包推送到指定的服务器上的指定目录下, 然后执行相应的命令进行项目的部署。

接着我们就来看看如何使用Jenkins完成tomcat项目的自动构建部署。

Jenkins的安装可参考: >

前提条件:

1已安装并启动Jenkins。

2已安装下列插件。

(1)Git plugin 可能默认已经安装

(2)Git client plugin 可能默认已经安装

(3)Maven Integration plugin

(4)Publish Over SSH 用于远程部署

(5)Gitlab Hook Plugin 用于gitlab提交触发自动部署

以上内容在Jenkins自动部署笔记(一)中有详细介绍

进入系统管理。

进入全局工具配置。

1JDK

(1)点击“JDK安装”

(2)点击新增JDK按钮,填写别名(随便起)、JDK安装路径即可。JDK在上一节已安装,所以这里我们直接选择安装路径。

2Git

填写名称(随便起)、安装路径即可。

3Maven

点击新增Maven按钮,勾选自动安装,在“从Apache安装”下拉列表中选择一个版本即可。

4NodeJS(主要用于vue前端项目的自动打包部署)

点击新增NodeJS按钮,填写名称(随便起),勾选自动安装,在版本下拉框中选择一个NOdeJS版本。

5点击保存按钮后,刚才选择自动安装的工具会在后台自动安装。到此,全局工具配置基本结束。

通过 brew 安装 jenkins

通过 brew list jenkins 查看安装路径

jenkins 相关命令:

在浏览器输入 localhost:8080 就可以打开Jenkins的web界面了。

如果忘记了更改的端口号,可以查看下 homebrewmxcljenkinsplist 文件,里面有端口号。更改 homebrewmxcljenkinsplist 文件之后,记得 restart 一下。

如上图,在项目的 构建触发器 区域里面,有个 触发远程构建 选项。勾选之后,就会有一个 身份验证令牌 ,就是以后用的 token 了。

可能有些Jinkens下没有触发远程构建的选项,是因为需要先在 系统管理 -> Configure Gloal Security -> 打开启用安全选项 :

打开 启用安全 之后,配置一些选项,项目中就有 触发远程构建 了。

勾选 触发远程构建 ,下面会有几行解释说明:

我构建了两个项目如下:

没有参数: JENKINS_URL/job/TestAPI/buildtoken=TOKEN_NAME

通过命令行调用:

也可以直接在浏览器里面输入上面命令里面的 url 。

TestAPINoParams 为一个没有任何参数项目,如果有参数的话,就不能用上面的命令了。

通过命令行调用:

也可用 Postman 测试:

通过命令行:

通过 Postman :

比如说,我这里传的是 logo-1024png , API 调用成功后, jenkins 服务器上 /Users/xulong/Desktop/receiveFile/ 在这个路径下,就会有一个 receivepng 文件。

可以先用 Postman 调试成功,然后可以导出 curl 命令和其它命令。

jenkins 配置publish over ssh bash 插件,运行远程shell脚本

具体配置就不说了

问题描述:配置exec command 执行命令,可以正常创建文件夹aaa ,但是spring boot工程死活启动不了,无报错,远程服务器上无启动日志,无启动进程。

研究了两天,最后在一篇文章找到解决方案

exec command 中第一行增加 /etc/profile ,之后工程可以正常启动。

具体原因不清楚,猜测ssh连接后需要刷新bash的环境变量。

我是使用我的腾讯云轻量应用服务器做的本次实战

( *** 作系统:CentOS 76 64bit)

(主机规格:CPU: 4核 内存: 4GB)这个配置起前端有点带不动-_-,建议8G内存,这个问题我反复测试很多次。一跑npm 就开始疯狂占资源,然后 *** 作系统内存不够直接把jenkins的进程都给杀了。所以如果你也是4g或者2g内存,尽量不要有其他多余的应用或者容器在机器上运行。

启动:

a与b的结果都是将jenkins启动,也是我们的目标,本篇文章采用war包方式,也建议war包的方式,docker启的话,里面jdk是11,而我机器的jdk是8,同时项目jdk也是8,换11的话,天知道会出什么问题。 启动之后,访问一下,上述例子中我映射了7999端口,同时我的腾讯云防火墙也开放了7999这个端口,下面是访问图例:

根据提示粘贴密码,如果是war包启动的就直接复制页面提示的路径就可以,输入命令,即得密码

如果是docker启动的,上面的-v挂载了一个路径 /jenkins-data 这里面的文件就是容器里jenkins_home里面的文件,故路径就变成了

随后,输入得到的密码,进入,选择安装推荐的插件

接下来,就等待机器安装,然后创建第一个账户,然后jenkinsURL默认是啥就是啥(反正可以改的),可能会提示重启,如果没有不管。进入jenkins

到这里,先停一下。右上角红色的1不管。

装插件: (系统管理)Manage System -> (插件管理)Manage Plugins -> (可选的插件)Available,在 Filter 中搜索 Gitee,Jersey2 API这两个插件,然后分别选中,然后点install without restart。

等待安装完毕即可。

之后,就是配置gitee了

系统管理—>系统配置---->gitee配置

在 链接名 中输入 Gitee 或者你想要的名字

Gitee 域名 URL 中输入码云完整 URL地址: >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13471331.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-13
下一篇 2023-08-13

发表评论

登录后才能评论

评论列表(0条)

保存