我有一个使用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
还有其他方法可以设置吗?
由于
答案 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图像没有正确处理它