上一篇文章写了关于如何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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/196772.html