SalesFX/eks-sre-devops-platform

GitHub: SalesFX/eks-sre-devops-platform

基于 AWS EKS 的云原生 DevOps/SRE 实践平台,集成了 GitOps 交付、安全合规、可观测性与 AI 辅助运维能力。

Stars: 1 | Forks: 0

# AWS 上的云原生平台 ### Terraform、EKS、GitOps、DevSecOps、RDS IAM Auth、可观测性与事件响应 ## 概述 运行在 AWS 上的云原生平台,包含实际生产环境中的应用(Incident Tracker)。目标:展示企业环境中采用的实践。 - 使用 Terraform 在独立的层级中进行基础设施配置 - 使用 EKS 进行容器编排,包含 pod 安全性(non-root、只读文件系统) - 使用 GitHub Actions 进行 CI/CD,通过 OIDC 进行身份验证,无需静态凭证 - 使用 ArgoCD 进行 GitOps:pipeline 更新 git,ArgoCD 使集群状态收敛 - RDS PostgreSQL 通过 IRSA 进行 IAM 身份验证,任何地方均无静态密码 - 使用 VictoriaMetrics 和 Grafana 进行可观测性,使用 CloudWatch 进行数据库警报 - 模拟 4 个真实事件,包含完整的检测、解决和记录 MTTR 的生命周期 ## 技术栈 | 层级 | 技术 | |---|---| | 计算 | Amazon EKS 1.31(4 个 t3.small worker 节点,Amazon Linux 2023) | | 基础设施 | Terraform(5 个独立 stack,state 存放在 S3) | | CI/CD | GitHub Actions + OIDC(无静态凭证) | | GitOps | ArgoCD,启用 auto-sync 和 self-heal | | 后端 | Node.js 20 + Express + TypeScript + Prisma ORM | | 前端 | Next.js 14 + Tailwind CSS | | 数据库 | RDS PostgreSQL 16,通过 IRSA 进行 IAM 身份验证(无静态密码) | | 可观测性 | VictoriaMetrics + Grafana + CloudWatch 警报 + SNS | | 流水线安全 | Gitleaks、Checkov、Semgrep、Trivy(10 个扫描作业) | | 工作负载安全 | non-root、readOnlyRootFilesystem、drop ALL capabilities、IRSA | ## AI 辅助运维 本项目使用 Claude Code 开发,结合专门的 agent 和可复用的 skill,以加速并结构化平台工作。 **Agent** 具有明确定义的角色和严格的限制: - 解决方案架构师:规划、评估权衡并生成 ADR(绝不编写代码) - DevOps Engineer:根据获批的 ADR 实现 IaC - DevSecOps 工程师:在任何提交之前审查代码、Terraform 和流水线 - RDS 专家:负责数据库、IRSA、迁移和事件处理 runbook 用于平台运维的可复用 **Skill**: - 应用程序诊断与基础设施诊断(作用域分离) - 包含完整 SRE 周期的事件模拟 - 从零开始重建基础设施,并记录所有手动步骤 亮点不在于使用 AI 生成代码:而是建立了一个结构化的流程,其中每个 agent 都有唯一的职责、明确的交付物和显式的限制。 - [docs/agents/](docs/agents/README.md) - [docs/skills/](docs/skills/README.md) ## 架构 ``` flowchart TB subgraph CICD["CI/CD"] direction TB DEV["Desenvolvedor\npush clean-main"] GHA["GitHub Actions\nCI/CD + Security Scans"] KUST["kustomization.yaml\natualiza image tag sha-xxxxx\ncommit skip-ci no git"] DEV -->|"git push"| GHA GHA -->|"commit tag"| KUST end subgraph GITOPS["GitOps"] direction TB subgraph NS_ARGOCD["namespace: argocd"] ARGO["ArgoCD\nmonitora repositorio Git\nauto-sync + self-heal"] end KUST -->|"novo commit detectado"| ARGO end subgraph CLUSTER["EKS Cluster: devops-ia-production (4x t3.small)"] direction TB ECR["Amazon ECR\nrepositories: frontend / backend"] INGRESS["Ingress Resource\npath: / → Frontend\npath: /backend/* → Backend"] LBC["AWS Load Balancer Controller\ncria e gerencia o ALB"] ALB["Application Load Balancer"] INGRESS -->|"assistido por"| LBC LBC -->|"provisiona"| ALB subgraph APP["namespace: app"] direction TB FE["Frontend\n2 pods Next.js"] BE["Backend\n2 pods Node.js"] MIG["Migration Job\nprisma migrate deploy\nPreSync hook"] FE -->|"API calls /backend/*"| BE end subgraph MON["namespace: monitoring"] direction LR VM["VictoriaMetrics"] --> GF["Grafana"] end ECR -->|"image pull"| APP ALB -->|"/"| FE ALB -->|"/backend/*"| BE end subgraph DATA["Data"] RDS[("RDS PostgreSQL 16\nprivate subnet")] end subgraph ALERTS["Alerting"] direction TB CW["CloudWatch\nRDS Alarms"] --> SNS["SNS"] --> EMAIL["Email"] end GHA -->|"docker push"| ECR ARGO -->|"sync desired state"| APP MIG -->|"migrate deploy"| RDS BE -->|"IAM token IRSA"| RDS RDS -.->|"connections, storage, memory"| CW APP -.->|"Prometheus metrics"| VM ``` ## 应用程序 **Incident Tracker** 是一个真实的事件管理系统,包含 JWT 身份验证、仪表板和历史记录功能。 ![登录](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9420c87fbf003342.png) ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4e4d99d5ef003347.png) ![创建事件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/addb2918b1003353.png) ## 基础设施 ![EKS 节点](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/cc039f60a9003358.png) ![ArgoCD 同步](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/633453fdec003404.png) ![ArgoCD 资源树](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/08e29691b1003410.png) ## 可观测性 ![Grafana 节点](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1bfc8b2818003416.png) ![Grafana Pods](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b8c1b59211003421.png) ## 流水线 ![CI/CD](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2f5ba2cc25003426.png) ![安全扫描](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/360b3a0f12003431.png) ## CloudWatch 与警报 ![CloudWatch 与 SNS 邮件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a3a7d1fc28003436.png) ## 生产环境中的事件响应 在真实环境中模拟的 4 个事件,包含完整的 SRE 周期:通过 Grafana 中的警报进行检测、使用 runbook 进行解决,并记录了 MTTR。 | 事件 | 类型 | 严重性 | 影响 | MTTR | |---|---|---|---|---| | INC-004 | 无效镜像 | 警告 | 零停机,maxUnavailable:0 保护了服务 | 6 分钟 | | INC-003 | Secret 缺失 | 警告 | 零停机,旧 pod 继续提供服务 | 5 分钟 | | INC-002 | OOMKilled(容器内存不足) | 严重 | pod 处于 CrashLoop 状态,对生产环境无影响 | 4 分钟 | | INC-001 | RDS 不可用(rds_iam 被撤销) | 严重 | 全部返回 503,readinessProbe 阻止了 ALB 流量 | 4 分钟 | **INC-004(警告)** ![INC-004](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a387f1cf2d003441.png) **INC-002(严重)** ![INC-002](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/62e928a918003446.png) **INC-001(严重)** ![INC-001](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3f926035f8003451.png) 要重现这些在 Grafana 中产生真实警报的事件,请参阅 [docs/incidents/](docs/incidents/)。 ## 快速访问 ``` # Grafana (Platform Alerts dashboard 和主页) kubectl port-forward svc/vm-grafana -n monitoring 3000:80 # http://localhost:3000 # ArgoCD kubectl port-forward svc/argocd-server -n argocd 8080:443 # https://localhost:8080 # ALB endpoint kubectl get ingress devops-ia -n app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}' ``` ## 文档 | 文档 | 内容 | |---|---| | [docs/setup/](docs/setup/README.md) | 从零开始重建环境的详细步骤 | | [docs/architecture/](docs/architecture/overview.md) | Terraform stack、IRSA、流水线、安全性、ADR | | [docs/incidents/](docs/incidents/) | 模拟的事件,包含时间线和真实的 MTTR | | [docs/runbooks/](docs/runbooks/) | 针对已知故障的运维 runbook | | [docs/agents/](docs/agents/README.md) | 专门的 agent 及其职责 | | [docs/skills/](docs/skills/README.md) | 运维 skill 及使用图谱 | ## 路线图 - Loki + Grafana Alloy:pod 日志聚合 - Tempo:使用 OpenTelemetry 进行分布式追踪 - Alertmanager:Kubernetes 警报路由 - External Secrets Operator:与 AWS Secrets Manager 集成
标签:API集成, DevSecOps, ECS, GitOps, Kubernetes/EKS, LLM代码助手, MITM代理, Terraform, 上游代理, 云原生架构, 可观测性, 测试用例