3.0 KiB
3.0 KiB
04-03-nodejs-环境变量与配置注入
在
04-01-k3s-nodejs-高级部署.md基线上,用 ConfigMap / Secret 与env/envFrom注入配置,避免把敏感信息写进镜像或 Deployment 明文。
前置条件
- 已部署
nodejs-demo(04-01)。
清单路径(唯一真源)
| 项 | 路径 / 命令 |
|---|---|
| 本篇完整清单(累积至 04-03,含 ConfigMap + Deployment + Service + Ingress) | ansible/files/nodejs-demo/04-03-nodejs-demo.yaml |
| Secret 示例(勿提交真密钥) | ansible/files/nodejs-demo/nodejs-demo-secret.example.yaml |
| 手工应用 | kubectl apply -f ansible/files/nodejs-demo/04-03-nodejs-demo.yaml |
| Ansible | ansible-playbook ... -e nodejs_demo_manifest=04-03-nodejs-demo.yaml |
场景说明(白话)
- 普通配置(提示文案、开关、非密钥连接串):用 ConfigMap;改完
kubectl apply,Pod 滚动后生效(是否自动重启取决于你怎么挂载/引用)。 - 密钥类:用 Secret;内容和 ConfigMap 类似,但要更严格管控权限与存储位置。
- 在 Node 里怎么用:和在本机设环境变量一样,例如
NODE_ENV、PORT、NODE_OPTIONS;启动命令怎么写见04-02-nodejs-镜像与运行命令.md。
相对 04-02 的变更(原文 → 新文)
| 位置 | 原文(04-02) |
新文(04-03) |
|---|---|---|
| 新增资源 | (无) | ConfigMap nodejs-demo-config,APP_MSG |
containers[].env |
(无) | APP_MSG 来自 configMapKeyRef |
containers[].command |
["node"] + args 单行脚本 |
node + 多行 -e 脚本,读 process.env.APP_MSG,仍监听 3000 |
应用:
kubectl apply -f ansible/files/nodejs-demo/04-03-nodejs-demo.yaml
验证
kubectl get cm nodejs-demo-config -n default -o yaml
kubectl exec deploy/nodejs-demo -n default -- printenv APP_MSG
curl -s --max-time 3 http://<节点IP>/node/
Secret 示例(仅示意)
说明:示例文件为 nodejs-demo-secret.example.yaml;也可 kubectl create secret generic ...。在 Pod 中用 env.valueFrom.secretKeyRef 引用;验证 printenv API_TOKEN(注意日志勿打印密钥)。
删除
kubectl delete configmap nodejs-demo-config -n default --ignore-not-found
kubectl delete secret nodejs-demo-secret -n default --ignore-not-found
失败排查
- CreateContainerConfigError:引用的 ConfigMap/Secret 不存在或 key 名错误。
06-01-k3s-networkpolicy-故障排查.md
相关文档
04-09-nodejs-存储与卷.md(文件挂载另一种注入方式)04-12-nodejs-TLS与证书.md