【发布时间】:2021-08-05 17:12:48
【问题描述】:
我很好奇 @Value 如何在 Spring 内部工作,以便它实际上可以从 Kubernetes 集群的 ConfigMap 读取值。
我知道:
-
@Value("${my.nested.variable}")用于访问变量 在application.properties或操作系统的环境变量中声明 (更高的优先级)。 - 在 kubernetes 上创建新的 ConfigMap(用于 Spring 项目)时,通常会使用
kubectl create configmap my-config-name --from-file=application.properties,它会神奇地将这些ConfigMap值与 Spring 上的相应@Value()连接起来,当然我们必须选择my-config-nameon部署 YAML 文件。
注意上面我们没有暴露/映射那些配置映射到容器的环境变量,已经用printenv检查了内部容器,找不到。
但是,Spring 仍然能够从 ConfigMap 中检索这些值以用于 java 程序。
这怎么可能?有谁知道 Spring 的 @Value 是如何工作的,或者 ConfigMap 在内部是如何工作的,所以这两者可以神奇地连接起来?
谢谢。
【问题讨论】:
-
我不确定你的意思是什么,但没有魔法。您正在从
@Values使用的相同application.properties创建您的ConfigMap。这就是地图的来源 -
Spring Cloud Kubernetes 知道read a ConfigMap,大概使用Kubernetes API;我没想到魔法会特别神奇。
-
你好@xcode。上面的 cmets 有没有回答你的问题?
标签: java spring kubernetes