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,因为我就是从这里改的)

 

## 1、下载基础镜像: tomcat:8.5.31

 

docker pull tomcat:8.5.31

 

 

 

 ##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发布用到

docker build -t tomcat:v8.5.31 ./
docker push 192.168.0.233/test/tomcat:v8.5.31

 

## 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

 

 

 

 

 

 


 

 

 

 


 

版权声明:本文为windysai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/windysai/p/14327932.html