首页 > 解决方案 > 在 helm 部署中连接环境变量?

问题描述

假设我希望在 helm 模板内的 db 连接字符串中使用以下机密:

- 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 的 env 值?

标签: kuberneteskubernetes-helm

解决方案


pod 规范中的许多地方都支持$(VARIABLE_NAME)语法。特别是,对象的API 文档EnvVar指定

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

所以你应该可以说类似

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

$(DBUSER)(注意和周围的括号$(DBPASS)。)

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


推荐阅读