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.