基于 AWS EKS、Terraform、Karpenter 与 ArgoCD 构建的现代化、低成本、高弹性且极致安全的云原生 AI 应用交付平台。
本项目旨在模拟并解决真实生产环境中 AI 推理服务(如大模型网关、向量检索等)的云原生部署痛点。通过基础设施即代码 (IaC) 和 GitOps 声明式交付,实现了从底层 VPC 网络、EKS 控制平面,到上层应用弹性扩缩容、动态密钥托管及全链路可观测性的自动化闭环。
-
秒级弹性与真正的混合容量 (Karpenter + Soft Affinity)
-
抛弃传统的 Cluster Autoscaler (CA) 与 ASG。引入新一代智能节点自动配置器 Karpenter,绕过 ASG 直接调用 EC2 Fleet API,实现 JIT (Just-in-Time) 秒级响应。
-
柔性降级兜底 (Graceful Degradation):彻底摒弃僵硬的
nodeSelector强约束。在上层应用采用 Kubernetes 软亲和性 (preferredDuringSchedulingWeight: 100) 极力要求 Spot 实例;底层 Karpenter NodePool 同时开放 Spot 与 On-Demand 权限。 -
实战效果:常态下 100% 优先购买打 3 折的 Spot 机器;遇到 AWS 竞价资源售罄的黑天鹅事件时,调度器瞬间“妥协”,Karpenter 自动秒级回退购买 On-Demand 按需实例,实现极致降本与业务 0 宕机 SLA 的完美平衡。
-
-
解决 GitOps 状态冲突难题 (ArgoCD vs HPA)
-
安全与一致性的降维打击:彻底摒弃 CI 脚本直连集群的传统 Push 模式,采用 ArgoCD 的 Pull 模式。
维度 Push 模式 (传统 CI 直连) Pull 模式 (ArgoCD GitOps) 🔐 安全模型 API 暴露、凭证外传 (High Risk) 零信任集群、配置主动拉取 🔄 状态一致 存在配置漂移 (Config Drift) 持续调和、自动纠偏并自愈 📋 审计追溯 日志碎片化、不可追溯 Git 驱动、变更历史清晰透明 🚑 灾难恢复 依赖复杂流水线、恢复速度慢 秒级回滚、一键 git revert -
降维打击 (Sync Fight 终结者):巧妙利用 Kubernetes 的三向合并 (3-Way Merge) 机制,在 Helm 模板中动态剔除
replicas字段声明。彻底终结了“HPA 动态扩容”与“ArgoCD 防篡改强制回滚”之间的无限死循环,实现了静态配置与动态伸缩职责的绝对分离。
-
-
现代网关与流量治理 (Gateway API + AWS ALB)
-
全面拥抱现代化的 Kubernetes Gateway API。
-
采用面向角色的架构设计:平台团队管理统一的
Gateway(自动生成 AWS ALB),业务线研发只负责HTTPRoute定义各自的路径规则,实现配置解耦与精准切流。配置target-type: ip实现 ALB 流量直通 Pod,网络延迟极小化。
-
-
绝对零接触安全 (External Secrets Operator)
-
引入 External Secrets Operator (ESO) 配合 AWS Secrets Manager。
-
采用
dataFrom全量映射魔法,研发人员只需在代码中读取环境变量,Git 仓库中仅保留安全凭证的“拉取声明”。真实密码由 ESO 在集群内部基于 IRSA 权限动态拉取,彻底消除配置泄露风险,并解放了改 YAML 加密文的繁琐双手。
-
-
Python/AI 专属工作负载治理 (Workload Optimization)
-
防内存泄漏护城河:针对 Python 服务的 GC 特性,应用层采用 Gunicorn
--max-requests=1000与--max-requests-jitter=50策略,实现进程级的优雅自愈,彻底杜绝隐性内存碎片导致节点雪崩。 -
纯净弹性策略:HPA 剔除滞后的 Memory 指标,采用纯 CPU 驱动,配合严格的
resources.limits(OOMKilled 红线),构建稳如磐石的防线。
-
-
全链路可观测性 (Prometheus + Grafana)
-
业务代码无侵入集成
prometheus-fastapi-instrumentator,对外暴露标准/metrics。 -
通过 Kube-Prometheus-Stack 配合
ServiceMonitor实现指标自动发现。为请求延迟 (P99)、QPS、系统吞吐量等核心业务指标提供“上帝视角”。
-
为将此项目从“高标准演示环境”推向“千万级请求生产环境”,后续架构演进计划如下:
-
流量金丝雀发布 (Canary Deployments)
- 结合 Argo Rollouts 或 Gateway API 的权重切分能力,实现 AI 模型的灰度发布(如:让 5% 的流量先进入 v2 版本的推理模型,验证通过后再全量放开)。
-
微服务链路追踪 (Distributed Tracing)
- 引入 OpenTelemetry 与 Jaeger。将单个请求在 API Gateway -> 鉴权中心 ->大模型网关 -> 向量数据库的耗时以瀑布流形式展现,做到线上性能瓶颈“秒级定位”。
-
云原生 FinOps 成本治理 (Cost Allocation)
- 在集群内挂载 OpenCost 或 Kubecost 组件。将 AWS 的底层账单精准切割、分摊到每一个 Namespace、Deployment 甚至具体的 AI 推理任务上。让开发团队对每一次代码发布带来的“算力开销波动”一目了然。
ai-platform-project/
├── infra/ # 1. 核心底座 (Terraform IaC)
│ ├── vpc.tf & eks.tf # 网络与集群控制平面
│ ├── karpenter.tf # 弹性计算引擎
│ ├── alb-controller.tf # AWS 负载均衡控制器 (Gateway API 支持)
│ ├── secrets.tf # AWS 密钥金库 (Secrets Manager)
│ └── monitoring.tf # Prometheus 监控大盘基础设施
├── k8s-setup/ # 2. 平台级基础设施
│ ├── karpenter-nodepool.yaml # 包含 Spot 与 On-Demand 的混合节点池
│ ├── platform-gateway.yaml # 全局共享网关 (ALB)
│ └── argocd-app.yaml # GitOps 同步规则
├── app/ # 3. AI 业务代码层
│ ├── main.py # FastAPI 模拟推理接口 (含监控埋点)
│ ├── requirements.txt
│ └── Dockerfile # 多阶段构建与非 root 安全规范
└── helm-charts/ai-app/ # 4. 业务编排层
├── Chart.yaml
├── values.yaml # 全局配置面板 (HPA, ESO, 柔性亲和性调度)
└── templates/
├── deployment.yaml & service.yaml # 完美解决 ArgoCD 冲突与多路 envFrom 注入
├── hpa.yaml # 水平弹性伸缩策略
├── httproute.yaml # Gateway API 业务路由
├── external-secret.yaml # 基于 dataFrom 的全量动态密钥拉取管道
└── servicemonitor.yaml # 监控指标抓取规则
-
安装并配置好 AWS CLI (
aws configure),确保拥有 AdministratorAccess 权限。 -
安装 Terraform (>= 1.5.0),
kubectl与helm。
此步骤将创建 VPC、EKS 集群、OIDC 绑定、AWS Secrets Manager,并安装 Karpenter、ALBC、ESO 及 Prometheus。
cd infra
terraform init
terraform apply -auto-approve配置本地 Kubernetes 访问权限:
aws eks update-kubeconfig --region us-east-1 --name ai-platform-cluster部署 Karpenter 节点池规则、平台统一网关,并启动 ArgoCD 引擎:
# 修改 k8s-setup 对应文件中的 IAM Role ARN 与 Git 仓库地址后执行
kubectl apply -f ../k8s-setup/karpenter-nodepool.yaml
kubectl apply -f ../k8s-setup/platform-gateway.yaml
kubectl apply -f ../k8s-setup/argocd-app.yaml将所有业务代码与 Helm Chart 提交至 Git 仓库,ArgoCD 将自动拉取并部署。
验证全链路压测与弹性: 详细步骤请参阅本项目附带的 ⚔️ 全链路压测与大考实战指南 (STRESS_TEST.md)。通过压力测试,将亲眼见证应用层 HPA 扩容与底层 Karpenter 混合调度(Spot 优先与按需兜底)的自动化闭环。
实验结束后,务必销毁资源以避免产生不必要的云账单(特别是 NAT Gateway, ALB 和 EKS Control Plane)。
# 1. 删掉由 GitOps 和控制器拉起的云端资源 (如 ALB 负载均衡器)
kubectl delete application ai-workload -n argocd
kubectl delete gateway ai-platform-gateway -n production
kubectl delete nodepool default
kubectl delete ec2nodeclass default
# 2. 彻底销毁 AWS 底层基础设施
cd infra
terraform destroy -auto-approveBuilt with ❤️ by a DevOps & Platform Engineering Enthusiast.