Files
zhanggangyong 4b09912806 feat: 添加动态 Agent 生成器和 CI/CD 集成
主要更新:
- 新增 agent_code_generator.py: AI 驱动的 Pydantic Agent 代码生成
- 新增 gitee_manager.py: Gitee API 集成(仓库创建、文件推送、Secrets 配置)
- 新增 tool_generator_api.py: 动态 Agent 生成 API 端点
- 新增 template_manager.py: 数据库驱动的模板管理
- 新增 docs/DYNAMIC_AGENT_GENERATOR_API.md: 完整 API 文档

功能特性:
- 支持通过 API 定义工具并自动生成 Agent 代码
- 自动创建 Gitee 仓库并推送代码
- CI/CD 自动构建 ARM64 Docker 镜像并推送到 ACR
- 自动部署到 AKS 并创建 DNS A 记录
- 支持参数化工具函数生成

配置集成:
- LiteLLM Gateway 用于 AI 代码生成
- Gitea Actions 用于 CI/CD 流水线
- Azure DNS 用于域名绑定
- ACR/AKS 用于容器化部署

文件整理:
- 脚本文件移动到 scripts/ 目录
- 文档文件移动到 docs/ 目录
2026-01-27 13:17:35 +00:00

168 lines
8.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
cat << 'EOF'
╔══════════════════════════════════════════════════════════════════╗
║ Agent Manager - Kubernetes 部署快速开始 ║
╚══════════════════════════════════════════════════════════════════╝
📦 已创建的文件列表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
核心部署文件:
✓ Dockerfile.arm64 - ARM64 架构 Docker 镜像
✓ deploy-to-k8s-arm64.sh - 完整部署脚本(构建+部署)
✓ quick-deploy-k8s.sh - 快速部署脚本(仅部署)
✓ undeploy-k8s.sh - 卸载脚本
✓ K8S_DEPLOYMENT_GUIDE.sh - 部署指南
Kubernetes 配置文件 (k8s/):
✓ agent-manager-namespace.yaml - 命名空间定义
✓ agent-manager-configmap.yaml - 配置信息
✓ agent-manager-secret.yaml - 敏感凭据
✓ agent-manager-deployment.yaml - 部署定义(2副本,ARM64)
✓ agent-manager-service.yaml - LoadBalancer 服务
✓ agent-manager-rbac.yaml - 集群权限
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 三步快速部署
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
步骤 1: 配置 Azure 凭据(必需)
────────────────────────────────────────────────────────────
export AZURE_TENANT_ID="your-tenant-id"
export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"
export AZURE_SUBSCRIPTION_ID="your-subscription-id"
export AZURE_RESOURCE_GROUP="your-resource-group"
步骤 2: 配置 ACR 凭据(如果使用私有镜像仓库)
────────────────────────────────────────────────────────────
# 方式 1: 手动设置
export ACR_USERNAME="your-acr-username"
export ACR_PASSWORD="your-acr-password"
# 方式 2: 从 Azure CLI 自动获取
export ACR_USERNAME=$(az acr credential show --name agnettaiji --query username -o tsv)
export ACR_PASSWORD=$(az acr credential show --name agnettaiji --query passwords[0].value -o tsv)
步骤 3: 执行部署
────────────────────────────────────────────────────────────
# 完整部署(构建 ARM64 镜像 + 部署到 K8s)
./deploy-to-k8s-arm64.sh
# 或者,如果镜像已存在,仅部署
./quick-deploy-k8s.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 部署后验证
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 查看 Pods 状态:
kubectl get pods -n agent-manager -w
2. 获取外网访问地址:
EXTERNAL_IP=$(kubectl get svc agent-manager -n agent-manager \
-o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "Agent Manager URL: http://$EXTERNAL_IP"
3. 测试 API:
curl http://$EXTERNAL_IP/
curl http://$EXTERNAL_IP/agents
4. 查看日志:
kubectl logs -n agent-manager -l app=agent-manager --tail=100 -f
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔧 常见问题排查
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
问题: Pod 处于 Pending 状态
解决: 检查是否有 ARM64 节点
kubectl get nodes -o wide
kubectl describe pod -n agent-manager <pod-name>
问题: ImagePullBackOff
解决: 检查 ACR 凭据
kubectl get secret acr-secret -n agent-manager -o yaml
kubectl describe pod -n agent-manager <pod-name>
问题: CrashLoopBackOff
解决: 查看日志找出错误原因
kubectl logs -n agent-manager <pod-name>
kubectl describe pod -n agent-manager <pod-name>
问题: LoadBalancer IP 长时间未分配
解决: 检查云平台 LoadBalancer 支持
kubectl describe svc agent-manager -n agent-manager
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 架构说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部署架构:
┌─────────────────────────────────────────────┐
│ LoadBalancer Service │
│ (外网 IP: xxx.xxx.xxx.xxx) │
└─────────────────┬───────────────────────────┘
│ Port 80
┌─────────────────┴───────────────────────────┐
│ Agent Manager Deployment │
│ (2 Replicas) │
├─────────────────────────────────────────────┤
│ Pod 1 (ARM64) │ Pod 2 (ARM64) │
│ - FastAPI │ - FastAPI │
│ - K8s Client │ - K8s Client │
│ - PostgreSQL │ - PostgreSQL │
│ - Azure SDK │ - Azure SDK │
└─────────────────────────────────────────────┘
│
┌─────────────────┴───────────────────────────┐
│ PostgreSQL (Azure Database) │
│ taijipda.postgres.database.azure.com │
└─────────────────────────────────────────────┘
关键特性:
✓ ARM64 架构支持(优化性能和成本)
✓ 双副本高可用部署
✓ LoadBalancer 自动外网访问
✓ 集群级别权限(管理其他 Agents)
✓ ConfigMap/Secret 配置管理
✓ 健康检查和自动重启
✓ 资源限制(CPU: 200m-500m, Memory: 256Mi-512Mi)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 相关文档
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
查看完整部署指南:
./K8S_DEPLOYMENT_GUIDE.sh
查看 API 文档:
cat API_DOCUMENTATION.md
查看 PostgreSQL 配置:
cat POSTGRESQL_MIGRATION.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 提示
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 首次部署建议使用完整部署脚本 ./deploy-to-k8s-arm64.sh
2. 确保 Kubernetes 集群有 ARM64 节点
3. 修改 k8s/agent-manager-configmap.yaml 设置数据库连接
4. 修改 k8s/agent-manager-secret.yaml 设置 Azure 凭据
5. 部署完成后记录外网 IP 地址
╚══════════════════════════════════════════════════════════════════╝
EOF