我有我的application.properties如下一些特性弹簧启动应用程序。
server.ssl.keyStore=/users/admin/certs/appcert.jks
server.ssl.keyStorePassword=certpwd
server.ssl.trustStore=/users/admin/certs/cacerts
server.ssl.trustStorePassword=trustpwd
在这里,证书路径是硬编码到一些路径。 但是,我不想硬编码此作为路径不会Mesos或Kubernetes世界知道。
我有一个码头工人文件,如下所示。
FROM docker.com/base/jdk1.8:latest
MAINTAINER Application Engineering [ https://docker.com/ ]
RUN mkdir -p /opt/docker/svc
COPY application/weather-service.war /opt/docker/svc/
CMD java -jar /opt/docker/svc/weather-service.war --spring.config.location=file:/conf/application.properties -Dlogging.config=/conf/logback.xml
在这里,我可以使用量kubernetes安装选项,以便放置application.proerties。
如何能够做到在application.properties证书文件是一回事吗?
在这里,证书道具是可选的少数应用程序和强制性的少数应用。
我需要的选项泊坞窗图像内整合和具有泊坞窗图像之外的证书文件。
方法1。 在泊坞窗图像
从application.properties删除属性“server.ssl.keyStore”,并将它传递如像下面之一的环境变量。
CMD Java的罐子/opt/docker/svc/weather-service.war --spring.config.location =文件:/conf/application.properties -Dlogging.config = / CONF / logback.xml -Dserver.ssl.keyStore = /certs/appcert.jks
现在,证书应该是在秘密的地方,并使用卷装入与kubernetes选项。
方法2。 没有必要有-Dserver.ssl.keyStore = /证书/ appcert.jks在泊坞窗文件,但仍请从application.properties属性“server.ssl.keyStore”,并做如下。
一种。 创建秘密
kubectl创建秘密通用SVC-信任证书--from文件= / cacerts的
湾 创建如下一个环境变量。
{ “名称”: “JAVA_OPTS”, “值”: “-Dserver.ssl.trustStore = /证书/信任/ cacerts中”}
C。 下荚容器创建卷安装。
“volumeMounts”:[{ “名称”: “信任证书”, “装载路径”: “/证书/信任”}]
d。 创建规范下的体积。
{ “名”: “信任证书”, “秘密”:{ “secretName”: “SVC-信任证书”, “项目”:[{ “钥匙”: “cacerts中”, “路径”: “cacerts中”} ]}}
方法3。
使用Kubernetes持久卷。
创建于Kubernetes持久的体积。
安装卷到每个微服务(在群脚本文件的更改)的吊舱。 安装的文件系统通过可访问的 - “/共享/文件夹/证书”路径。
CMD Java的罐子/opt/docker/svc/weather-service.war --spring.config.location =文件:/conf/application.properties -Dlogging.config = / CONF / logback.xml -Dserver.ssl.keyStore = /certs/appcert.jks
我已经采取了第二种方法。 这个对吗? 有没有其他更好的办法?
谢谢