繁体   English   中英

从 node.js 应用程序访问 Kubernetes“秘密”环境变量

[英]Accessing Kubernetes "secret" environment variables from a node.js app

我有一个 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 应用程序没有选择它。

有没有人知道为什么我的应用程序可以毫无问题地读取常规环境变量,但无法读取设置为机密的变量?

谢谢。

我有一个 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 应用程序没有选择它。

有没有人知道为什么我的应用程序可以毫无问题地读取常规环境变量,但无法读取设置为机密的变量?

谢谢。

我有一个 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 应用程序没有选择它。

有没有人知道为什么我的应用程序可以毫无问题地读取常规环境变量,但无法读取设置为机密的变量?

谢谢。

您的 base 64 编码可能存在一些问题,特别是在填充字符“=”中,请参阅为什么 base64 编码的字符串末尾有一个 = 符号作为示例,字符串“QUJDREVGRw==”和“QUJDREVGRw”都是在“ABCDEFG”中解码,但 kubernetes 容易受到影响:第一个是正确的,后者会导致错误!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM