Skip to content

Conversation

@Chen188
Copy link
Owner

@Chen188 Chen188 commented Dec 16, 2025

概述

本 PR 实现了完整的模块化 Terraform 配置,用于将 TEN-Agent 项目部署到 AWS ECS Fargate,并集成 AWS Secrets Manager 管理所有敏感信息。

已实现的需求

1. Docker Compose 分析

  • ✅ 完成对 docker-compose.yml 文件的全面分析
  • ✅ 识别所有服务:astra_agents_dev、astra_playground_dev、nova_sonic_server、astra_graph_designer
  • ✅ 提取所有容器镜像(包括 ghcr.io 镜像)
  • ✅ 映射所有端口配置:8080、3000、8050、3001
  • ✅ 识别所有环境变量和密钥需求

2. Terraform 配置实现

本 PR 在 terraform/ 目录下创建了模块化的 Terraform 配置文件:

核心配置文件

  • main.tf - 主配置文件,定义 AWS provider、区域和共享标签
  • variables.tf - 所有变量定义,支持环境切换和自定义配置
  • ecs.tf - ECS 集群、任务定义、服务配置(使用 Fargate 启动模式)
  • secrets.tf - AWS Secrets Manager 配置,管理所有敏感信息
  • networking.tf - VPC、子网、安全组、负载均衡器配置
  • outputs.tf - 输出关键资源信息(ALB DNS、ECS 集群名称等)

环境配置文件

  • terraform.tfvars.example - 变量配置示例
  • dev.tfvars - 开发环境配置
  • prod.tfvars - 生产环境配置

辅助文件

  • deploy.sh - 自动化部署脚本
  • .gitignore - Terraform 项目的 Git 忽略规则

3. AWS Secrets Manager 集成

✅ 将以下敏感信息配置到 AWS Secrets Manager:

  • AGORA_APP_ID
  • AGORA_APP_CERTIFICATE
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AZURE_STT_KEY
  • AZURE_STT_REGION
  • AZURE_TTS_KEY
  • AZURE_TTS_REGION
  • OPENAI_API_KEY
  • QWEN_API_KEY
  • COSY_TTS_KEY
  • ELEVENLABS_TTS_KEY

所有密钥在 ECS 任务定义中通过 secrets 块引用,确保安全性。

4. ECS + Fargate 部署

✅ 所有四个服务均配置为 ECS Fargate 部署:

  • astra_agents_dev - 端口 8080
  • astra_playground_dev - 端口 3000
  • nova_sonic_server - 端口 8050
  • astra_graph_designer - 端口 3001

每个服务都有:

  • 独立的 ECS 任务定义
  • 独立的 ECS 服务
  • CloudWatch 日志组
  • 目标组和监听器规则(通过 ALB)

5. 网络架构

✅ 完整的 VPC 和网络配置:

  • 1 个 VPC(CIDR: 10.0.0.0/16)
  • 2 个公共子网(跨两个可用区)
  • 2 个私有子网(跨两个可用区)
  • Internet Gateway 和 NAT Gateway
  • 应用负载均衡器(ALB)
  • 安全组配置(支持服务间通信和外部访问)

6. 环境切换支持

✅ 支持通过变量文件轻松切换环境:

# 开发环境
terraform apply -var-file="dev.tfvars"

# 生产环境
terraform apply -var-file="prod.tfvars"

完整的文档

主要文档

  • README.md - 项目概述和快速开始指南
  • QUICK_START.md - 快速部署指南(3 步即可完成)
  • DEPLOYMENT_GUIDE.md - 完整的部署指南
  • ARCHITECTURE.md - 架构设计和组件说明
  • QUICK_REFERENCE.md - 常用命令快速参考
  • CHECKLIST.md - 部署前检查清单
  • INDEX.md - 文档索引
  • PROJECT_SUMMARY.md - 项目总结
  • VALIDATION_RESULTS.md - 配置验证结果

主要特性

