我正在尝试将Kubernetes的部署yaml中声明的环境变量读入springboot application.yaml
下面是deployment.yaml中的示例
spec:
containers:
env:
- name: SECRET_IN
value: dev
下面是应用程序.yaml中的示例
innovation:
in: ${SECRET_IN:demo}
但是在本地主机上,当我尝试打印innovation.in(正确创建@Configuration)时,我在输出中没有得到“dev”,它总是打印 demo,它显示部署之间的链接,应用程序yaml没有发生,有人能帮忙吗?
2条答案
按热度按时间pcww981p1#
您可以将整个
application.YAML
配置文件存储到config map
或secret
中,并仅将其与部署一起注入例如:
如果您
application.properties
类似于示例:
您可以将其替换为
Deployment.yaml
将类似于您也可以根据需要将更多配置保存到配置Map&secret中。
更多信息请访问:https://pushbuildtestdeploy.com/spring-boot-application.properties-in-kubernetes/
vktxenjb2#
我认为你做的一切权利,我有一个类似的工作设置,虽然没有默认的'演示'。
从 Spring Boot 的Angular 来看,一些澄清可能会有所帮助。
application.yml
可以包含占位符,这些占位符实际上可以从环境变量中解析出来。1.确保这个
application.yml
在spring Boot 应用程序工件的编译过程中没有被“更改”(重写,或者被maven过滤)。1.最重要的:spring Boot 对k8s设置一无所知.如果环境变量存在-它会选择它.所以即使在本地也可以检查同样的设置-在本地机器上定义env.变量并运行spring boot应用程序.
1.可能是因为当应用程序运行时(用户/组)环境变量不可访问--在启动spring Boot 应用程序之前打印环境变量(或者这个特定的变量)来检查它,或者你可以在java的main方法中这样做: