Kubernetes-设置类路径

时间:2018-06-30 16:24:42

标签: docker kubernetes

我正在将Spring Boot应用程序部署到kubernetes。我的docker文件如下。

FROM alpine-jdk1.8:latest

RUN mkdir -p /ext/app

COPY target/app-service.war /ext/app

ENV JAVA_OPTS="" \
    APPLICATION_ARGS=""

CMD java ${JAVA_OPTS} -jar /ext/app/app-service.war ${APPLICATION_ARGS}

我在conf目录下有许多配置文件,但也有秘密。

因此,在Kubernetes中将它们移到了秘密中,将很少移到configMaps中。但是,创建了1个以上的configmap和秘密来分组配置和秘密。

因为有很多configMap和秘密,所以我不得不创建许多卷挂载和卷,并使用spring confg位置将所有这些卷作为逗号分隔的值添加到类路径中。

- name: APPLICATION_ARGS
  value: --spring.config.location=file:/conf,.....

还有其他更好的方法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这是秘密的好方法,但for configMaps则少。

如果您的战争应用程序可以依赖于环境变量,则可能的方法是将configMap转换为rc文件(具有属性的文件),然后可由应用程序读取一次并使用

您可以在The Kubernetes Wars的“ {knu:t hæugen”中看到这种方法的示例:

  

如何处理配置?
  Kubernetes喜欢在环境变量而不是配置文件中进行应用程序配置。
  在使用convict的节点应用程序中,这很容易,在红宝石应用程序中,这非常容易,而在Java应用程序中,从相对容易到很血腥。

     

但是如何使配置进入复制控制器?我们选择使用configmaps(一个kubernetes对象)存储配置,引用rc文件中的变量并将其维护在git控制的文件中。
  因此,当我们要更改为应用程序配置时,请更新配置文件并运行一个脚本,该脚本将更新configmap并重新加载该应用程序的所有Pod