我有一个定义ENVIRONMENT参数的K8s配置图。
使用src / fabric8 / deployment.yml中的摘录将该值作为环境变量挂载到部署yaml上:
spec:
template:
spec:
containers:
- env:
- name: "ENVIRONMENT"
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT
我想使用ENVIRONMENT env变量来配置spring.active.profiles
属性。
Fabric8 maven插件是否以某种方式支持它?如果没有,你能建议一些解决方法吗?
首先要注意的一点是,注入到Pod中的环境变量的名称和从configmap使用的密钥不必匹配。所以你可以这样做:
- env:
- name: SPRING_PROFILES_ACTIVE
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT
如果ENVIRONMENT是配置映射中名为global-configmap
的键。如果它不是那么自然你想要使用与你正在寻找的值相匹配的任何键(如果可能的话,像spring.profiles.active这样的东西可能会更清楚,但是根据你的描述,听起来你有一个名为global-的现有配置映射 - 使用名为ENVIRONMENT的密钥配置configmap。我希望你需要调用环境变量(名称部分)SPRING_PROFILES_ACTIVE,因为这将匹配relaxed binding属性spring.profiles.active。
或者,你也可以使用fabric8 maven插件的其他选项,它似乎是你用来生成的。你可以简单地set an environment variable directly或直接在你的属性文件which you could mount as a configmap中设置spring.profiles.active值。
另一种方法也是在JAVA_OPTIONS参数中明确定义它:
spec:
template:
spec:
containers:
- env:
- name: JAVA_OPTIONS
value: "-Dspring.profiles.active=${ENVIRONMENT}"
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT