gpt4 book ai didi

java - 如何在通过 Helm 部署的 Java Spring Boot 应用程序中使用来自 configmaps 的属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:38 24 4
gpt4 key购买 nike

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

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

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

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

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

另外,当我创建容器图像时,它在/resources/文件中嵌入了当前应用程序 .properties,这是应用程序默认使用的内容,因此我需要在应用程序在容器内运行时覆盖此行为,而不是 then当它只是在开发人员桌面上手动构建和运行时。

最佳答案

Springboot可以自动从环境变量推断出变量。在您的 application.properties 或 application.yaml 中,只需使用 ${MY_ENVIRONMENT_VARIABLE:my-defaultvalue}。
使用 helm 来填充您的 configmap。使用 configmap 作为部署 list 中的环境变量。

这样您就不需要在图像中为 dev、int 和 prod 设置多个 application.properties。在整个部署过程中保持完整。

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

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

关于java - 如何在通过 Helm 部署的 Java Spring Boot 应用程序中使用来自 configmaps 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50297305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com