k8s-jenkins持续发布tomcat项目
k8s-jenkins持续发布tomcat项目
一、需求
这个实验前期后后搞了很久(公司经常插一些别的事过来,然后自己比较懒,再加上自己知识不够扎实)。二进制部署完k8s集群就开始做jenkins持续集成了。
参考这个语雀的部署链接:https://www.yuque.com/duduniao/k8s/gp8n04【3. 交付Jenkins到K8S 开始到maven结束】。
部署过程中遇到很多问题 :jenkins镜像要从版本2.190.3换为blueocean(pipeline用),然后gitlab拉不了代码。。。【我的心酸血泪史:https://www.cnblogs.com/windysai/p/14161282.html 】
(想想,感觉自己做什么都不太成功哇,感谢有个小伙经常帮我解决关键的问题,但我也有时也蛮讨厌他的,“你除了xxx做成功其他实验都没成功过,或者xxx你做了好久了哦”,可能他觉得是句玩笑,也确实是个事实,但还是觉得不太好受滴~~~~控制不了别人的嘴,只能改变自己心态咯——》 付出加倍的努力哇:人家1小时搞掂的活,我花2个小时或者更多,应该。。。应该,也能做出来的吧,哈哈哈,思维有时跟不上呢,默默给自己打气,fighting~~~努力,加油,好好学习)
说回正题吧,之前解决那个利用configmap覆盖tomcat项目数据库配置文件的问题【https://www.cnblogs.com/windysai/p/14305441.html】(是那个说我实验经常做不成功的家伙帮了我,这人真是让我又爱又恨),然后回头搞完这个流程吧(不然心底总觉得有根刺),公司办公电脑开了4台虚机做不了(就12G内存,拉镜像的时候卡死不动),然后我把这环境搬到家里(16G内存),勉强能做。然鹅,家里那个jenkins集群环境最近抽风了!!!jenkins登录连续几天报错:bad gateway,jenkins日志没有找到报错,唯一比较像错误的是kubelet的日志。。。。
jenkins 打开页面及对应日志(昨晚搞到我11点16分,才去洗洗睡的(这个时间要再加8小时)):
kubelet的日志,还没去研究。
然后某天我领导在我工作日志上评论,叫我把这个实验在公司的测试平台跑通发布,想想也挺有道理,毕竟公司环境都有了,配置不用愁。大致介绍下这个环境(这个是公司前运维部署的,单节点master,2个工作节点,服务那列我写的比较简略)
主机名 |
IP |
配置 |
服务 |
master1(单节点,没做集群) |
192.168.0.233 |
4核CPU,10G内存,150G存储 |
Docker、Harbor、kubernetes 1.10.1服务 |
slave01(工作节点1) |
192.168.0.243 |
8核CPU,16G内存,100G存储 |
Docker |
slave02(工作节点2) |
192.168.0.244 |
8核CPU,16G内存,100G存储 |
Docker |
当我看到这个页面,我是很感动的:
二、问题解决
说明:maven是从我的虚机复制出来的,因为构建公司项目要很多依赖包。
还是使用tomcat基础镜像:tomcat:8.5.31(我强调下,大家看这篇文章的时候一定要先看我这篇:https://www.cnblogs.com/windysai/p/14305441.html,因为我就是从这里改的)
##2、构造tomcat镜像(可以理解为预处理)
就是加了启动脚本进去,删除webapps下的文件
(1)Dockerfile
(删掉了拷war包到镜像那句,因为我要用jenkins构建的war包,不是写死的!)
From tomcat:8.5.31 #上面docker pull已拷到本地
COPY wdtz-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war #去掉
(2)runtomcat.sh 跟之前文章一样,保持不变
(3)新增构建tomcat镜像并上传到harbor:v8.5.31 ——》 jenkins发布用到
)
## 3、编写交付给k8s的资源配置文件:configmap.yaml,deployment.yaml,service.yaml
(1)configmap.yaml:保持不变
(2)deployment.yaml:spec.template.containers.image 改成:
image: 192.168.0.233/test/tomcat-deploy:v1 ——》jenkins发布用
(3)service.yaml:spec.ports.nodePort: 30031 ——》上篇文章的端口用不了,有范围限制
## 4、jenkins配置部分(直接贴代码了,因为准备洗洗睡)
1 pipeline {
2 agent any
3 environment {
4 GIT_URL="拉取的项目代码地址"
5 BRANCH="分支名"
6 BUILD_PATH="/root/k8s/"
7 }
8 stages {
9 stage('拉取代码') {
10 steps{
11 echo "git pull。。。"
12 git branch: "${BRANCH}", credentialsId: '拉取gitlab代码的凭证', url: "${GIT_URL}"
13 }
14 }
15 stage('代码编译') {
16 steps{
17 echo "maven build 。。。"
18 sh "/root/ljy_test/maven-3.6.2-8u232/bin/mvn clean install -e -Dmaven.test.skip=true -P pro -f pom.xml"
19 }
20 }
21 stage('构建镜像') {
22 steps {
23 echo "build docker tomcat deploy image。。。"
24 sh """
25 echo '
26 From 192.168.0.233/test/tomcat:v8.5.31
27 LABEL maintainer ljy
28 COPY ./target/wdtz-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
29 ' > Dockerfile
30 docker build -t 192.168.0.233/test/tomcat-deploy:v1 .
31 docker push 192.168.0.233/test/tomcat-deploy:v1
32 """
33 }
34 }
35
36 stage('部署到k8s节点'){
37 steps{
38 echo "deploy project to k8s node。。。"
39 sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/configmap.yaml"
40 sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/deployment.yaml"
41 sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/service.yaml"
42 }
43 }
44 }
45 }
三、实验结果
访问:http://192.168.0.233:30031/report/notice.html
k8s-jenkins持续发布tomcat项目的更多相关文章
- Jenkins自动部署Tomcat项目
Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:
- Shell脚本,自动化发布tomcat项目【转载】
Shell脚本,自动化发布tomcat项目脚本. 1. vko2c_auto_build_by_scp.sh 文件内容: #---------------------start------------ ...
- Shell脚本,自动化发布tomcat项目【转】
Shell脚本,自动化发布tomcat项目脚本. 1. vko2c_auto_build_by_scp.sh 文件内容: #---------------------start------------ ...
- 【转】手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- 手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- windows下使用jenkins持续集成.net项目
前言 随着微服务的兴起,原先一个庞大的项目,被切分一个个功能独立的微服务,虽然使得业务系统的扩展性和维护性得到提升,但是也加大了维护人员的工作量.有的系统由成百上千个微服务组成,如果每次有修改,都要手 ...
- Jenkins持续集成web项目(七)
功能:用户开发完maven构建的web项目后,从本地提交代码到gogs远程仓库中,在执行 git commit 命令之前会先执行 maven配置的 findbugs插件,来检测项目是否有明显bug,如 ...
- 在CentOS7下从0开始搭建docker并发布tomcat项目
一切从0开始,我也是个小白: 1.检查你的系统是不是高于3.8的内核,如果没有请升级CentOS7或者Ubuntu 14 #uname -a 2.CentOS7下安装docker #yum -y in ...
- 利用 Jenkins 持续集成 iOS 项目,搭建自动化打包环境
---恢复内容开始--- jenkins是一个广泛用于持续构建的可视化web工具,持续构建即各种项目的”自动化”编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:Java, c#, P ...
随机推荐
- Web服务器-并发服务器-单进程单线程非堵塞方式(3.4.3)
@ 目录 1.分析 2.代码 关于作者 1.分析 当socket去监听的时候,是堵塞的状态 通过tcp_sever_socket.setblocking(False)去设置不堵塞 当socket发现没 ...
- ceph如何快速卸载所有osd及擦除磁盘分区表和内容并重新加入
我的ceph集群中有4台服务器,16个osd,因为某些原因,集群中的数据都不要了,但是集群要保留给新的应用使用,集群现有的osd情况如下 [root@ceph-host-01 ~]# cat /etc ...
- QEMU网络模式(一)——bridge
网络配置 QEMU支持的网络模式 qemu-kvm主要向客户机提供了4种不同模式的网络. 1)基于网桥(bridge)的虚拟网卡; 2)基于NAT的虚拟网络 3)QEMU内置的用户模式网络(user ...
- C# 托管与非托管类型 堆和栈 值类型与引用类型 装箱与拆箱
一.托管类型与非托管类型 1.托管类型 托管类型包括 引用类型 以及 包含有引用类型或托管类型成员的结构. 引用类型 含引用类型或托管类型成员(字段.自动实现 get 访问器的属性)的结构 // 托管 ...
- 7.自定义ViewGroup-下滑抽屉
1.效果 2.思路 分析效果: 1.布局分为两部分,后面部分,前面部分,默认状态后面被挡住: 2.后面不可以滑动,前面可以滑动: 3.如果前面的布局本身是可以滑动的,那么当前面布局滑动到第一个时,后面 ...
- Apache Hudi使用简介
Apache Hudi使用简介 目录 Apache Hudi使用简介 数据实时处理和实时的数据 业务场景和技术选型 Apache hudi简介 使用Aapche Hudi整体思路 Hudi表数据结构 ...
- .net core 和 WPF 开发升讯威在线客服与营销系统:系统总体架构
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
- C# 9 新特性 —— 增强的 foreach
C# 9 新特性 -- 增强的 foreach Intro 在 C# 9 中增强了 foreach 的使用,使得一切对象都有 foreach 的可能 我们来看一段代码,这里我们试图遍历一个 int 类 ...
- [leetcode]TwoSum系列问题
1.普通数组找两个数,哈希表建立数值和下标的映射,遍历时一边判断一边添加 /* 哇,LeetCode的第一题...啧啧 */ public int [] twoSum(int[] nums, int ...
- CI持续集成理论知识
(1)什么是CI What is CI? CI就是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过 ...