jenkins 配合 k8s实现应用持续集成

上一篇文章写了关于如何build一个可以复用的tomcat的image,这一篇文章讲一下,如何使用此镜像进行重复构建不同的项目。


直奔主题:

步骤一 创建相应的mavn项目job

    其它配置均不变,主要更改的是build项目后的动作。

    注:因为我的k8s集群只有一个节点,所以默认所有的pod会启动在node节点上,所以我这里直接把build好的war直接传到node节点上。

微信图片_20190704154455.png

再创建一个一个ssh的动作

QQ截图20190704154847.png


需要注意的地方是,不管是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


猜你喜欢

转载自blog.51cto.com/xinsir/2417138