Как я могу указать параметр spring.profiles.active со значением из переменной среды, используя плагин fabric8 maven? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть карта конфигурации 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.

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

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

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

spec:
  template:
    spec:
      containers:
      - env:
        - name: JAVA_OPTIONS
          value: "-Dspring.profiles.active=${ENVIRONMENT}"
        - name: ENVIRONMENT
          valueFrom:
              configMapKeyRef:
                  name: global-configmap
                  key: ENVIRONMENT
0 голосов
/ 13 сентября 2018

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

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

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

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

...