如何使用fabric8 maven插件使用环境变量中的值指定spring.profiles.active参数?

时间:2018-09-13 16:15:18

标签: spring-boot kubernetes fabric8 fabric8-maven-plugin

我有一个定义环境参数的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插件是否以某种方式支持它?如果没有,您可以建议一些解决方法吗?

1 个答案:

答案 0 :(得分:1)

首先要注意的是,注入Pod的环境变量的名称与configmap中使用的密钥不必匹配。因此,您可以这样做:

      - env:
        - name: SPRING_PROFILES_ACTIVE
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT

如果ENVIRONMENT是配置映射中名为global-configmap的键。如果不是,那么自然就想使用与您要查找的值相匹配的键(如果可能的话,例如spring.profiles.active可能会更清楚,但从您的描述中听起来,您似乎已经拥有一个名为global- configmap,其键名为ENVIRONMENT)。我希望您需要调用环境变量(名称部分)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值。