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包,不是写死的!)

  1. 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. 1 pipeline {
  2. 2 agent any
  3. 3 environment {
  4. 4 GIT_URL="拉取的项目代码地址"
  5. 5 BRANCH="分支名"
  6. 6 BUILD_PATH="/root/k8s/"
  7. 7 }
  8. 8 stages {
  9. 9 stage('拉取代码') {
  10. 10 steps{
  11. 11 echo "git pull。。。"
  12. 12 git branch: "${BRANCH}", credentialsId: '拉取gitlab代码的凭证', url: "${GIT_URL}"
  13. 13 }
  14. 14 }
  15. 15 stage('代码编译') {
  16. 16 steps{
  17. 17 echo "maven build 。。。"
  18. 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. 19 }
  20. 20 }
  21. 21 stage('构建镜像') {
  22. 22 steps {
  23. 23 echo "build docker tomcat deploy image。。。"
  24. 24 sh """
  25. 25 echo '
  26. 26 From 192.168.0.233/test/tomcat:v8.5.31
  27. 27 LABEL maintainer ljy
  28. 28 COPY ./target/wdtz-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
  29. 29 ' > Dockerfile
  30. 30 docker build -t 192.168.0.233/test/tomcat-deploy:v1 .
  31. 31 docker push 192.168.0.233/test/tomcat-deploy:v1
  32. 32 """
  33. 33 }
  34. 34 }
  35. 35
  36. 36 stage('部署到k8s节点'){
  37. 37 steps{
  38. 38 echo "deploy project to k8s node。。。"
  39. 39 sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/configmap.yaml"
  40. 40 sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/deployment.yaml"
  41. 41 sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/service.yaml"
  42. 42 }
  43. 43 }
  44. 44 }
  45. 45 }

  1. 三、实验结果
    访问:http://192.168.0.233:30031/report/notice.html
  1.  

  1.  
  1.  


k8s-jenkins持续发布tomcat项目的更多相关文章

  1. Jenkins自动部署Tomcat项目

    Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:

  2. Shell脚本,自动化发布tomcat项目【转载】

    Shell脚本,自动化发布tomcat项目脚本. 1. vko2c_auto_build_by_scp.sh 文件内容: #---------------------start------------ ...

  3. Shell脚本,自动化发布tomcat项目【转】

    Shell脚本,自动化发布tomcat项目脚本. 1. vko2c_auto_build_by_scp.sh 文件内容: #---------------------start------------ ...

  4. 【转】手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  5. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  6. windows下使用jenkins持续集成.net项目

    前言 随着微服务的兴起,原先一个庞大的项目,被切分一个个功能独立的微服务,虽然使得业务系统的扩展性和维护性得到提升,但是也加大了维护人员的工作量.有的系统由成百上千个微服务组成,如果每次有修改,都要手 ...

  7. Jenkins持续集成web项目(七)

    功能:用户开发完maven构建的web项目后,从本地提交代码到gogs远程仓库中,在执行 git commit 命令之前会先执行 maven配置的 findbugs插件,来检测项目是否有明显bug,如 ...

  8. 在CentOS7下从0开始搭建docker并发布tomcat项目

    一切从0开始,我也是个小白: 1.检查你的系统是不是高于3.8的内核,如果没有请升级CentOS7或者Ubuntu 14 #uname -a 2.CentOS7下安装docker #yum -y in ...

  9. 利用 Jenkins 持续集成 iOS 项目,搭建自动化打包环境

    ---恢复内容开始--- jenkins是一个广泛用于持续构建的可视化web工具,持续构建即各种项目的”自动化”编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:Java, c#, P ...

随机推荐

  1. angular8 页面滚动到某一个特定位置

    背景:使用angular8安装的 Fuse-v8.0.0-demo 后台的框架 锚点: id='nearby' 流程:无论是点击触发方法也好,还是直接调用方法也好,这里只写 引入: import {C ...

  2. Tensorflow Windows安装

    操作系统: Windows 7 安装步骤 Step 1: 安装Tensorflow支持的Python版本,配置环境变量 目前,Tensorflow支持: Python 3.5.x 64-bit fro ...

  3. C# Attribute特性 泛型<T> 方法的out ref this(扩展方法) Equals与==

    out ref out和ref的使用场景其实不一样.out适合在方法内返回一个额外的结果参数,而ref适合直接改变一个在方法外面的值,方法改变外部就改变,无需重新定义接住返回值再使用. out可以在方 ...

  4. H3C路由器配置示列一

    说明: 如上图所示,192.168.0.0网段是总公司的网络,192.168.3.0和192.168.4.0网段是当前自己分公司的网络,且192.168.3.0是内网不能访问互联网,192.168.4 ...

  5. Spring Boot 与 Spring MVC到底有什么区别

    前言 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向 ...

  6. 通过`RestTemplate`上传文件(InputStreamResource详解)

    通过RestTemplate上传文件 1.上传文件File 碰到一个需求,在代码中通过HTTP方式做一个验证的请求,请求的参数包含了文件类型.想想其实很简单,直接使用定义好的MultiValueMap ...

  7. js:表单校验(获取元素、事件)

    1.表单校验步骤 (1)确定事件(submit事件),创建一个函数并和该事件绑定. (2)书写函数对输入的数据是否合法进行校验(需要设定ID并通过ID来获取用户输入的数据的值). (3)输入的信息合法 ...

  8. MyBatis-Plus 多表联查+分页

    在写东西的过程中,多表联查和分页功能必不可少.当然,crud也很重要 但是又不想写代码和xml. 通过苦苦的查找.发现MyBatis-Plus一款国产的框架.优化了许多操作 本次主要记录一下,多表联查 ...

  9. C/C++ 弱符号

    为什么会出现弱符号 在两个目标文件(a.o与b.o)链接的过程中,如果其中一个目标文件(a.o)通过extern的方式引用了另外一个目标文件(b.o)中的符号flag,但很不幸,在连接的过程中b.o没 ...

  10. 强化学习入门基础-马尔可夫决策过程(MDP)

    作者:YJLAugus 博客: https://www.cnblogs.com/yjlaugus 项目地址:https://github.com/YJLAugus/Reinforcement-Lear ...