我需要在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;"
答案 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