Openshift: Configmap не принимается приложением

У меня есть приложение Springboot, развернутое в openshift с application.properties, имеющим

greeting.constant = HelloWorld.SpringProp

Я также определил fabric8/configmap.yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: sampleappconfig
data:  
  greeting.constant: Hellowrold.Poc.ConfigMap.Test

и fabric8/deploy.yml

spec:
  template:
    spec:
      containers:
      - name: sampleappcontainer
        env:
        - name: greeting.constant
          valueFrom:
            configMapKeyRef:
              name: sampleappconfig
              key: greeting.constant
        envFrom:
        - configMapRef:
            name: sampleappconfig
        resources:
          requests:
            cpu: "0.2"
#           memory: 256Mi
          limits:
            cpu: "1.0"
#           memory: 256Mi

При развертывании приложения с использованием fabric8 оно создает конфигурационную карту в Openshift, и я также вижу "reeting.constant "на вкладке" Среда "приложения в веб-консоли openshift.

Проблема заключается в том, что я ожидаю, что приложение получит значения, указанные в Configmap, а не Spring application.properties, поскольку переменные Env имеют преимущество. Но при запуске приложения регистрируется журнал "HelloWorld.SpringProp" вместо "Hellowrold.Poc.ConfigMap.Test".

Как мне сделать, чтобы мое приложение ссылалось на свойства из Configmap?

1 ответ

Изменения ConfigMap отражаются в контейнере автоматически только при монтировании ConfigMap в виде файла, и приложение может обнаружить изменения в файле и перечитать его.

Если ConfigMap используется для заполнения переменных среды, необходимо инициировать новое развертывание для переменных среды, которые будут обновлены. Невозможно обновить значения переменных среды, которые видит приложение, путем изменения ConfigMap.

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