Kubernetes - 设置系统属性

时间:2018-04-09 22:17:13

标签: kubernetes

我有一个使用JAAS身份验证的Java应用程序,因此需要以下系统属性。

  

-Djava.security.auth.login.config = / JAAS / CONF / client_jaas.conf

我们在启动脚本中通过JAVA_OPTS设置此系统属性。

  

JAVA_OPTS =“$ {JAVA_OPTS}   -Djava.security.auth.login.config = / JAAS / CONF / client_jaas.conf“

我正在尝试将此应用移至Kubernetes并设置如下。

"containers": [
          {
            "env": [
              {
                "name": "JAVA_OPTS",
                "value": "-Djava.security.auth.login.config=/jaas/conf/client_jaas.conf"
              },

但是,我在应用程序日志中收到以下错误。

Caused by: java.lang.IllegalArgumentException: Could not find a 'appClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set

还有其他方法可以设置吗?

由于

1 个答案:

答案 0 :(得分:3)

我不知道这是否是以下相关问题:JAVA_OPTS不是一个开箱即用的环境变量,而是一个约定。如果你看一下this example Dockerfile

FROM openjdk:8-jre-alpine

ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
    JHIPSTER_SLEEP=0 \
    JAVA_OPTS=""

# add directly the war
ADD *.war /app.war

EXPOSE 8081
CMD echo "The application will start in ${JHIPSTER_SLEEP}s..." && \
    sleep ${JHIPSTER_SLEEP} && \
    java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.war

你看到JAVA_OPTS首先被定义为一个变量,后来被用于java命令本身。使用此配置,您就可以使用ENV vars传递自定义Java选项。

所以我假设你在kubernetes中正确地做了一切,但底层的docker图像没有正确处理它