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

问题描述 投票:2回答:2

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

spring-boot kubernetes fabric8 fabric8-maven-plugin
2个回答
1
投票

首先要注意的一点是,注入到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值。


0
投票

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

spec:
  template:
    spec:
      containers:
      - env:
        - name: JAVA_OPTIONS
          value: "-Dspring.profiles.active=${ENVIRONMENT}"
        - name: ENVIRONMENT
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT
© www.soinside.com 2019 - 2024. All rights reserved.