主要更新: - 新增 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/ 目录
167 lines
7.5 KiB
Bash
Executable File
167 lines
7.5 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
##############################################################################
|
||
# Agent Manager Kubernetes 部署指南
|
||
##############################################################################
|
||
|
||
cat << 'EOF'
|
||
╔════════════════════════════════════════════════════════════════╗
|
||
║ Agent Manager - Kubernetes 部署指南 (ARM64) ║
|
||
╔════════════════════════════════════════════════════════════════╝
|
||
|
||
📋 部署前准备
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. 确保已安装必要工具:
|
||
✓ Docker (支持 buildx)
|
||
✓ kubectl
|
||
✓ Azure CLI (az)
|
||
|
||
2. 配置 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"
|
||
|
||
3. 配置 ACR 凭据 (如果使用私有镜像):
|
||
export ACR_USERNAME="your-acr-username"
|
||
export ACR_PASSWORD="your-acr-password"
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🚀 部署方式
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
方式 1: 完整部署(构建 + 部署)
|
||
./deploy-to-k8s-arm64.sh
|
||
|
||
方式 2: 快速部署(仅部署,使用已有镜像)
|
||
./quick-deploy-k8s.sh
|
||
|
||
方式 3: 跳过镜像构建
|
||
./deploy-to-k8s-arm64.sh --skip-build
|
||
|
||
方式 4: 仅构建镜像
|
||
./deploy-to-k8s-arm64.sh --skip-deploy
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
📝 配置说明
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. ConfigMap (k8s/agent-manager-configmap.yaml):
|
||
- DATABASE_URL: PostgreSQL 连接字符串
|
||
- NAMESPACE: 默认命名空间
|
||
- AZURE_DNS_ZONE: DNS 域名
|
||
|
||
2. Secret (k8s/agent-manager-secret.yaml):
|
||
- AZURE_TENANT_ID: Azure 租户 ID
|
||
- AZURE_CLIENT_ID: Azure 客户端 ID
|
||
- AZURE_CLIENT_SECRET: Azure 客户端密钥
|
||
|
||
3. Deployment (k8s/agent-manager-deployment.yaml):
|
||
- replicas: 副本数量(默认 2)
|
||
- resources: 资源限制
|
||
- nodeSelector: ARM64 节点选择器
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🔍 验证部署
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. 查看 Pods 状态:
|
||
kubectl get pods -n agent-manager
|
||
|
||
2. 查看服务:
|
||
kubectl get svc -n agent-manager
|
||
|
||
3. 获取外网 IP:
|
||
kubectl get svc agent-manager -n agent-manager \
|
||
-o jsonpath='{.status.loadBalancer.ingress[0].ip}'
|
||
|
||
4. 查看日志:
|
||
kubectl logs -n agent-manager -l app=agent-manager --tail=100
|
||
|
||
5. 测试访问:
|
||
EXTERNAL_IP=$(kubectl get svc agent-manager -n agent-manager \
|
||
-o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||
curl http://$EXTERNAL_IP/
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🔧 常用管理命令
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
# 扩容/缩容
|
||
kubectl scale deployment agent-manager -n agent-manager --replicas=3
|
||
|
||
# 重启 Pod
|
||
kubectl rollout restart deployment agent-manager -n agent-manager
|
||
|
||
# 查看部署状态
|
||
kubectl rollout status deployment agent-manager -n agent-manager
|
||
|
||
# 查看详细信息
|
||
kubectl describe deployment agent-manager -n agent-manager
|
||
|
||
# 进入容器
|
||
kubectl exec -it -n agent-manager \
|
||
$(kubectl get pod -n agent-manager -l app=agent-manager -o jsonpath='{.items[0].metadata.name}') \
|
||
-- /bin/bash
|
||
|
||
# 更新镜像
|
||
kubectl set image deployment/agent-manager \
|
||
agent-manager=agnettaiji.azurecr.io/agent-manager:new-tag \
|
||
-n agent-manager
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🗑️ 卸载
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
完全卸载 Agent Manager:
|
||
./undeploy-k8s.sh
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
📂 目录结构
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
agent-manager/
|
||
├── Dockerfile.arm64 # ARM64 架构 Dockerfile
|
||
├── deploy-to-k8s-arm64.sh # 完整部署脚本
|
||
├── quick-deploy-k8s.sh # 快速部署脚本
|
||
├── undeploy-k8s.sh # 卸载脚本
|
||
└── k8s/
|
||
├── agent-manager-namespace.yaml # 命名空间
|
||
├── agent-manager-configmap.yaml # 配置
|
||
├── agent-manager-secret.yaml # 密钥
|
||
├── agent-manager-deployment.yaml # 部署
|
||
├── agent-manager-service.yaml # 服务
|
||
└── agent-manager-rbac.yaml # 权限
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
⚠️ 注意事项
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. ARM64 节点: 确保 K8s 集群有 ARM64 架构的节点
|
||
2. LoadBalancer: 需要云平台支持 LoadBalancer 类型的 Service
|
||
3. 数据库: PostgreSQL 需要可从 K8s 集群访问
|
||
4. 权限: Agent Manager 需要集群级别权限来管理其他 Pods
|
||
5. 镜像: 首次部署需要先构建并推送 ARM64 镜像到 ACR
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
📖 更多信息
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
- API 文档: API_DOCUMENTATION.md
|
||
- PostgreSQL 迁移: POSTGRESQL_MIGRATION.md
|
||
- 快速参考: QUICK_REFERENCE_PGSQL.md
|
||
|
||
╚════════════════════════════════════════════════════════════════╝
|
||
|
||
EOF
|