levi-x00/my-devops-portfolio
GitHub: levi-x00/my-devops-portfolio
一份基于 AWS 真实经验的 DevOps 基础设施作品集,提供涵盖容器编排、网络架构、CI/CD 及可观测性的 Terraform 项目与可复用模块。
Stars: 1 | Forks: 1
# 我的 DevOps 作品集
来自我作为 Cloud/DevOps/SRE 工程师经验的真实 AWS 基础设施项目。每个项目都包含架构图、Terraform 代码和部署指南。已移除专有细节——请随意使用此处的任何内容。
## 技术栈
| 类别 | 工具 |
|---|---|
| **容器编排** | EKS, ECS Fargate, ECS EC2 |
| **IaC** | Terraform, OpenTofu |
| **CI/CD** | CodePipeline, CodeBuild, CodeDeploy, ArgoCD, Argo Rollouts |
| **网络** | VPC, Transit Gateway, VPC Endpoints, Site-to-Site VPN, BGP |
| **可观测性** | Prometheus, Grafana, CloudWatch Container Insights, ELK Stack |
| **安全** | KMS, WAF, Trivy, IMDSv2, SSM Session Manager, Secrets Manager |
| **DNS & TLS** | Route 53, ACM, Private Hosted Zones |
## 项目
| # | 项目 | 描述 |
|---|---------|-------------|
| 01 | [使用 ECS 进行现代化改造](#01---modernize-with-ecs) | 采用蓝/绿 CI/CD 的 ECS 集群 — CodePipeline, CodeBuild, Trivy, 审批门禁 |
| 02 | [集中式 VPC Endpoints](#02---centralized-vpc-endpoints) | 通过 Transit Gateway + Route 53 PHZ 跨多个 Spoke VPC 共享 VPC endpoints |
| 03 | [集中式 Egress](#03---centralized-egress) | 多个 VPC 共享单一 NAT Gateway 出口 — 成本削减模式 |
| 04 | [使用 EKS 进行现代化改造](#04---modernize-with-eks) | 端到端 EKS:GitOps, ArgoCD 蓝绿部署, CI/CD, HPA, Prometheus/Grafana |
| 05 | [使用 EKS Fargate 进行现代化改造](#05---modernize-with-eks-fargate) | 完全无服务器 EKS — 无 EC2 节点组 |
| 06 | [加速 CI/CD](#06---speed-up-cicd) | 在 CodeBuild 中进行 Terraform provider 缓存,以减少流水线运行时间和成本 |
## 01 - 使用 ECS 进行现代化改造


使用 AWS 原生工具构建带有完整蓝/绿部署流水线的 ECS 集群。
**流水线流程:**
1. 开发人员提交代码 → webhook 触发 CodePipeline
2. CodeBuild 构建 Docker 镜像,推送到 ECR,运行 pytest + Trivy 安全扫描
3. 测试或扫描失败时流水线将中断;成功时发送 SNS 审批通知
4. 手动审批通过后,CodeDeploy 向 ECS 执行蓝/绿部署
**集群加固:**
- 通过 SSM Session Manager 实现 ECS Exec,使用 KMS 加密
- 启用 Container Insights
- WAF 附加到负载均衡器
- Route 53 + ACM 用于 HTTPS 终止
→ [01-modernize-with-ecs/](./01-modernize-with-ecs/)
## 02 - 集中式 VPC Endpoints

所有 AWS 服务的 VPC endpoints 都位于单个 Hub VPC 中。Spoke VPC 通过 Route 53 Private Hosted Zones 解析它们,同时在 endpoint 级别禁用私有 DNS 解析。
**为何重要:** 在多 VPC 账户中,您通常需要在每个 VPC 中创建相同的 VPC endpoints。此模式将其缩减为一组 — 随着 VPC 数量的增加,可显著节省成本。
**设计限制:**
- Endpoint 资源策略的上限为 20,480 个字符 — 当多个 VPC 共享 endpoints 时需仔细规划
- Endpoint ENI 在流量高峰时会自动扩容 — 需在 Hub VPC 中分配足够的 IP 空间
→ [02-centralized-vpce/](./02-centralized-vpce/)
## 03 - 集中式 Egress

通过 Transit Gateway 跨多个 Spoke VPC 共享的单一 NAT Gateway 出口。
**流量路径:** Spoke VPC → Transit Gateway → Egress VPC → NAT Gateway → Internet Gateway
**为何重要:** NAT Gateway 成本随 VPC 数量而增加。此模式使用一个 NAT Gateway 替换了 N 个,这在具有大量 Spoke VPC 的环境中极大降低了成本。
→ [03-centralized-egress/](./03-centralized-egress/)
## 04 - 使用 EKS 进行现代化改造

构建为 6 个渐进式堆栈的端到端生产级 EKS 设置,每个堆栈都建立在上一层之上。
| 堆栈 | 功能 |
|---|---|
| `0-baseline` | EKS 1.33, 托管节点组 (AL2023, gp3, IMDSv2), 附加组件, RDS PostgreSQL 17, IAM |
| `1-deploy-apps` | Flask 后端 + Nginx 前端, Secrets Store CSI Driver, ALB ingress |
| `2-hpa` | Horizontal Pod Autoscaler + Pod Disruption Budget |
| `3-cicd` | CodeCommit → CodePipeline → CodeBuild → ECR → EKS |
| `4-gitops-argocd` | ArgoCD + Argo Rollouts (蓝/绿) + ArgoCD Image Updater + ECR token 刷新 CronJob |
| `5-monitoring` | kube-prometheus-stack — 运行在 gp3 EBS 上的 Prometheus, Alertmanager, Grafana |
→ [04-modernize-with-eks/](./04-modernize-with-eks/)
## 05 - 使用 EKS Fargate 进行现代化改造
完全运行在 AWS Fargate 上的 EKS 集群 — 无 EC2 节点组,无需节点补丁,无需容量规划。
- 用于 IRSA 的 OIDC provider
- 针对 `kube-system`, `coredns`, `default` 的 Fargate profiles
- 附加组件配置为 `computeType = Fargate`
- CoreDNS Fargate profile 必须在应用附加组件之前存在(顺序由 Terraform 处理)
→ [05-modernize-with-eks-fargate/](./05-modernize-with-eks-fargate/)
## 06 - 加速 CI/CD
通过 S3 缓存在 CodeBuild 中进行 Terraform provider 缓存。`.terraform` 目录在流水线运行之间进行缓存,因此不会在每次触发时重新下载 providers 和 modules。
**影响:** 更快的流水线运行和更低的数据传输成本 — 随着 Terraform 代码库增长和使用的 providers 越来越多,其收益会不断叠加。
**技术栈:** GitHub → CodePipeline → CodeBuild (S3 cache)
→ [06-speedup-cicd/](./06-speedup-cicd/)
## 可重用模块
| 模块 | 描述 |
|---|---|
| [modules/vpc/](./modules/vpc/) | 完整的 VPC — subnets, route tables, NAT, NACLs, security groups |
| [modules/ecs-task/fargate/](./modules/ecs-task/fargate/) | ECS Fargate task — ECR, task definition, IAM, autoscaling |
| [modules/ecs-task/fargate-cm/](./modules/ecs-task/fargate-cm/) | 带有 Cloud Map 服务发现的 ECS Fargate task |
| [modules/ecs-task/ec2/](./modules/ecs-task/ec2/) | ECS EC2 task — ECR, task definition, load balancer, IAM |
| [modules/codepipeline/](./modules/codepipeline/) | CodePipeline + CodeBuild 流水线 |
| [modules/ecs-cicd-ghapps/](./modules/ecs-cicd-ghapps/) | 使用 GitHub Apps 源连接的 ECS CI/CD 流水线 |
| [modules/eks/](./modules/eks/) | EKS 集群模块 |
## 已归档
作为上述项目构建块的基础性和支撑性项目。
→ [archived/](./archived/)
标签:AWS, DPI, ECS, ECS, EKS, Terraform, Terraform, 漏洞利用检测, 自定义请求头, 请求拦截, 逆向工具