Как я могу указать параметр spring.profiles.active со значением из переменной окружения, используя плагин fabric8 maven?

У меня есть карта конфигурации K8s, которая определяет параметр ENVIRONMENT.

Это значение смонтировано как переменная среды в yaml развертывания с использованием выдержки из src/fabric8/deploy.yml:

spec:
  template:
    spec:
      containers:
      - env:
        - name: "ENVIRONMENT"
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT

Я хотел бы использовать эту переменную ENVIRONMENT env для настройки spring.active.profiles имущество.

Поддерживается ли это каким-то образом плагином maven8 от fabric8? Если нет, можете ли вы предложить какой-нибудь обходной путь?

2 ответа

Решение

Прежде всего следует отметить, что имя, данное переменной среды, введенной в Pod, и ключ, используемый в configmap, не должны совпадать. Так что вы могли бы сделать:

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

Если ENVIRONMENT является ключом в configmap, называется global-configmap, Если это не так, то, естественно, вы хотите использовать тот ключ, который соответствует значению, которое вы ищете (что-то вроде spring.profiles.active может быть более понятным, если это возможно, но из вашего описания это звучит так, как будто у вас есть существующий файл конфигурации, называемый global- configmap с ключом, который называется ENVIRONMENT). Я ожидаю, что вам нужно будет вызвать переменную окружения (раздел имени) SPRING_PROFILES_ACTIVE, потому что это будет соответствовать свойству spring.profiles.active по ослабленной привязке.

Кроме того, у вас есть другие варианты с плагином fabric8 maven, который, похоже, вы используете для генерации. Вы можете просто установить переменную окружения напрямую или установить значение spring.profiles.active непосредственно в файле свойств, который вы можете смонтировать как 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
Другие вопросы по тегам