如何从Node.js Pod的package.json中访问Kubernetes环境变量?
解决方法
首先纠正你的Pod配置错误:K8s中定义容器环境变量的字段是env,不是send,修正后的配置如下:
apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: DEMO_GREETING value: "Hello from the environment" - name: DEMO_FAREWELL value: "Such a sweet sorrow"
1. 在Node.js代码中访问环境变量
Node.js会自动将系统环境变量挂载到process.env对象中,无需依赖.env文件,直接在代码中读取即可:
// 示例业务代码 console.log("问候语:", process.env.DEMO_GREETING); console.log("告别语:", process.env.DEMO_FAREWELL);
2. 在package.json的脚本中使用环境变量
如果需要在package.json的scripts命令里引用这些变量,容器内是Linux环境,直接用$变量名即可:
{ "name": "node-hello", "version": "1.0.0", "scripts": { "print-greet": "echo $DEMO_GREETING", "print-farewell": "node -e \"console.log(process.env.DEMO_FAREWELL)\"" } }
验证方式
进入Pod容器内部执行命令测试:
# 进入Pod kubectl exec -it envar-demo -- /bin/bash # 执行脚本 npm run print-greet npm run print-farewell # 直接在Shell中查看变量 echo $DEMO_GREETING
内容的提问来源于stack exchange,提问作者Carlos Daniel Ospina Salazar
相关产品推荐
相关产品推荐

