6

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

4

2 回答 2

5

另一种有效的方法是在 JAVA_OPTIONS 参数中明确定义它:

spec:
  template:
    spec:
      containers:
      - env:
        - name: JAVA_OPTIONS
          value: "-Dspring.profiles.active=${ENVIRONMENT}"
        - name: ENVIRONMENT
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT
于 2018-09-14T10:58:27.473 回答
5

首先要注意的一点是,注入到 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 因为这将通过轻松绑定与属性 spring.profiles.active 匹配。

或者,您确实有使用 fabric8 maven 插件的其他选项,您似乎正在使用该插件进行生成。您可以直接设置环境变量 或直接在属性文件中设置 spring.profiles.active 值,您可以将其挂载为 configmap

于 2018-09-13T16:59:32.573 回答