在kubernetes内的server.xml中设置环境变量

时间:2018-12-06 11:33:11

标签: azure docker tomcat kubernetes

我需要在server.xml中设置变量,但是在创建pod的时候,我这样做了,但是没用

server.xml

<Realm className="org.apache.catalina.realm.JDBCRealm" connectionURL="${db_url}" driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver" roleNameCol="role" userCredCol="password" userNameCol="login" userRoleTable="userRole" userTable="v_login"/>

和我的pod.yaml

apiVersion: v1
kind: Pod
metadata:
 name: dbtest
spec:
 containers:
 - name: dbtest-container
   image: xxx.azurecr.io/iafoxteste:latest
   ports:
     - containerPort: 8080
   env: 
     - name: db_url
       value: "jdbc:sqlserver://xxx.database.windows.net:1433;database=xxx;user=xxx@iafox;password=xxxx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"

2 个答案:

答案 0 :(得分:1)

除非Java可以做到这一点,否则kubernetes不会为您做到这一点。因此,您需要一个会读取env的初始化脚本。变量并替换server.xml中的标记。或让您的应用以某种方式做到这一点。

kubernetes无法进行令牌替换。

答案 1 :(得分:0)

如前所述,kubernetes不能为您做到这一点。为了将该值传递给tomcat,您需要添加db_url作为java系统属性ex。 -db_url =“ jdbc:sqlserver://xxx.database.windows.net:1433; database = xxx; user = xxx @ iafox; password = xxxx; encrypt = true; ....”。然后,您需要一个启动程序Shell脚本,该脚本从环境变量获取此值并将其传递给您的CATALINA_OPTS。 检查此stackoverflow问题Java system properties and environment variables