带有一个Rest API的多个数据库

时间:2018-12-04 13:49:52

标签: java azure jdbc kubernetes kubectl

早上好,目前我有以下分布

  • 我有几个非Azure数据库
  • 与kubernetes链接的天蓝色容器记录,其中包含我的REST API应用程序的图像

在我的应用程序中,我有一个server.xml

 <Realm className = "org.apache.catalina.realm.LockOutRealm">
    <Realm className = "org.apache.catalina.realm.JDBCRealm" connectionURL = "jdbc: sqlserver: //xxxx.database.windows.net:1433; database = demo1; user = xxx @ xxx; password =` `; encrypt = true; trustServerCertificate = true; hostNameInCertificate = *. database.windows.net; loginTimeout = 30; " driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver" roleNameCol = "role" userCredCol = "password" userNameCol = "login" userRoleTable = "userRole" userTable = "v_login" />
        </ Realm>

它引用了我的数据库,并由此建立了连接...。没关系。

但是我当时为每家银行使用一幅更改这些参数的图像,但是现在我只想拥有一张图像并在外部更改参数

我进行了大量搜索,但没有找到在外部(在deploy.yaml或service.yaml中)更改这些参数的方法

我需要你的帮助

2 个答案:

答案 0 :(得分:0)

您可以在部署Yaml中传递命令行参数:.spec.template.spec.containers[0].args。这是一个字符串数组,每个字符串都是可执行文件的命令行参数。

示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  namespace: default
  labels:
    app: my-app
spec:
  selector:
    matchLabels:
      app: my-app
  replicas: 2
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - image: my-image
        name: my-app
        args: [
          "argument-1",
          "argument-2"
        ]

答案 1 :(得分:0)

不要烘烤docker映像中的jdbc url。使用环境变量将其外部化。 Tomcat在server.xml中支持Java系统属性插值。您需要使用catalina_opts从环境变量设置java系统属性。

检查此帖子evironment/system variables in server.xml

另一件事,使用configmap和/或密钥将环境变量设置为部署https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data