samuel-nartey/devops-labs
GitHub: samuel-nartey/devops-labs
涵盖 Docker、Kubernetes、Terraform、AWS、CI/CD、DevSecOps 等全栈 DevOps 技术的实战实验室与学习路线项目。
Stars: 1 | Forks: 5
# devops-labs
针对 Docker、Kubernetes、GitOps、CI/CD、AWS、DevSecOps 和云工程的实战实验室与真实项目。锻炼实操能力,而非纸上谈兵。
## 🧭 项目介绍
**DevOps Labs** 是一个结构化、循序渐进的研讨课程仓库,专为那些希望从*了解* DevOps 工具,进阶到*在真实环境下实际运用它们*的工程师而打造。
每个实验都基于真实场景建模——你在生产环境、技术面试和云认证中遇到的那种场景。每一个都有明确的目标、定义的结果和可衡量的结果。
## 👥 适用人群
| 角色 | 你将如何使用本项目 |
|------|-------------------|
| **DevOps 工程师** | 构建并强化核心容器、CI/CD 和 IaC 技能 |
| **DevSecOps 从业者** | 将安全扫描、策略和密钥管理集成到流水线中 |
| **云工程师** | 跨 AWS、GCP 或 Azure 部署和管理工作负载 |
| **平台工程师** | 构建内部工具、GitOps 工作流和开发者平台 |
| **SRE** | 实践可观测性、事件响应和可靠性模式 |
| **软件工程师** | 学习运维方面知识——容器、流水线、云部署 |
## 🗺️ 学习路线图
```
Git & GitHub → Linux → Docker → Kubernetes → CI/CD → Terraform → AWS/Cloud → DevSecOps → Observability
│ │ │ │ │ │ │ │
Foundation Foundation Core Orchestration Automation IaC Cloud Native Security
```
从头开始,或者直接跳入与你当前水平相匹配的轨道。
## 🗂️ 实验轨道
### 🌿 轨道 1 — Git & GitHub *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [Git 基础与心智模型](./git/lab-01/) | 本地仓库、暂存区、提交、历史 | 🟢 基础 | 30 分钟 |
| 02 | [分支策略](./git/lab-02/) | GitFlow、主干开发、功能分支 | 🟢 基础 | 45 分钟 |
| 03 | [Merge vs Rebase vs Squash](./git/lab-03/) | 清理历史、冲突解决 | 🟡 中级 | 45 分钟 |
| 04 | [Pull Request 工作流](./git/lab-04/) | PR 模板、代码审查、分支保护 | 🟡 中级 | 60 分钟 |
| 05 | [Git 钩子与自动化](./git/lab-05/) | Pre-commit 钩子、linting、密钥扫描 | 🟡 中级 | 45 分钟 |
| 06 | [GitHub Actions — 首条流水线](./git/lab-06/) | 在 push 时触发 CI、运行测试、通知 | 🔴 高级 | 60 分钟 |
| 07 | [Monorepo 管理](./git/lab-07/) | 路径过滤、仅运行受影响的流水线 | 🔴 高级 | 75 分钟 |
### 🐧 轨道 2 — Linux & Shell *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [Linux CLI 生存包](./linux/lab-01/) | 导航、管理文件、权限 | 🟢 基础 | 45 分钟 |
| 02 | [用户、组与权限](./linux/lab-02/) | sudoers、chmod、chown、ACL | 🟢 基础 | 45 分钟 |
| 03 | [DevOps Shell 脚本编写](./linux/lab-03/) | 自动化备份、部署、健康检查 | 🟡 中级 | 60 分钟 |
| 04 | [进程与服务管理](./linux/lab-04/) | systemd、journalctl、ps、kill | 🟡 中级 | 45 分钟 |
| 05 | [网络基础](./linux/lab-05/) | curl、netstat、ss、iptables、DNS | 🟡 中级 | 60 分钟 |
| 06 | [Linux 安全加固基础](./linux/lab-06/) | SSH 密钥、fail2ban、auditd、ufw | 🔴 高级 | 75 分钟 |
### 🐳 轨道 3 — Docker 与容器
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [运行你的第一个容器](./Docker%20%26%20Containers/Running%20Your%20First%20Container) | 运行、检查和管理容器 | 🟢 基础 | 30 分钟 |
| 02 | [编写生产级 Dockerfile](./docker/lab-02/) | 多阶段构建、层优化 | 🟡 中级 | 45 分钟 |
| 03 | [使用 Compose 构建多服务应用](./docker/lab-03/) | 三层应用:app + db + 反向代理 | 🟡 中级 | 60 分钟 |
| 04 | [Docker 网络深度剖析](./docker/lab-04/) | Bridge、host 和 overlay 网络 | 🟡 中级 | 45 分钟 |
| 05 | [数据卷与持久化存储](./docker/lab-05/) | Bind mounts、命名数据卷、备份 | 🟡 中级 | 45 分钟 |
| 06 | [容器安全扫描](./docker/lab-06/) | 使用 Trivy 扫描镜像、修复 CVE | 🔴 高级 | 60 分钟 |
| 07 | [Rootless 容器与安全加固](./docker/lab-07/) | 最小权限、只读文件系统、seccomp | 🔴 高级 | 75 分钟 |
| 08 | [私有 Registry 与镜像签名](./docker/lab-08/) | Harbor registry、Cosign、SBOM | 🔴 高级 | 90 分钟 |
### ☸️ 轨道 4 — Kubernetes *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [Kubernetes 架构与核心对象](./kubernetes/lab-01/) | Pods、Deployments、Services、Namespaces | 🟢 基础 | 60 分钟 |
| 02 | [ConfigMaps、Secrets 与环境配置](./kubernetes/lab-02/) | 外部化配置、安全管理密钥 | 🟡 中级 | 45 分钟 |
| 03 | [Persistent Volumes 与 StatefulSets](./kubernetes/lab-03/) | 部署有状态数据库工作负载 | 🟡 中级 | 60 分钟 |
| 04 | [Ingress Controller 与 TLS 终止](./kubernetes/lab-04/) | NGINX Ingress、cert-manager、HTTPS | 🟡 中级 | 75 分钟 |
| 05 | [资源限制、HPA 与自动伸缩](./kubernetes/lab-05/) | CPU/内存限制、Horizontal Pod Autoscaler | 🟡 中级 | 60 分钟 |
| 06 | [RBAC 与 Service Account 加固](./kubernetes/lab-06/) | Roles、RoleBindings、最小权限 | 🔴 高级 | 75 分钟 |
| 07 | [Network Policies](./kubernetes/lab-07/) | Pod 间的零信任网络 | 🔴 高级 | 60 分钟 |
| 08 | [Helm — 打包与部署应用](./kubernetes/lab-08/) | 编写、模板化和发布 Helm chart | 🔴 高级 | 90 分钟 |
| 09 | [使用 ArgoCD 实现 GitOps](./kubernetes/lab-09/) | 声明式部署、同步、回滚 | 🔴 高级 | 90 分钟 |
| 10 | [集群加固与 CIS 基准测试](./kubernetes/lab-10/) | kube-bench、Pod Security Standards、审计日志 | 🔵 专家 | 120 分钟 |
### 🔄 轨道 5 — CI/CD 流水线 *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [GitHub Actions — CI 流水线](./cicd/lab-01/) | 在每次 push 时构建、测试和 lint | 🟢 基础 | 45 分钟 |
| 02 | [在流水线中容器化并 Push](./cicd/lab-02/) | 构建镜像、打标签、推送到 registry | 🟡 中级 | 60 分钟 |
| 03 | [流水线中的密钥管理](./cicd/lab-03/) | GitHub Secrets、OIDC、最小权限 | 🟡 中级 | 60 分钟 |
| 04 | [矩阵构建与并行执行](./cicd/lab-04/) | 多操作系统、多版本并行任务 | 🟡 中级 | 45 分钟 |
| 05 | [CI 中的安全扫描](./cicd/lab-05/) | Trivy、Snyk、SAST — 遇到严重 CVE 即失败 | 🔴 高级 | 75 分钟 |
| 06 | [通过 ArgoCD 持续交付至 Kubernetes](./cicd/lab-06/) | GitOps CD 流水线、镜像更新自动化 | 🔴 高级 | 90 分钟 |
| 07 | [使用 Jenkins 实现流水线即代码](./cicd/lab-07/) | 声明式 Jenkinsfile、共享库 | 🔴 高级 | 90 分钟 |
| 08 | [GitLab CI 端到端流水线](./cicd/lab-08/) | 涵盖多环境的完整 GitLab CI/CD | 🔴 高级 | 90 分钟 |
### 🏗️ 轨道 6 — 基础设施即代码 -- *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [Terraform 基础](./terraform/lab-01/) | Providers、resources、state、plan、apply | 🟢 基础 | 60 分钟 |
| 02 | [变量、Outputs 与 Locals](./terraform/lab-02/) | 可复用、参数化配置 | 🟢 基础 | 45 分钟 |
| 03 | [Remote State 与锁定](./terraform/lab-03/) | S3 backend、DynamoDB 锁定 | 🟡 中级 | 60 分钟 |
| 04 | [Modules — 编写你自己的模块](./terraform/lab-04/) | 可复用的 VPC、计算和安全模块 | 🟡 中级 | 90 分钟 |
| 05 | [配置 AWS EKS 集群](./terraform/lab-05/) | 通过 Terraform 完整部署带节点组的 EKS 集群 | 🔴 高级 | 120 分钟 |
| 06 | [Terraform 安全与合规](./terraform/lab-06/) | tfsec、Checkov、结合 Sentinel 的策略即代码 | 🔴 高级 | 90 分钟 |
| 07 | [Terragrunt — 大规模践行 DRY Terraform](./terraform/lab-07/) | 多环境、多账户架构 | 🔵 专家 | 120 分钟 |
### ☁️ 轨道 7 — AWS 与云工程 *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [AWS 核心服务指南](./aws/lab-01/) | EC2、S3、IAM、VPC — 实操之旅 | 🟢 基础 | 60 分钟 |
| 02 | [从零搭建 VPC](./aws/lab-02/) | 自定义 VPC、子网、IGW、路由表、NAT | 🟡 中级 | 90 分钟 |
| 03 | [IAM — 实践最小权限原则](./aws/lab-03/) 角色、策略、SCPs、权限边界 | 🟡 中级 | 75 分钟 |
| 04 | [在 ECS Fargate 上部署容器化应用](./aws/lab-04/) | 任务定义、服务、ALB、ECR | 🟡 中级 | 90 分钟 |
| 05 | [使用 Lambda 和 API Gateway 构建 Serverless](./aws/lab-05/) | 事件驱动 API、S3 触发器、DLQ | 🟡 中级 | 90 分钟 |
| 06 | [EKS — AWS 上的托管 Kubernetes](./aws/lab-06/) | 部署集群、IRSA、ALB Ingress、EBS CSI | 🔴 高级 | 120 分钟 |
| 07 | [AWS 安全加固](./aws/lab-07/) | GuardDuty、Security Hub、Config、CloudTrail | 🔴 高级 | 90 分钟 |
| 08 | [多账户架构](./aws/lab-08/) | AWS Organizations、Control Tower、SCPs | 🔵 专家 | 120 分钟 |
| 09 | [成本优化工程](./aws/lab-09/) | Cost Explorer、Budgets、资源规模调整、Savings Plans | 🔴 高级 | 75 分钟 |
### 🛡️ 轨道 8 — DevSecOps 与安全工程 *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [针对 DevOps 流水线的威胁建模](./devsecops/lab-01/) | 将 STRIDE 模型应用于真实流水线 | 🟡 中级 | 60 分钟 |
| 02 | [SAST — CI 中的静态代码分析](./devsecops/lab-02/) | Semgrep、Bandit、发现异常时使流水线失败 | 🟡 中级 | 60 分钟 |
| 03 | [SCA — 依赖与许可证扫描](./devsecops/lab-03/) | Snyk、OWASP Dependency-Check、SBOM | 🟡 中级 | 60 分钟 |
| 04 | [密钥检测与预防](./devsecops/lab-04/) | Gitleaks、truffleHog、Pre-commit 钩子 | 🟡 中级 | 45 分钟 |
| 05 | [容器镜像加固](./devsecops/lab-05/) | Distroless、Trivy、Dockle、CIS 基准 | 🔴 高级 | 90 分钟 |
| 06 | [使用 OPA 和 Gatekeeper 实现策略即代码](./devsecops/lab-06/) | 强制执行 Kubernetes 准入策略 | 🔴 高级 | 90 分钟 |
| 07 | [使用 Falco 进行运行时安全防护](./devsecops/lab-07/) | 实时检测异常容器行为 | 🔴 高级 | 90 分钟 |
| 08 | [使用 HashiCorp Vault 进行密钥管理](./devsecops/lab-08/) | 动态密钥、PKI、Kubernetes 认证 | 🔴 高级 | 120 分钟 |
| 09 | [供应链安全与 SLSA](./devsecops/lab-09/) | Cosign、SBOM、出处、SLSA Level 2 | 🔵 专家 | 120 分钟 |
| 10 | [Kubernetes 上的零信任架构](./devsecops/lab-10/) | 结合 Istio 的 mTLS、SPIFFE/SPIRE、网络策略 | 🔵 专家 | 150 分钟 |
### 📊 轨道 9 — 可观测性与监控 *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [Prometheus 与 Grafana 技术栈](./observability/lab-01/) | 抓取指标、构建仪表盘 | 🟢 基础 | 60 分钟 |
| 02 | [应用埋点](./observability/lab-02/) | 使用 Prometheus 客户端库自定义指标 | 🟡 中级 | 60 分钟 |
| 03 | [集中式日志 — ELK Stack](./observability/lab-03/) | 使用 Elasticsearch 发送、解析和查询日志 | 🟡 中级 | 90 分钟 |
| 04 | [使用 Jaeger 进行分布式追踪](./observability/lab-04/) | 跨微服务追踪请求 | 🔴 高级 | 90 分钟 |
| 05 | [告警与 On-Call 手册](./observability/lab-05/) | AlertManager、PagerDuty、Runbook 模板 | 🔴 高级 | 75 分钟 |
| 06 | [SLO、SLI 与错误预算](./observability/lab-06/) | 定义、测量和报告可靠性 | 🔴 高级 | 90 分钟 |
### ⚙️ 轨道 10 — 配置管理 *(即将推出)*
| # | 实验 | 你将构建什么 | 难度 | 预计时间 |
|---|-----|-------------------|-----------|-----------|
| 01 | [Ansible 基础](./ansible/lab-01/) | Inventory、Playbooks、Ad-hoc 命令 | 🟢 基础 | 60 分钟 |
| 02 | [Roles 与可复用 Playbooks](./ansible/lab-02/) | 模块化、幂等配置 | 🟡 中级 | 75 分钟 |
| 03 | [Ansible Vault — 静态密钥管理](./ansible/lab-03/) | 加密 Playbooks 和 vars 中的密钥 | 🟡 中级 | 45 分钟 |
| 04 | [使用 Ansible 配置 K8s 集群](./ansible/lab-04/) | 端到端预置和配置节点 | 🔴 高级 | 120 分钟 |
## 🛠️ 涵盖的工具与技术
⚙️ DevOps 实验室
面向 DevOps、DevSecOps 和云工程师的生产级实战实验室。
没有 PPT。没有被动阅读。你将像在实际工作中一样进行构建、破坏、修复和交付。
| 分类 | 工具 |
|----------|-------|
| **版本控制** | Git, GitHub, GitLab, pre-commit, Gitleaks |
| **容器** | Docker, Docker Compose, Podman, Harbor, Cosign |
| **编排** | Kubernetes, Helm, ArgoCD, Kustomize, k3s |
| **CI/CD** | GitHub Actions, GitLab CI, Jenkins, Tekton |
| **基础设施即代码** | Terraform, Terragrunt, Pulumi, Ansible |
| **云** | AWS (EKS, ECS, Lambda, VPC, IAM, S3, RDS) |
| **安全** | Trivy, Falco, OPA, Vault, Semgrep, Snyk, Gatekeeper |
| **可观测性** | Prometheus, Grafana, ELK Stack, Jaeger, AlertManager |
| **网络** | NGINX, Istio, Envoy, cert-manager, ExternalDNS |
| **操作系统** | Ubuntu, Amazon Linux 2, Alpine |
## 📁 仓库结构
```
devops-labs/
├── git/
│ ├── lab-01-fundamentals/
│ ├── lab-02-branching/
│ └── ...
├── linux/
│ ├── lab-01-cli/
│ └── ...
├── docker/
│ ├── lab-01-first-container/
│ ├── lab-02-dockerfiles/
│ └── ...
├── kubernetes/
│ ├── lab-01-core-objects/
│ └── ...
├── cicd/
│ ├── lab-01-github-actions/
│ └── ...
├── terraform/
│ ├── lab-01-fundamentals/
│ └── ...
├── aws/
│ ├── lab-01-core-services/
│ └── ...
├── devsecops/
│ ├── lab-01-threat-modelling/
│ └── ...
├── observability/
│ ├── lab-01-prometheus-grafana/
│ └── ...
├── ansible/
│ ├── lab-01-fundamentals/
│ └── ...
└── assets/
└── banner.png
```
每个实验文件夹遵循以下结构:
```
lab-01-first-container/
├── README.md ← objectives, background, tasks
├── solution/ ← reference solution (attempt first)
├── Dockerfile ← starter file where applicable
└── docker-compose.yml ← where applicable
```
## 🚀 快速开始
```
# 1. 克隆 repo
git clone https://github.com/YOUR_USERNAME/devops-labs.git
# 2. 导航到 track
cd devops-labs/docker/lab-01-first-container
# 3. 阅读 lab brief
cat README.md
```
### 难度指南
| 徽章 | 级别 | 前提要求 |
|-------|-------|---------|
| 🟢 基础 | 无需该工具的先验经验 | 基本的 Linux CLI |
| 🟡 中级 | 已熟练掌握基础知识 | 已完成工具基础学习 |
| 🔴 高级 | 生产级挑战 | 已完成中级实验 |
| 🔵 专家 | 相当于真实的工程面试与突发事件 | 已完成整条轨道 |
## 🛠️ 各轨道前置要求
| 轨道 | 最低要求 |
|-------|---------------------|
| Git & GitHub | GitHub 账号、终端访问权限 |
| Linux | Linux/macOS 终端,或 Windows 上的 WSL2 |
| Docker | 已安装 Docker Desktop 或 Docker Engine |
| Kubernetes | 已完成 Docker 实验室,已安装 kubectl,k3s 或 minikube |
| CI/CD | GitHub 账号,Docker Hub 或 ECR 账号 |
| Terraform | AWS 账号(免费套餐),已安装 Terraform CLI |
| AWS | AWS 账号,已配置 AWS CLI |
| DevSecOps | 建议先完成 Kubernetes 轨道 |
| 可观测性 | 已完成 Docker 或 Kubernetes 轨道 |
| Ansible | 已完成 Linux 轨道,具有至少一个目标的 SSH 访问权限 |
## 📄 许可证
MIT — 免费、分享与构建。请注明来源。
**如果这个仓库对你有帮助 — 请点个 Star ⭐**
只需 2 秒钟,就能帮助其他工程师发现它。

只需 2 秒钟,就能帮助其他工程师发现它。

标签:DevSecOps, Docker, 上游代理, 后端开发, 子域名突变, 安全防御评估, 教程, 漏洞利用检测, 系统提示词, 自定义请求头, 请求拦截