#!/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 问题: ImagePullBackOff 解决: 检查 ACR 凭据 kubectl get secret acr-secret -n agent-manager -o yaml kubectl describe pod -n agent-manager 问题: CrashLoopBackOff 解决: 查看日志找出错误原因 kubectl logs -n agent-manager kubectl describe pod -n agent-manager 问题: 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