我必须将DB URL,DB Username和Password变量注入Java Sping Boot 应用程序。我知道这些属性位于application.propertiesres/文件夹下的www.example.com文件中。
现在,作为设计变更,我想采用K8s ConfigMaps和Secrets来代替www.example.com文件中的硬编码application.properties。
如何将K8s中的CM和Secrets链接到应用程序。如何在www.example.com文件中设置占位符application.properties?
在application deployment.yaml中定义CM和Secret依赖关系是否可以完成所有工作?
2条答案
按热度按时间bgtovc5b1#
您有两种选择:一个可以在没有额外依赖的情况下实现,另一个可以通过Sping Boot Cloud实现。
平铺直叙
在
application.yml
中定义环境变量占位符:然后在k8s部署中定义环境变量:
关于为容器定义环境变量的更多信息可以在k8s documentation中找到。
Sping Boot 云Kubernetes
参考资料中有一整节叫做使用ConfigMap PropertySource和Secrets PropertySource。我建议你去那里看看。
k75qkfdt2#
首先,您需要启用
spring.cloud.kubernetes.secrets.enabled
,然后您可以通过SecretsPropertySource
使用Kubernetes Secrets。您可以通过以下方式使用机密名称:
-Dspring.cloud.kubernetes.secrets.name=my-secret
其中my-sercret
是在kubernetes中定义的秘密的名称。或者您可以通过Documentation中描述的多个其他方法访问它。