Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为Kubernetes部署返回未定义的环境变量_Node.js_Kubernetes_Deployment_Environment Variables_Kubernetes Secrets - Fatal编程技术网

Node.js 为Kubernetes部署返回未定义的环境变量

Node.js 为Kubernetes部署返回未定义的环境变量,node.js,kubernetes,deployment,environment-variables,kubernetes-secrets,Node.js,Kubernetes,Deployment,Environment Variables,Kubernetes Secrets,我发布了一个与此类似的帖子,并试图实现这个问题的答案所说的: 然而,当我仍然调用我的环境变量doing process.env.USERNAME时,我仍然得到未定义的返回。。。我是否在部署文件中出错?这是my deployment.yaml的副本: 任何帮助都将不胜感激!此外,我还试图将我的环境变量作为机密,因为我不想公开任何变量,因为它包含敏感信息。我正在尝试使用Express在Node.js应用程序上执行此操作。谢谢大家! 编辑:下面是机密部分在我的yaml文件中的样子 secrets:

我发布了一个与此类似的帖子,并试图实现这个问题的答案所说的:

然而,当我仍然调用我的环境变量doing process.env.USERNAME时,我仍然得到未定义的返回。。。我是否在部署文件中出错?这是my deployment.yaml的副本:

任何帮助都将不胜感激!此外,我还试图将我的环境变量作为机密,因为我不想公开任何变量,因为它包含敏感信息。我正在尝试使用Express在Node.js应用程序上执行此操作。谢谢大家!

编辑:下面是机密部分在我的yaml文件中的样子

secrets:
  - name: environmental-variables
  key: USERNAME
  - name: environmental-variables
  key: PASSWORD
我的机密yaml文件的外观:

kind: Secret
apiVersion: v1
metadata:
  name: environmental-variables
  namespace: tda-dev-duck-dev
data:
  USERNAME: <username>
  PASSWORD: <password>
您创建了ConfigMap并试图从secret获取值。如果您希望从configmap中设置值,请按照以下方式更新环境

env:
  - name: USERNAME
    valueFrom:
      configMapKeyRef:
        name: environmental-variables # this is ConfigMap Name
        key: USERNAME # this is key in ConfigMap
  - name: PASSWORD
    valueFrom:
      configMapKeyRef:
        name: environmental-variables
        key: PASSWORD
  - name: HOST
    valueFrom:
      configMapKeyRef:
        name: environmental-variables
        key: HOST
apiVersion: v1
kind: ConfigMap
metadata:
  name: environmental-variables
data:
  USERNAME: <username>
  PASSWORD: <password>
  HOST: <host>
并按如下方式更新configmap

env:
  - name: USERNAME
    valueFrom:
      configMapKeyRef:
        name: environmental-variables # this is ConfigMap Name
        key: USERNAME # this is key in ConfigMap
  - name: PASSWORD
    valueFrom:
      configMapKeyRef:
        name: environmental-variables
        key: PASSWORD
  - name: HOST
    valueFrom:
      configMapKeyRef:
        name: environmental-variables
        key: HOST
apiVersion: v1
kind: ConfigMap
metadata:
  name: environmental-variables
data:
  USERNAME: <username>
  PASSWORD: <password>
  HOST: <host>
要了解如何使用ConfigMap数据定义容器环境变量,请单击


如果您想将机密用作环境变量,请检查

在了解如何将机密用作环境变量几天后,我了解了如何在我的nodejs应用程序中引用它

在我使用调用环境变量的常规方法process.env.VARIABLE_NAME之前,这对我来说是行不通的,因为我把秘密作为环境变量。为了得到变量的值,我必须在我的Javascript文件中执行process.env.environment_VARIABLES_USERNAME,这对我很有用!其中环境变量是名称,用户名是键


不确定这是否会帮助其他人,但这就是我如何在我的nodejs应用程序中访问我的秘密

请参阅ConfigMap中的管道字符|-这是问题的指示器。基本上,您的configmap只有一个条目,key.env和value是一个带有用户名、密码等的多行字符串。为了能够从configmap实际装载条目作为env变量,您需要在configmap的数据块中有多个条目,每个信息一个条目。关于机密的问题。。什么是秘密以及使用秘密的好处?您还可以使用与环境变量相同的方式访问秘密,即process.env.*要了解秘密与configmap的区别,请选中此选项是,您可以将秘密作为环境变量传递。。link如果我想访问这个秘密,我尝试了process.env.*但仍然没有定义-访问它的方法是否像文档中所说的那样使用$secret_NAME?