我创建了 NodeJS 应用程序:
const http = require('http');
const Route =require('./route.js');
//Log
const logger = require('./logger.js');
//Server
const express = require('express')
const app = express()
const port= process.env.PORT || 8080;
server = http.createServer(app)
app.use(express.json());
const password= process.env.PASS || "1234";
//endpoint
app.use(Route)
app.listen(port, ()=>{
logger.info(`App started on port ${port}`)
})
此应用程序将作为容器部署在 RedHat Openshift 上,而不是 process.env。我必须使用 Helm 文件中的值。
我知道有一个专门的包可以读取yaml文件,但我不确定我们使用Openshift时是否需要它。是吗
保持代码不变。可以在本地开发环境中正常运行
export PASS=passw0rd
npm run dev
当你打包在容器中时,你可以在运行它进行本地测试时类似地提供一个环境变量
docker run -d -e PASS=passw0rd your-image
在 Kubernetes 中,您将在容器规范的
env:
块中传递它。如果您通过 Helm 图表部署它,那么此时您可以替换它的值。
# charts/myapp/templates/deployment.yaml
env:
- name: PASS
value: {{ .Values.password }}
# dev-values.yaml
password: passw0rd
helm install . myapp -f dev-values.yaml
最好也使用 Kubernetes Secret 来传递值,但这提供的额外安全性最低。