【发布时间】:2018-09-24 02:35:01
【问题描述】:
我想为 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)
【问题讨论】:
-
你能分享清单吗?没有看到它是不可能说出来的。
-
这是您自己的 Java 映像,还是您使用的是 OpenShift S2I 映像之一?
-
这是我自己的形象。基于 OpenShift Jenkins 镜像
-
@MichaelHausenblas,已添加清单详细信息。
-
您用于构建自定义映像的 Git 存储库是否在公共存储库上可用,以便我们查看?或者当您说基于 OpenShift Jenkins 映像时,这是否意味着您复制了它的 repo 并对其进行了修改,或者您在派生的 docker build 中使用
FROM来创建它?HEAP_SETTING实际设置在哪里?
标签: openshift openshift-origin