利用configmap覆盖tomcat项目数据库配置文件

一、需求背景及问题引入

      这个实验之前本来是做一个k8s  jenkins发布tomcat项目的,想实现k8s的滚动升级:通过改pod 镜像名来触发系统完成deployment运行pod的滚动升级操作。(这个问题解决之后,后续会补充一篇结合jenkins发布整个流程的)

      大致交代下这篇文章的实验背景:测试项目来源于公司的一个线上举报违规项目,我特意在gitlab上克隆了一个专门做测试。数据库连接配置文件写的是天翼内网ip,线上项目也是部署在天翼云的机器上,也就是这个项目是通过内网方式连接数据库跑起来的。

     实验环境:基于公司个人办公电脑开的的vmware,开了4台虚拟机做的k8s集群(版本:v1.15.2),其中k8s-1,k8s-2既是工作节点也是master节点。

     所以要想把项目在pod上成功跑起来,肯定是不能用这个天翼内网ip去连数据库的,要把项目运行起来就要通过公网去连线上的数据库(包括mongo+mysql)  

     数据库内网ip:10.0.0.x;  外网ip:14.x.x.235  

 

二、实验尝试及报错

      实现环境说明:k8s已经部署好jenkins的pod(用的是blueocean的官方镜像),maven和jenkins通过nfs网络存储做了持久化,节点机器都已经挂载好对应的持久化目录。

       jenkins的持久化目录为:/data/nfs-volume/jenkins_home

       镜像tomcat1:v8.5.51事先从官方网站下载,上传到自己搭建的harbor仓库里(k8s-4),下载下来的tomcat镜像的工作目录默认在 /usr/local/tomcat/ 上。jenkins发布,pipeline脚本会把jenkins workspaces下maven编译好的项目war包(下图的 ./target/xx.war)复制到tomcat1:v8.5.51的镜像里面,形成需要跑应用项目的新镜像:tomcat-deploy:v1。最后通过交付给k8s资源文件把tomcat项目跑起来。

       这里我只发个tomcat项目的deployment.yaml的文件(这样子挂载上去是不认的),test-conf(spec.template.spec.volumes.name)引入的是configmap.yaml的配置文件内容

 1 kind: Deployment
 2 apiVersion: extensions/v1beta1
 3 metadata:
 4   name: tomcat
 5   namespace: public
 6   labels: 
 7     name: tomcat
 8 spec:
 9   replicas: 1
10   selector:
11     matchLabels: 
12       name: tomcat
13   template:
14     metadata:
15       labels: 
16         app: tomcat 
17         name: tomcat
18     spec:
19       volumes:
20       - name: test-conf
21         items:
22         - key: application-pro.properties
23           path: application-pro.properties
24       containers:
25       - name: tomcat 
26         image: harbor.odljy.com/infra/tomcat-deploy:v1
27         ports:
28         - containerPort: 8080
29           protocol: TCP
30         volumeMounts:
31         - name: test
32           mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/config/application-pro.properties
33           subpath: application-pro.properties
34         
View Code

相关文章:

  • 2021-09-20
  • 2021-05-28
  • 2022-12-23
  • 2021-11-16
  • 2021-11-09
  • 2021-10-27
  • 2022-01-31
  • 2022-02-04
猜你喜欢
  • 2021-05-25
  • 2021-12-25
  • 2022-01-01
  • 2022-12-23
  • 2022-01-08
  • 2021-04-13
相关资源
相似解决方案