- Published on
AI companion CI/CD
- Authors
- Name
- Shelton Ma
1. AWS 组件
- EKS(Elastic Kubernetes Service) 托管 Kubernetes 集群
- EC2(Worker Nodes) 运行容器实例
- ECR(Elastic Container Registry) 存储 Docker 镜像
- ALB(Application Load Balancer) 负载均衡流量
- RDS / DynamoDB 存储对话记录
- S3 存储音频文件
2. 代码结构
aws-k8s-deploy/
│── infra/ # 基础设施代码(Terraform)
│ ├── eks.tf # EKS 集群定义
│ ├── node_group.tf # GPU/CPU 节点池配置
│ ├── vpc.tf # VPC & 安全组
│ ├── outputs.tf # Terraform 输出
│ └── variables.tf # 配置变量
│
│── helm/ # Helm Charts
│ ├── tts/ # TTS 服务 Chart
│ ├── asr/ # ASR 服务 Chart
│ ├── llm/ # LLM 服务 Chart
│ └── ingress/ # 负载均衡 Chart
│
│── gateway/ # API 网关(Express)
│ ├── src/
│ ├── server.ts # 启动文件
│ ├── auth.ts # 用户身份验证(JWT)
│ ├── kafka-producer.ts # Kafka 生产者,推送任务
│ ├── routes.ts # API 路由
│ ├── config.ts # 配置文件
│ ├── Dockerfile
│ ├── package.json
│
│── services/
│ ├──asr-service/ # 语音识别服务
│ ├── src/
│ ├── Dockerfile
│ ├── config.yaml
│ ├── package.json
│ ├── tts-service/ # 语音合成服务
│ ├── llm-service/ # LLM 服务
│ └── common/ # 共享模块
│
│── deployments/ # K8s 资源配置
│ ├── tts-deployment.yaml # TTS 部署
│ ├── asr-deployment.yaml # ASR 部署
│ ├── llm-deployment.yaml # LLM 部署
│ ├── ingress.yaml # 入口配置
│ ├── keda-scalers.yaml # KEDA 扩容策略
│ └── hpa.yaml # HPA 配置
│
│── monitoring/ # 监控配置
│ ├── prometheus.yaml # Prometheus 监控
│ ├── grafana-dashboards/ # Grafana 面板
│
│── ci-cd/ # 持续集成 & 交付
│ ├── github-actions/ # GitHub Actions Pipeline
│ ├── argo-cd/ # ArgoCD 配置
│
│── .env # 环境变量
│── README.md # 项目说明
3. 部署
1. Terraform
cd infra
terraform init
terraform apply -auto-approve
2. 配置 Kubernetes 资源
TTS/ASR/LLM 部署示例
Ingress 负载均衡
部署
kubectl apply -f deployments/
3. 使用 ArgoCD 进行 GitOps 部署
安装 ArgoCD
kubectl create namespace argocd helm install argocd argo/argo-cd --namespace argocd
创建应用
argocd app create ml-inference \ --repo <https://github.com/my-org/ml-deploy.git> \ --path helm/ \ --dest-server <https://kubernetes.default.svc> \ --dest-namespace default
4. 使用 KEDA 进行自动扩容
基于请求数扩展 ASR 服务
应用 KEDA 规则
kubectl apply -f deployments/keda-scalers.yaml
5. dockerfile
6. helm
helm install gateway helm/gateway
4. 运行 & 维护
# 服务管理
kubectl get pods
kubectl logs -f asr-service
# 查看负载均衡
kubectl get ingress
# 查看 ArgoCD 部署
argocd app list