簡體   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