- ansible/files 改为与文档 XX-YY 对齐的目录结构,更新相关 playbook 路径 - 新增 scripts/verify.sh 与 ansible/playbooks/verify/*.yml,移除单体 verify-matrix.yml - 补充 docs/00-02 矩阵状态、00-05 验证框架与流程、00-04 环境与 ylc65 工作机说明 - 增加 k3s 存储准备、Longhorn、local-path 等 playbook 与辅助脚本 Made-with: Cursor
52 lines
2.4 KiB
Markdown
52 lines
2.4 KiB
Markdown
# 04-08-nodejs-安全上下文
|
||
|
||
> 为 `nodejs-demo` 配置 **Pod / 容器级 `securityContext`**:非 root、只读根文件系统、降权能力等。**以集群 PSP/约束与实际镜像为准**,逐步收紧。
|
||
|
||
## 前置条件
|
||
|
||
- 已部署 `nodejs-demo`(`04-01`)。
|
||
- 注意:`node:18-alpine` 默认用户可能为 root;非 root 运行需镜像内已有可写目录或使用 `emptyDir` 挂载(见 [`04-09-nodejs-存储与卷.md`](04-09-nodejs-存储与卷.md))。
|
||
|
||
## 清单路径(唯一真源)
|
||
|
||
| 本篇完整清单 | [`ansible/files/04-01-nodejs-demo/04-08-nodejs-demo.yaml`](../ansible/files/04-01-nodejs-demo/04-08-nodejs-demo.yaml) |
|
||
| 应用 | `kubectl apply -f ansible/files/04-01-nodejs-demo/04-08-nodejs-demo.yaml` |
|
||
|
||
## 场景说明(白话)
|
||
|
||
- **降权**:用非 root 用户跑 Node,减少被攻击后的影响面。
|
||
- **只读根盘**:系统目录不让写;应用要写临时文件,必须单独挂 **可写卷**(示例用 `/tmp` 的 `emptyDir`)。
|
||
- **渐进收紧**:先在一个测试命名空间试,再推广;强策略集群可能被准入控制器拦截。
|
||
|
||
### 相对 `04-07` 的变更(原文 → 新文)
|
||
|
||
| 位置 | 原文(`04-07`) | 新文(`04-08`) |
|
||
|------|-----------------|-----------------|
|
||
| `template.spec.securityContext` | (无) | `fsGroup: 1000` |
|
||
| `containers[].securityContext` | (无) | `runAsNonRoot` / `runAsUser: 1000` / `readOnlyRootFilesystem: true` 等 |
|
||
| `volumeMounts` / `volumes` | 仅默认 | `emptyDir` 挂 `/tmp` |
|
||
|
||
若应用需写 `node_modules` 等,应改用多阶段构建把依赖打进镜像只读层,或挂卷到可写路径。
|
||
|
||
## 部署与验证
|
||
|
||
```bash
|
||
kubectl apply -f ansible/files/04-01-nodejs-demo/04-08-nodejs-demo.yaml
|
||
kubectl get pod -l app=nodejs-demo -n default
|
||
kubectl exec deploy/nodejs-demo -n default -- id
|
||
```
|
||
|
||
预期:Pod Running;`id` 显示非 root(与 `runAsUser` 一致)。
|
||
|
||
## 失败排查
|
||
|
||
- **permission denied**:写只读路径;增加 `emptyDir`/`PVC` 挂载或放宽 `readOnlyRootFilesystem`。
|
||
- **镜像必须以非 root UID 可运行**:部分官方镜像入口脚本要求 root,需换镜像或自定义 Dockerfile。
|
||
- 集群 **Pod Security** / Kyverno 等策略拦截:读策略报错信息调整字段。
|
||
- `06-01-k3s-networkpolicy-故障排查.md`
|
||
|
||
## 相关文档
|
||
|
||
- [`04-09-nodejs-存储与卷.md`](04-09-nodejs-存储与卷.md)
|
||
- [`04-05-nodejs-资源请求与限制.md`](04-05-nodejs-资源请求与限制.md)
|