在头盔部署中串联环境变量?

时间:2019-12-11 20:15:21

标签: kubernetes kubernetes-helm

说我希望在头盔模板内的数据库连接字符串中使用以下机密:

- name: DBUSER
  valueFrom:
   secretKeyRef:
     name: dbadmin
     key: username
- name: DBPASS
   valueFrom:
    secretKeyRef:
      name: dbadmin
      key: password

稍后我要创建一个:

- name: Database__ConnectionString
  value: "server=something.com;port=3306;user=$DBUSER;password=$DBPASS;database=dbname"

如何在该连接字符串值内访问DBUSER和DBNAME的环境值?

2 个答案:

答案 0 :(得分:2)

pod规范中的许多位置都支持$(VARIABLE_NAME)语法。特别是API documentation for an EnvVar object指定

  

value字符串):变量引用$(VAR_NAME)使用容器中先前定义的环境变量和任何服务环境变量进行扩展。

所以您应该可以说类似

- name: Database__ConnectionString
  value: "server=something.com;port=3306;user=$(DBUSER);password=$(DBPASS);database=dbname"

(请注意$(DBUSER)$(DBPASS)的括号。)

(在这种特定情况下,某些数据库库将允许您将连接字符串的所有各个部分指定为单独的环境变量,因此,如果不这样做,您可以设置环境变量PGUSER and PGPASSWORD而不是这样做。重新使用PostgreSQL。)

答案 1 :(得分:0)

您通常必须通过命令包装器(如

)在容器中处理此问题
command:
- bash
- -c
- export Database_ConnectionString=server=...;user=$DBUSER && exec mycommand 

或者类似的东西