如何使用 fabric8 maven 插件使用环境变量中的值指定 spring.profiles.active 参数?
How can I specify the spring.profiles.active param with a value from an environment variable using fabric8 maven plugin?
我有一个定义环境参数的 K8s 配置映射。
使用 src/fabric8/deployment.yml:
中的摘录将该值作为环境变量安装在部署 yaml 上
spec:
template:
spec:
containers:
- env:
- name: "ENVIRONMENT"
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT
我想使用那个 ENVIRONMENT 环境变量来配置 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 or set the spring.profiles.active value directly in your property file, which you could mount as a configmap.
另一种有效的方法是在 JAVA_OPTIONS 参数中明确定义它:
spec:
template:
spec:
containers:
- env:
- name: JAVA_OPTIONS
value: "-Dspring.profiles.active=${ENVIRONMENT}"
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT
我有一个定义环境参数的 K8s 配置映射。
使用 src/fabric8/deployment.yml:
中的摘录将该值作为环境变量安装在部署 yaml 上spec:
template:
spec:
containers:
- env:
- name: "ENVIRONMENT"
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT
我想使用那个 ENVIRONMENT 环境变量来配置 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.
或者,对于 fabric8 maven 插件,您还有其他选择,您似乎正在使用它进行生成。你可以简单地 set an environment variable directly or set the spring.profiles.active value directly in your property file, which you could mount as a configmap.
另一种有效的方法是在 JAVA_OPTIONS 参数中明确定义它:
spec:
template:
spec:
containers:
- env:
- name: JAVA_OPTIONS
value: "-Dspring.profiles.active=${ENVIRONMENT}"
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: global-configmap
key: ENVIRONMENT