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

У меня есть конфигурационная карта 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
0
8 315
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 непосредственно в вашем файле свойств, который вы можете смонтировать как конфигурационную карту.

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

spec:
  template:
    spec:
      containers:
      - env:
        - name: JAVA_OPTIONS
          value: "-Dspring.profiles.active=${ENVIRONMENT}"
        - name: ENVIRONMENT
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT

Другие вопросы по теме