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

cod*_*ent 6 spring-boot fabric8 kubernetes fabric8-maven-plugin

我有一个定义 ENVIRONMENT 参数的 K8s 配置映射。

该值使用 src/fabric8/deployment.yml 中的摘录作为部署 yaml 上的环境变量挂载:

spec:
  template:
    spec:
      containers:
      - env:
        - name: "ENVIRONMENT"
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT
Run Code Online (Sandbox Code Playgroud)

我想使用那个 ENVIRONMENT 环境变量来配置spring.active.profiles属性。

fabric8 maven 插件是否以某种方式支持它?如果没有,你能提出一些解决方法吗?

Rya*_*son 6

首先要注意的一件事是,注入 Pod 的环境变量的名称和 configmap 中使用的密钥不必匹配。所以你可以这样做:

      - env:
        - name: SPRING_PROFILES_ACTIVE
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT
Run Code Online (Sandbox Code Playgroud)

如果 ENVIRONMENT 是 configmap 中的一个键,称为global-configmap. 如果不是,那么您自然想要使用与您正在寻找的值相匹配的任何键(如果可能的话,像 spring.profiles.active 之类的东西可能会更清晰,但从您的描述来看,听起来您有一个名为 global- 的现有配置映射) configmap 的键名为 ENVIRONMENT)。我希望您需要调用环境变量(名称部分) SPRING_PROFILES_ACTIVE 因为这将通过宽松的绑定与属性 spring.profiles.active 匹配。

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


cod*_*ent 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
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

8206 次

最近记录:

7 年,4 月 前