# 混沌工程说明

## 适用范围

- **仅 Staging 环境**：禁止在生产环境运行混沌实验
- **每月 1 次演练**：建议每月第一个工作周执行
- **演练窗口**：业务低峰期（02:00 - 05:00）

## 实验清单

| 实验 | 注入故障 | 验证目标 |
|------|----------|----------|
| `pod-delete` | 杀死 50% Pod | 自愈能力、副本数冗余 |
| `pod-network-latency` | 注入 200ms 延迟 | 超时与重试、降级策略 |
| `disk-fill` | 填充磁盘至 80% | 日志写入、磁盘告警 |

## 前置条件

1. Staging 环境已部署完整监控（Prometheus + Alertmanager + Grafana）
2. 已配置稳态探针（`steadyStateHypothesis`）
3. 已配置告警通道并验证可达
4. 演练参与者已就位（运维 + 研发 oncall）

## 演练流程

1. **演练前 30 分钟**：通知相关人员，确认稳态基线
2. **启动实验**：按顺序执行，单实验单次注入
3. **观察监控**：关注告警是否按预期触发、服务是否自愈
4. **演练后**：归档实验结果，更新本目录 README

## 回滚预案

- **5 分钟内未恢复自动回滚**：通过 Litmus `steadyStateHypothesis` 失败触发实验终止
- 手动回滚：
  ```bash
  kubectl delete chaosengine edu-chaos-experiments -n edu-monitoring
  kubectl rollout restart deployment/api-gateway -n edu-services
  ```
- 极端情况：直接缩容 / 扩容受影响 Deployment

## 安全约束

- 每次实验**只注入一种故障**，避免叠加影响判断
- 实验前快照数据库（参考 `infra/backup/backup-cron.sh`）
- 实验期间禁止发布任何业务变更
