Skip to content

About

基于 AWS EKS、Terraform、Karpenter 与 ArgoCD 构建的现代化、低成本、高弹性且极致安全的云原生 AI 应用交付平台。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

🚀 AI-Ready Platform Engineering (企业级 AI 平台工程落地实践)

基于 AWS EKS、Terraform、Karpenter 与 ArgoCD 构建的现代化、低成本、高弹性且极致安全的云原生 AI 应用交付平台。

📖 项目简介

本项目旨在模拟并解决真实生产环境中 AI 推理服务(如大模型网关、向量检索等)的云原生部署痛点。通过基础设施即代码 (IaC) 和 GitOps 声明式交付,实现了从底层 VPC 网络、EKS 控制平面,到上层应用弹性扩缩容、动态密钥托管及全链路可观测性的自动化闭环。

✨ 核心架构亮点 (Architecture Highlights)

  1. 秒级弹性与真正的混合容量 (Karpenter + Soft Affinity)

    • 抛弃传统的 Cluster Autoscaler (CA) 与 ASG。引入新一代智能节点自动配置器 Karpenter,绕过 ASG 直接调用 EC2 Fleet API,实现 JIT (Just-in-Time) 秒级响应。

    • 柔性降级兜底 (Graceful Degradation):彻底摒弃僵硬的 nodeSelector 强约束。在上层应用采用 Kubernetes 软亲和性 (preferredDuringScheduling Weight: 100) 极力要求 Spot 实例;底层 Karpenter NodePool 同时开放 Spot 与 On-Demand 权限。

    • 实战效果:常态下 100% 优先购买打 3 折的 Spot 机器;遇到 AWS 竞价资源售罄的黑天鹅事件时,调度器瞬间“妥协”,Karpenter 自动秒级回退购买 On-Demand 按需实例,实现极致降本与业务 0 宕机 SLA 的完美平衡。

  2. 解决 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 防篡改强制回滚”之间的无限死循环,实现了静态配置与动态伸缩职责的绝对分离。

  3. 现代网关与流量治理 (Gateway API + AWS ALB)

    • 全面拥抱现代化的 Kubernetes Gateway API。

    • 采用面向角色的架构设计:平台团队管理统一的 Gateway (自动生成 AWS ALB),业务线研发只负责 HTTPRoute 定义各自的路径规则,实现配置解耦与精准切流。配置 target-type: ip 实现 ALB 流量直通 Pod,网络延迟极小化。

  4. 绝对零接触安全 (External Secrets Operator)

    • 引入 External Secrets Operator (ESO) 配合 AWS Secrets Manager。

    • 采用 dataFrom 全量映射魔法,研发人员只需在代码中读取环境变量,Git 仓库中仅保留安全凭证的“拉取声明”。真实密码由 ESO 在集群内部基于 IRSA 权限动态拉取,彻底消除配置泄露风险,并解放了改 YAML 加密文的繁琐双手。

  5. Python/AI 专属工作负载治理 (Workload Optimization)

    • 防内存泄漏护城河:针对 Python 服务的 GC 特性,应用层采用 Gunicorn --max-requests=1000 与 --max-requests-jitter=50 策略,实现进程级的优雅自愈,彻底杜绝隐性内存碎片导致节点雪崩。

    • 纯净弹性策略:HPA 剔除滞后的 Memory 指标,采用纯 CPU 驱动,配合严格的 resources.limits (OOMKilled 红线),构建稳如磐石的防线。

  6. 全链路可观测性 (Prometheus + Grafana)

    • 业务代码无侵入集成 prometheus-fastapi-instrumentator,对外暴露标准 /metrics。

    • 通过 Kube-Prometheus-Stack 配合 ServiceMonitor 实现指标自动发现。为请求延迟 (P99)、QPS、系统吞吐量等核心业务指标提供“上帝视角”。

🔮 生产环境进阶演进路线 (Future Enhancements)

为将此项目从“高标准演示环境”推向“千万级请求生产环境”,后续架构演进计划如下:

  1. 流量金丝雀发布 (Canary Deployments)

    • 结合 Argo Rollouts 或 Gateway API 的权重切分能力,实现 AI 模型的灰度发布(如:让 5% 的流量先进入 v2 版本的推理模型,验证通过后再全量放开)。
  2. 微服务链路追踪 (Distributed Tracing)

    • 引入 OpenTelemetry 与 Jaeger。将单个请求在 API Gateway -> 鉴权中心 ->大模型网关 -> 向量数据库的耗时以瀑布流形式展现,做到线上性能瓶颈“秒级定位”。
  3. 云原生 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         # 监控指标抓取规则

🛠️ 快速部署与验证 (Quick Start & Validation)

准备工作 (Prerequisites)

  • 安装并配置好 AWS CLI (aws configure),确保拥有 AdministratorAccess 权限。

  • 安装 Terraform (>= 1.5.0), kubectl 与 helm。

Step 1: 部署云基础设施 (Terraform)

此步骤将创建 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

Step 2: 激活平台层组件 (K8s Setup)

部署 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

Step 3: GitOps 自动化发布与验证

将所有业务代码与 Helm Chart 提交至 Git 仓库,ArgoCD 将自动拉取并部署。

验证全链路压测与弹性: 详细步骤请参阅本项目附带的 ⚔️ 全链路压测与大考实战指南 (STRESS_TEST.md)。通过压力测试,将亲眼见证应用层 HPA 扩容与底层 Karpenter 混合调度(Spot 优先与按需兜底)的自动化闭环。

🧹 资源销毁 (Teardown)

实验结束后,务必销毁资源以避免产生不必要的云账单(特别是 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-approve

Built with ❤️ by a DevOps & Platform Engineering Enthusiast.

About

基于 AWS EKS、Terraform、Karpenter 与 ArgoCD 构建的现代化、低成本、高弹性且极致安全的云原生 AI 应用交付平台。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages