上一篇文章写了关于如何build一个可以复用的tomcat的image,这一篇文章讲一下,如何使用此镜像进行重复构建不同的项目。
直奔主题:
步骤一 创建相应的mavn项目job
其它配置均不变,主要更改的是build项目后的动作。
注:因为我的k8s集群只有一个节点,所以默认所有的pod会启动在node节点上,所以我这里直接把build好的war直接传到node节点上。
再创建一个一个ssh的动作
需要注意的地方是,不管是server.xml配置文件还是yml配置文件的路径一定要搞对,不要乱。
master上的意思大概是:
首先检查有没有关于这个项目的configmap,如果没有则创建,如果有则没有动作。
然后是检查是否启动了关于这个项目的deployment,如果没有泽直接创建,如果有则先删除这个deployment,然后再次创建。实现重启效果。
这里又有一个需要注意的地方,如果修改了deployment.yml文件,那么需要手动先去删除当前deployment,不然会报错。
下面展示deployment.yml
# api的版本号
apiVersion: apps/v1
# 创建类型
kind: Deployment
# 描述
metadata:
name: jlj-learning-controller
labels:
app: jlj-learning-controller
spec:
# 启动几个副本
replicas: 1
selector:
matchLabels:
app: jlj-learning-controller
template:
metadata:
labels:
app: jlj-learning-controller
spec:
# 创建3个volumes
volumes:
# 用于存放项目的war包
- name: "jlj-learning-controller-war"
hostPath:
path: "/Disk/data/tomcat/jlj-learning-controller/code/"
# 用于存放tomcat的日志
- name: "jlj-learning-controller-log"
hostPath:
path: "/Disk/data/tomcat/jlj-learning-controller/log/"
# 获取前面创建的configmap中的server.xml文件内容
- name: "jlj-learning-controller-server-xml"
configMap:
name: jlj-learning-controller.xml
items:
- key: server.xml
path: server.xml
containers:
- name: jlj-learning-controller
image: fushuitong/tomcat:jdk7u21-tomcat7.0.77-cronolog1.6.2
ports:
- containerPort: 8080
# 挂载3个volume
volumeMounts:
# 把项目的war包挂载到容器中tomcat的webapps目录下,这样tomcat启动时候直接加载项目,之前已经解压过了。
- name: jlj-learning-controller-war
mountPath: /usr/local/tomcat/webapps
# 把本地的log目录挂载到容器中tomcat的logs目录下,这样tomcat的所有日志都被存放到宿主机的硬盘上,容器删掉日志不会丢失。
- name: jlj-learning-controller-log
mountPath: /usr/local/tomcat/logs
# 这里着重说一下,为什么要吧server.xml文件挂载的容器的configfile目录下,因为通过这种方式会把容器本来目录下的内容删除,
# 所以我们把这个server.xml文件挂载到/configfile目录下,因为在上一篇build 镜像的时候,就已经做过ln的动作了,所以这个会
# 当做tomcat的配置文件加载了。
- name: jlj-learning-controller-server-xml
mountPath: /configfile
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。