🔒 安全性

  • 所有敏感信息存储在 AWS Secrets Manager
  • 私有子网中运行 ECS 任务
  • 安全组限制入站和出站流量
  • IAM 角色和策略遵循最小权限原则

🚀 可扩展性

  • Fargate 自动管理容器资源
  • 支持服务自动扩展(可配置)
  • 负载均衡器分发流量

🔧 可维护性

  • 模块化配置便于理解和修改
  • 完整的文档和注释
  • 环境变量化配置
  • 自动化部署脚本

🌐 高可用性

  • 多可用区部署
  • 负载均衡器健康检查
  • 容器自动重启

部署步骤

前置条件

  1. 安装 Terraform(>= 1.0)
  2. 配置 AWS CLI 凭证
  3. 确保 AWS 账户有足够权限

快速部署

cd terraform/
cp terraform.tfvars.example terraform.tfvars
# 编辑 terraform.tfvars 填入必要的值
terraform init
terraform plan -var-file="dev.tfvars"
terraform apply -var-file="dev.tfvars"

或使用自动化脚本:

cd terraform/
./deploy.sh dev apply

验证

Terraform 配置验证

所有 Terraform 配置文件已通过以下验证:

  • terraform fmt -check - 代码格式检查
  • terraform validate - 语法和配置验证
  • ✅ 引用完整性检查
  • ✅ 变量定义完整性检查

详细验证结果请查看:terraform/VALIDATION_RESULTS.md

Dockerfile 兼容性

配置基于 TEN-Agent/Dockerfile 进行验证,确保:

  • 容器镜像路径正确
  • 端口映射匹配
  • 环境变量完整

成本估算

基于 AWS 定价(美国东部-1 区域),开发环境预计每月成本:

  • ECS Fargate: ~$50-100
  • ALB: ~$20-30
  • NAT Gateway: ~$35-50
  • Secrets Manager: ~$2-5
  • CloudWatch Logs: ~$5-10

总计:约 $112-195/月(实际成本取决于流量和使用情况)

后续改进建议

  1. 自动扩展 - 添加基于 CPU/内存的自动扩展策略
  2. CI/CD 集成 - 与 GitHub Actions 或 AWS CodePipeline 集成
  3. 监控告警 - 配置 CloudWatch 告警和 SNS 通知
  4. 备份策略 - 实现数据备份和灾难恢复
  5. 蓝绿部署 - 实现零停机部署策略

相关文件

所有配置文件位于 terraform/ 目录:

  • 21 个文件
  • 5,681 行代码
  • 完整的文档和注释

测试说明

  1. 配置文件已通过 Terraform 验证
  2. 变量定义完整且有默认值
  3. 所有引用关系正确
  4. 建议在部署前先运行 terraform plan 查看将要创建的资源

注意:首次部署前,请务必:

  1. 阅读 QUICK_START.mdCHECKLIST.md
  2. 配置 terraform.tfvars 或使用 dev.tfvars/prod.tfvars
  3. 确保 AWS 凭证配置正确
  4. 确认 AWS 账户限制(如 VPC、EIP 等配额)

…WS Secrets Manager integration

Co-authored-by: Bin Chen <[email protected]>
Chen188

This comment was marked as resolved.

@Chen188 Chen188 added the kiro label Dec 17, 2025
@Chen188
Copy link
Owner Author

Chen188 commented Dec 17, 2025

移除与 astra_graph_designer 相关的配置,例如 docker, compose yaml,terraform 等

@ghostyappzeta
Copy link

ghostyappzeta bot commented Dec 17, 2025

Taking a look!


View task in app.kiro.dev
Learn more

@ghostyappzeta
Copy link

ghostyappzeta bot commented Dec 17, 2025

I'm removing all astra_graph_designer related configuration files from the TEN-Agent repository, including docker configurations, docker-compose yaml files, terraform files, and any other related configuration artifacts.

@ghostyappzeta
Copy link

ghostyappzeta bot commented Dec 17, 2025

I'm performing final verifications and then I'll raise this for review.

@ghostyappzeta
Copy link

ghostyappzeta bot commented Dec 17, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants