springboot程序上k8s配置文件的解决方案
因为我们各个环境的配置是不一样的,但是jar包是用同一个(假如各个环境的jar包不一样,打包会比较麻烦,也不优雅),而spring boot的配置文件是写在jar包里的无法修改。那怎么办呢?
·
java程序上容器,比较简单,用现成的openjdk镜像就可以了,dockerfile文件一般如下:
FROM openjdk:8-jdk
# 将项目jar包添加到容器
ADD test.jar test.jar
# ENTRYPOINT 执行项目test.jar及外部配置文件
ENTRYPOINT ["java", "-jar", "test.jar"]
然而配置文件却成了问题,因为我们各个环境的配置是不一样的,但是jar包是用同一个(假如各个环境的jar包不一样,打包会比较麻烦,也不优雅),而spring boot的配置文件是写在jar包里的无法修改。那怎么办呢?
我们可以在test.jar的同一个目录下,创建一个config文件夹,然后把配置文件写进去这个文件夹,但是我们写dockerfile的时候不要写上去。假如在dockerfile指定不同环境的配置文件,打包起来也很复杂也不优雅。
因此,我们需要将configmap的配置,映射成文件,比如将某个configmap的一项,映射到config/application.properties文件下,比如创建configmap配置文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: myconf
namespace: tsp
data:
application.properties: |
server.port = 8080
spring.redis.host = 127.0.0.1
在config map中创建一项,名字就叫application.properties,内容就是配置文件的内容
然后在k8s的deployment里将配置加载到pod中
...
deployment.spec
volumes:
- name: myconfig
configMap:
name: front-conf
containers:
- name: app
image: xxx.docker.com/project/myapp:myversion
...
volumeMounts:
- name: myconfig
mountPath: /config/application.properties
更多推荐
已为社区贡献1条内容
所有评论(0)