使用O / S Env Var进行OpenShift部署环境配置

时间:2018-04-13 17:03:36

标签: openshift openshift-origin

我想为OpenShift pod提供一个环境变量,并在该变量中引用容器中定义的其他环境变量。

例如,我在OpenShift中定义了一个名为JAVA_CMD_LINE的环境变量,并将其设置为:

$HEAP_SETTING -Djavax.net.ssl.trustStore=/var/.keystore/cacerts -jar abc.jar

当容器启动时,$ HEAP_SETTING设置为-XMX = 1G。

在我的容器中,有一个启动脚本,如下所示:

java $JAVA_CMD_LINE

我期望的是,然后容器运行,执行以下操作:

java -XMX=1G -Djavax.net.ssl.trustStore=/var/.keystore/cacerts -jar abc.jar

但我所看到的是:

java '$HEAP_SETTING' -Djavax.net.ssl.trustStore=/var/.keystore/cacerts -jar abc.jar

如何提供变量?

更新:从YML文件中添加详细信息。

spec:
  containers:
    - env:
        - name: OPENSHIFT_ENABLE_OAUTH
          value: 'true'
        - name: OPENSHIFT_ENABLE_REDIRECT_PROMPT
          value: 'true'
        - name: KUBERNETES_MASTER
          value: 'https://kubernetes.default:443'
        - name: KUBERNETES_TRUST_CERTIFICATES
          value: 'true'
        - name: JAVA_CMD_LINE
          value: >-
            -Djavax.net.ssl.trustStore=/var/cert/.keystore/cacerts
            -Dfile.encoding=UTF8
            $HEAP_SETTING

更新2 - 我看到的错误:

+ exec java -Djavax.net.ssl.trustStore=/var/jenk-cert/.keystore/cacerts -Djavax.net.ssl.trustStorePassword=changeit -Dfile.encoding=UTF8 '$(HEAP_SETTING)' -Duser.home=/var/lib/jenkins -Djavamelody.application-name=JENKINS -jar /usr/lib/jenkins/jenkins.war
Picked up JAVA_TOOL_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true
Error: Could not find or load main class $(HEAP_SETTING)

1 个答案:

答案 0 :(得分:2)

尝试使用:

spec:
  containers:
    - env:
        - name: OPENSHIFT_ENABLE_OAUTH
          value: 'true'
        - name: OPENSHIFT_ENABLE_REDIRECT_PROMPT
          value: 'true'
        - name: KUBERNETES_MASTER
          value: 'https://kubernetes.default:443'
        - name: KUBERNETES_TRUST_CERTIFICATES
          value: 'true'
        - name: JAVA_CMD_LINE
          value: >-
            -Djavax.net.ssl.trustStore=/var/cert/.keystore/cacerts
            -Dfile.encoding=UTF8
            $(HEAP_SETTING)

每当您设置环境变量的值时,如果您需要从已设置的其他环境变量中组合值,则可以在值中使用$(<VARNAME>)

IOW,使用$(HEAP_SETTING)而不只是$HEAP_SETTING

更新1

实际上这不起作用。这是因为HEAP_SETTING不在您通过部署配置设置的环境变量集中,因此它将传递文字值$(HEAP_SETTING)。如果您尝试使用的环境变量由图像中的启动代码填充,则无法使用此项。