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

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

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

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

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

6
codependent 13 Сен 2018 в 19:15

2 ответа

Лучший ответ

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

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

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

В качестве альтернативы у вас есть другие варианты с плагином maven fabric8, который, похоже, вы используете для генерации. Вы можете просто напрямую установить переменную среды или установите значение spring.profiles.active непосредственно в файле свойств , который можно смонтировать как конфигурационную карту .

2
Ryan Dawson 13 Сен 2018 в 17:04

Другой способ, который также работал, - это явное определение его в параметрах JAVA_OPTIONS:

spec:
  template:
    spec:
      containers:
      - env:
        - name: JAVA_OPTIONS
          value: "-Dspring.profiles.active=${ENVIRONMENT}"
        - name: ENVIRONMENT
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT
2
codependent 14 Сен 2018 в 10:58