tianhg468/ai-incident-response-demo

GitHub: tianhg468/ai-incident-response-demo

一个演示 AI 事件响应工程师工作模式的极简 Web 应用,包含 Kubernetes 部署和多种故障场景。

Stars: 0 | Forks: 0

# AI 事件响应演示应用 一个极简的 Web 应用程序,用于演示 AI 事件响应工程师的实时工作模式。 ## 包含内容 - **Simple Node.js API** - 极简 Express 服务器 - **Kubernetes 清单** - Deployment、Service、ConfigMap - **GitHub Actions** - 自动化部署流水线 - **事件场景** - 触发真实事件的脚本 - **本地 K8s 设置** - minikube 说明 ## 快速开始 ### 1. 前置条件 ``` # 安装所需工具 brew install minikube kubectl docker # 或者在 Linux 上: # sudo apt-get install docker.io # curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 # sudo install minikube-linux-amd64 /usr/local/bin/minikube ``` ### 2. 启动本地 Kubernetes 集群 ``` # 启动 minikube minikube start --memory=4096 --cpus=2 # 验证其运行状态 kubectl get nodes # 启用 metrics server(用于资源监控) minikube addons enable metrics-server # 使用 minikube 的 Docker 守护进程(可选,用于本地构建) eval $(minikube docker-env) ``` ### 3. 部署应用程序 ``` # 构建 Docker 镜像 docker build -t demo-app:v1 . # 应用 Kubernetes 清单 kubectl apply -f k8s/ # 等待部署 kubectl wait --for=condition=available --timeout=60s deployment/demo-app # 检查 pods 是否运行 kubectl get pods # 访问应用 minikube service demo-app --url # 或者:kubectl port-forward svc/demo-app 8080:80 # 然后访问 http://localhost:8080 ``` ### 4. 触发事件 ``` # 场景 1:触发 OOM(内存限制过低) ./incidents/trigger-oom.sh # 场景 2:触发崩溃循环 ./incidents/trigger-crash.sh # 场景 3:模拟高错误率 ./incidents/trigger-errors.sh ``` ### 5. 运行 AI 代理(实时模式) ``` # 返回主项目 cd .. # 配置实时模式 export MODE=live export KUBECONFIG=~/.kube/config export K8S_NAMESPACE=default export GITHUB_TOKEN=ghp_your_token_here export GITHUB_ORG=your-github-username # 运行事件响应代理 python -m agent.graph ``` ## 应用程序端点 - `GET /` - 健康检查(返回 OK) - `GET /health` - 详细健康状态 - `GET /metrics` - Prometheus 风格指标 - `POST /crash` - 故意导致 Pod 崩溃 - `POST /oom` - 触发内存溢出 - `POST /errors` - 生成 5xx 错误 ## Kubernetes 资源 应用程序将部署: - **Deployment**:3 个副本 - **Service**:LoadBalancer 类型(minikube tunnel) - **ConfigMap**:应用程序配置 - **资源限制**:256Mi 内存,200m CPU ## 事件场景 ### 场景 1:部署后内存溢出 1. 使用 512Mi 内存限制部署 2. 应用程序初始运行正常 3. 将 Deployment 更新为 128Mi(过低) 4. Pod 开始被 OOMKilled 5. 代理检测、诊断并提议回滚 ### 场景 2:配置错误导致崩溃循环 1. 使用有效配置部署 2. 使用无效 JSON 更新 ConfigMap 3. Pod 重启时崩溃 4. 代理检测到配置问题并提议修复 ### 场景 3:部署后错误率激增 1. 部署 v1(稳定版) 2. 部署有 bug 的 v2 3. 错误率飙升 4. 代理与部署关联并提议回滚 ## GitHub Actions 工作流 仓库包含 CI/CD 流水线: - **推送到 main**:构建并部署到"生产环境" - **PR**:运行测试并构建镜像 - **手动触发**:可以部署特定版本 ## 清理 ``` # 删除所有资源 kubectl delete -f k8s/ # 停止 minikube minikube stop # 删除 minikube 集群(可选) minikube delete ``` ## GitHub 设置 1. 创建新的 GitHub 仓库:`ai-incident-response-demo` 2. 推送此代码: git init git add . git commit -m "Initial demo app" git remote add origin https://github.com/YOUR_USERNAME/ai-incident-response-demo.git git push -u origin main 3. 设置 GitHub Actions(已在 `.github/workflows/` 中配置) 4. 添加部署所需的仓库密钥(如需要) ## 与 AI 代理集成 代理将: 1. **读取 Kubernetes**:检查 Pod 状态、事件、日志 2. **读取 GitHub**:分析提交、PR、部署历史 3. **关联数据**:将事件与部署匹配 4. **提议修复**:回滚、扩缩容、配置更改 5. **需要审批**:执行前需人工审核 6. **安全执行**:将修复应用到 Kubernetes ## 下一步 1. ✅ 部署到本地 Kubernetes 2. ✅ 触发事件 3. ✅ 运行 AI 代理 4. ✅ 观察调查过程 5. ✅ 批准/拒绝提议的修复 6. ✅ 在仪表板中查看结果 ## 故障排除 **Minikube 无法启动:** ``` minikube delete minikube start --driver=docker ``` **Pod 停留在 Pending 状态:** ``` kubectl describe pod # 检查 events 部分是否有错误 ``` **无法访问服务:** ``` # 使用 port-forward 代替 kubectl port-forward svc/demo-app 8080:80 ``` **代理无法连接到 Kubernetes:** ``` # 验证 kubeconfig kubectl config view kubectl config current-context # 应为 "minikube" ``` # 测试
标签:AI事件响应, Docker, Express, GitHub Actions, GNU通用公共许可证, minikube, MITM代理, NIDS, Node.js, 子域名突变, 安全防御评估, 容器化, 故障注入, 混沌工程, 演示应用, 特权提升, 自动化运维, 自动化部署, 自动笔记, 请求拦截, 逆向工具