如何在通过Helm部署的Java Spring引导应用程序中使用configmaps中的属性

Raf*_*fal 6 java spring-boot kubernetes kubernetes-helm

我有一个简单的Spring Boot应用程序,我需要在开发中进行部署,并使用Helm在Kubernetes集群上生产不同的名称空间。

我正在考虑为每个环境保留多个application.properties(application-dev.properties,application-prod.properties)文件,然后通过values.yaml文件从它们创建配置映射,这些文件对于每个环境也将有所不同,并在执行时指定头盔升级。

现在的问题是,如我所知,我如何使用config.maps中的值,我可以将属性文件安装在容器中,例如/deployment/application.properties

或将每个属性公开为容器内的环境变量。

但是,如何从Java应用程序中使用它们呢?

同样在创建容器映像的那一刻,它在/ resources /文件中嵌入了当前应用程序.properties,这是应用程序默认使用的功能,因此当应用程序在容器中运行时(与之相反),我需要覆盖此行为在开发人员桌面上手动构建和运行。

Bal*_*hua 8

Springboot可以自动从环境变量中推断出变量。在您的application.properties或application.yaml中,只需使用$ {MY_ENVIRONMENT_VARIABLE:my-defaultvalue}。
使用头盔填充您的配置映射。使用configmap作为环境变量进入部署清单。

这样,您的映像中不需要为dev,int,prod具有多个application.properties。在整个部署过程中保持完好无损。

然后在舵图中,您可以有多个values.yaml示例值-dev.yaml或values-int.yaml。您还可以从命令行动态设置Helm值,从而覆盖yaml文件。

我在github https://github.com/balchua/demo中有一个演示应用程序,它使用此模式。