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 Banner

⚙️ DevOps 实验室

面向 DevOps、DevSecOps 和云工程师的生产级实战实验室。
没有 PPT。没有被动阅读。你将像在实际工作中一样进行构建、破坏、修复和交付。

![Stars](https://img.shields.io/github/stars/YOUR_USERNAME/devops-labs?style=for-the-badge&logo=github&color=FFD700&labelColor=0D1117) ![Forks](https://img.shields.io/github/forks/YOUR_USERNAME/devops-labs?style=for-the-badge&logo=github&color=4A90D9&labelColor=0D1117) ![Last Commit](https://img.shields.io/github/last-commit/YOUR_USERNAME/devops-labs?style=for-the-badge&color=2ECC71&labelColor=0D1117) ![License](https://img.shields.io/github/license/YOUR_USERNAME/devops-labs?style=for-the-badge&color=E74C3C&labelColor=0D1117) ![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=for-the-badge&labelColor=0D1117) ![Contributors](https://img.shields.io/github/contributors/YOUR_USERNAME/devops-labs?style=for-the-badge&color=blueviolet&labelColor=0D1117)
## 🧭 项目介绍 **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 分钟 | ## 🛠️ 涵盖的工具与技术
| 分类 | 工具 | |----------|-------| | **版本控制** | 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 秒钟,就能帮助其他工程师发现它。
![Visitors](https://visitor-badge.laobi.icu/badge?page_id=YOUR_USERNAME.devops-labs)
标签:DevSecOps, Docker, 上游代理, 后端开发, 子域名突变, 安全防御评估, 教程, 漏洞利用检测, 系统提示词, 自定义请求头, 请求拦截