【发布时间】:2020-10-26 11:38:07
【问题描述】:
我有一个 node.js 应用程序正在访问这样的环境变量:
const pool = mysql.createPool({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
port: process.env.MYSQL_PORT,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DB
});
部署是通过 Kubernetes 完成的。一些环境变量,例如 MYSQL_HOST、MYSQL_DB 以普通形式设置,然而 MYSQL_PASSWORD 是通过秘密设置的。问题是我的 node.js 应用程序可以很好地读取常规环境变量,而 MYSQL_PASSWORD 不是。但问题是,当我尝试在容器中的环境变量列表中查看 MYSQL_PASSWORD 的值时,它会显示正确的值。
以下是在部署 yaml 中设置相关环境变量的方式:
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_PASSWORD
name: config-secret
再一次 - 当我在容器中运行 env 命令时,该值是可见的,但由于某种原因,node.js 应用程序没有拾取它。
是否有人知道为什么我的应用会毫无问题地读取常规环境变量,但无法读取设置为机密的环境变量?
谢谢。
【问题讨论】:
-
您能分享一下您是如何创建秘密并在部署中引用它的吗?
-
你是如何添加其他环境变量的?是使用 ConfigMaps 还是其他机制?
标签: node.js kubernetes environment-variables