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 进行现代化改造 ![ECS 架构](./images/ecs-cloudmap.drawio.svg "ECS Cluster Architecture") ![CI/CD 架构](./images/cicd-ecs-blue-green.drawio.svg "CI/CD Pipeline") 使用 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 ![集中式 VPC Endpoints](./images/centralized-vpce.drawio.svg "Centralized 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 ![集中式 Egress](./images/centralized-egress.drawio.svg "Centralized Egress Architecture") 通过 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 进行现代化改造 ![EKS 架构](./images/eks-architecture.drawio.svg "EKS Architecture") 构建为 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, 漏洞利用检测, 自定义请求头, 请求拦截, 逆向工具