Mfariyaj/devops-hands-on-labs
GitHub: Mfariyaj/devops-hands-on-labs
该仓库汇集了 370+ 个 DevOps 工具链的真实故障场景实验,通过故意损坏的配置帮助工程师在无引导的实战环境中练习事件响应与故障排查技能。
Stars: 0 | Forks: 0
# 🔧 DevOps 故障排除实验室
## 专供 DevOps 工程师使用的 370+ 真实故障场景
## 概述
本仓库汇集了整个 DevOps 工具链中**故意损坏的**配置和部署。每个实验都呈现了一个真实的故障场景,你必须仅使用工具的 CLI 和你的故障排除技能来进行诊断和修复。
无论是崩溃的 Kubernetes pod、失败的 Terraform plan、配置错误的 Nginx 反向代理,还是损坏的 CI/CD pipeline —— 这些实验都模拟了你在生产环境中将遇到的确切问题。没有手把手指导,没有多项选择。只有你、一个损坏的系统以及你的终端。
## 🗂️ 工具索引
| # | 分类 | 实验数 | 目录 | 状态 |
|---|----------|------|-----------|--------|
| 01 | Kubernetes & Istio | 35 | `kubernetes-labs/` | ✅ 可用 |
| 02 | Terraform | 15 | `terraform-labs/` | ✅ 可用 |
| 03 | Docker | 15 | `docker-labs/` | ✅ 可用 |
| 04 | Ansible | 15 | `ansible-labs/` | ✅ 可用 |
| 05 | Jenkins | 15 | `jenkins-labs/` | ✅ 可用 |
| 06 | ArgoCD | 15 | `argocd-labs/` | ✅ 可用 |
| 07 | Prometheus/Grafana | 15 | `prometheus-grafana-labs/` | ✅ 可用 |
| 08 | Helm | 15 | `helm-labs/` | ✅ 可用 |
| 09 | Linux/Networking | 15 | `linux-networking-labs/` | ✅ 可用 |
| 10 | Nginx/HAProxy | 15 | `nginx-haproxy-labs/` | ✅ 可用 |
| 11 | CI/CD Pipelines | 15 | `cicd-pipelines-labs/` | ✅ 可用 |
| 12 | Spinnaker | 15 | `spinnaker-labs/` | ✅ 可用 |
| 13 | Python | 15 | `python-labs/` | ✅ 可用 |
**总计:13 个分类中的 215 个实验**
## 🚀 快速开始
### 部署单个实验(Kubernetes 示例):
```
cd kubernetes-labs/lab-01-crashloopbackoff
./deploy.sh
```
### 部署所有 Kubernetes 实验:
```
cd kubernetes-labs
./deploy-all.sh
```
### 运行 Terraform 实验:
```
cd terraform-labs/lab-01-*
terraform init
terraform plan
# 观察 error,进行诊断并修复!
```
### 运行 Docker 实验:
```
cd docker-labs/lab-01-*
docker build -t broken-app .
docker run broken-app
# 观察 failure,进行诊断并修复!
```
### 运行 Ansible 实验:
```
cd ansible-labs/lab-01-*
ansible-playbook broken-playbook.yaml
# 观察 error,进行诊断并修复!
```
### 清理所有 Kubernetes 实验:
```
cd kubernetes-labs
./cleanup.sh
```
### 使用主脚本运行任何分类:
```
./master-deploy.sh docker
./master-cleanup.sh docker
```
## 📁 目录结构
```
devops-troubleshooting-labs/
├── README.md
├── master-deploy.sh
├── master-cleanup.sh
├── kubernetes-labs/ # Kubernetes troubleshooting labs (15)
├── terraform-labs/ # Terraform troubleshooting labs
├── docker-labs/ # Docker troubleshooting labs
├── ansible-labs/ # Ansible troubleshooting labs
├── jenkins-labs/ # Jenkins troubleshooting labs
├── argocd-labs/ # ArgoCD troubleshooting labs
├── prometheus-grafana-labs/ # Prometheus/Grafana troubleshooting labs
├── helm-labs/ # Helm troubleshooting labs
├── linux-networking-labs/ # Linux/Networking troubleshooting labs
├── nginx-haproxy-labs/ # Nginx/HAProxy troubleshooting labs
└── cicd-pipelines-labs/ # CI/CD Pipelines troubleshooting labs
```
## 📋 前置条件
| 工具 | 适用范围 | 安装指南 |
|------|-------------|---------------|
| `kubectl` | Kubernetes 实验 | [kubernetes.io/docs](https://kubernetes.io/docs/tasks/tools/) |
| 一个 K8s 集群 (minikube/kind/k3s/EKS) | Kubernetes 实验 | [minikube.sigs.k8s.io](https://minikube.sigs.k8s.io/docs/start/) |
| `terraform` | Terraform 实验 | [terraform.io/downloads](https://www.terraform.io/downloads) |
| `docker` | Docker 实验 | [docs.docker.com](https://docs.docker.com/get-docker/) |
| `ansible` | Ansible 实验 | [docs.ansible.com](https://docs.ansible.com/ansible/latest/installation_guide/) |
| `jenkins`(或 Docker) | Jenkins 实验 | [jenkins.io/download](https://www.jenkins.io/download/) |
| `argocd` CLI | ArgoCD 实验 | [argo-cd.readthedocs.io](https://argo-cd.readthedocs.io/en/stable/cli_installation/) |
| `helm` | Helm 实验 | [helm.sh/docs](https://helm.sh/docs/intro/install/) |
| `prometheus` / `grafana` | 监控实验 | [prometheus.io](https://prometheus.io/download/) |
| Linux 虚拟机或 container | Linux/Networking 实验 | 任意 Linux 发行版 |
| `nginx` / `haproxy` | 负载均衡器实验 | `apt install nginx haproxy` |
| `git` + CI 平台访问权限 | CI/CD 实验 | GitHub Actions / GitLab CI / Jenkins |
## 📊 进度追踪
跟踪你在所有分类中的完成情况:
| 分类 | 已完成 | 总计 | 进度 |
|----------|-----------|-------|----------|
| ☐ Kubernetes & Istio | _ /35 | 35 | ░░░░░░░░░░ |
| ☐ Terraform | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Docker | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Ansible | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Jenkins | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ ArgoCD | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Prometheus/Grafana | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Helm | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Linux/Networking | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Nginx/HAProxy | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ CI/CD Pipelines | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Spinnaker | _ /15 | 15 | ░░░░░░░░░░ |
| ☐ Python | _ /15 | 15 | ░░░░░░░░░░ |
## ⚔️ 交战规则
1. 在尝试诊断之前**不要查看损坏的配置文件**——那是作弊!
2. 部署实验 → 仅使用 CLI 工具进行调查 → 找出根本原因 → 修复它
3. 为自己计时——经验丰富的 DevOps 工程师应该能在 10 分钟内解决大多数实验
4. 记录你的发现——写下哪里出了问题以及你是如何修复的
5. 至少在 5 分钟内不要搜索答案——首先相信你的直觉
6. 如果你卡住了,在查看解决方案之前请阅读实验的 README 以获取提示
## 💡 提示
- **从简单的开始**:从 Kubernetes 实验 01-02 或 Docker 实验开始作为热身
- **仔细阅读错误信息**:90% 的答案都在错误输出中
- **使用 describe 和 logs**:`kubectl describe`、`docker logs`、`terraform show` 是你最好的朋友
- **检查事件**:`kubectl get events`、`journalctl` 和审计日志会揭示时间线
- **分层思考**:这是配置问题?网络问题?权限问题?还是资源问题?
- **对比正常与损坏的配置**:如果你有一个正常的参考配置,请与其进行 diff 对比
- **沿着依赖链追踪**:许多故障会级联发生——找出根本原因,而不是表象
- **在压力下练习**:设置一个计时器来模拟值班突发事件响应
## 📜 许可证
MIT 许可证——自由地破坏事物,明智地修复它们。
## 📜 许可证与版权
**© 2026 Mohammad Fariyaj Shaikh. 保留所有权利。**
本仓库采用**带有署名要求的修改版 MIT 许可证**授权。
✅ 你可以:Fork、clone、用于个人学习、注明出处后分享
❌ 你不可以:删除版权声明、声称拥有作者身份、未经许可用于商业用途
任何 forks 或副本都必须保留原始版权声明并链接回本仓库。
有关完整的法律条款,请参阅 [LICENSE](LICENSE)。
祝你好运,祝你排查故障愉快!🚀
标签:Cutter, 子域名突变, 实践教程, 故障排查, 系统提示词, 网络安全研究, 自定义请求头, 请求拦截, 逆向工具