千家信息网

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

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,上一篇文章写了关于如何build一个可以复用的tomcat的image,这一篇文章讲一下,如何使用此镜像进行重复构建不同的项目。直奔主题:步骤一 创建相应的mavn项目job其它配置均不变,主要更改的
千家信息网最后更新 2025年01月31日jenkins 配合 k8s实现应用持续集成

上一篇文章写了关于如何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-controllerspec:# 启动几个副本  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


0