主要更新: - 新增 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/ 目录
168 lines
8.7 KiB
Bash
Executable File
168 lines
8.7 KiB
Bash
Executable File
#!/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
|