NodeJs 在从 kubernetes yaml 文件中读取秘密值时抛出未定义的错误

NodeJs throwing undefined error while reading the secret value from kubernetes yaml file

我需要从 NodeJs 读取 Kubernetes 键和值。但是我收到一个未定义的错误。

请找到下面的代码。

deployment.yaml

containers:
-   name: server
    env:
    -name: CLIENT_DEV
        valueFrom:
            secretKeyRef:
                name: dev1-creds-config
                key: clientId

secretKeyRef 值将在另一个 yaml 文件中可用。当 dev/local minikube 构建是 运行 时,这将被正确读取,基于我们所在的区域 运行.

secrets.enc.yaml

apiVersion: v1
kind: Secret
metadata:
    name: dev1-creds-config
type: Opaque
data:
    clientId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    username: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

上面的包含加密值。这是为了确保安全而创建的。

NodeJs的index.js文件读取值

require("dotenv").config();
const express = require("express");
const app = express();

console.log("value.."+processs.env.CLIENT_DEV);
const host = customHost || "localhost";

app.listen(port,host,err => {
    if(err){
        return logger.error(err.message);
    }
    logger.appStarted("3000", host);
});

console.log("value.."+processs.env.CLIENT_DEV); 这一行给我“未定义”

我的查询是,

  1. 是否可以使用 Node js 从部署 yaml 中获取 yaml 加密值
  2. 是否可以在Node Js的.env文件中配置yaml键值

我无法从我的节点 js 中的 yaml 文件中读取这个秘密值。

请帮我解决这个问题。

提前致谢。

检查你的 deployment.yaml 中的缩进,它应该是这样的:

containers:
- name: server
  env:
    - name: CLIENT_DEV
      valueFrom:
        secretKeyRef:
          name: dev1-creds-config
          key: clientId

在你的问题中,缩进不正确。不过只要你的nodejspods都运行就好了,我看你刚才贴的不是很准确

其次,您的 JavaScript 代码中有一个拼写错误 processs。更正行:

console.log("value.."+process.env.CLIENT_DEV);

验证所有这些后,您的 NodeJs 应用程序将读取 Kubernetes 秘密值。