Openshift:应用程序未选择Configmap

时间:2018-05-24 20:40:17

标签: spring-boot openshift fabric8 openshift-env-variables

我在openshift中部署了一个springboot应用程序,其中application.properties具有

greeting.constant = HelloWorld.SpringProp

我还定义了fabric8 / configmap.yml

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

和fabric8 / deployment.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中创建Configmap,我也会看到" greeting.constant"在"环境" openshift webconsole中的应用程序选项卡。

问题是我希望应用程序获取Configmap中给出的值而不是Spring application.properties,因为Env变量优先。但是,运行应用程序日志" HelloWorld.SpringProp"而不是" Hellowrold.Poc.ConfigMap.Test"。

如何让我的应用程序引用Configmap中的属性?

1 个答案:

答案 0 :(得分:2)

如果将ConfigMap作为文件挂载,ConfigMap更改只会自动反映在容器中,应用程序可以检测文件的更改并重新读取。

如果使用ConfigMap填充环境变量,则需要触发要更新的环境变量的新部署。无法通过更改ConfigMap来实时更新应用程序看到的环境变量的值。