Как я могу указать параметр 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