forked from xiaohei/taiji-AI-PAD
7.6 KiB
7.6 KiB
MCP Server - Azure AKS 部署指南
本文档说明如何将Taiji AI PAD的MCP Server部署到Azure Kubernetes Service (AKS)。
前置条件
架构概览
Internet
↓
Application Gateway (Ingress)
↓
AKS Cluster
├── MCP Server (Deployment, 3-10 replicas)
├── Redis Cache (Azure Cache for Redis)
└── PostgreSQL (Azure Database for PostgreSQL)
快速部署
1. 设置环境变量
export RESOURCE_GROUP="taiji-ai-rg"
export AKS_CLUSTER_NAME="taiji-aks-cluster"
export ACR_NAME="taijiregistry"
export LOCATION="southeastasia"
export SUBSCRIPTION_ID="your-subscription-id"
2. 登录Azure
az login
az account set --subscription $SUBSCRIPTION_ID
3. 创建AKS集群(如果还没有)
# 创建资源组
az group create --name $RESOURCE_GROUP --location $LOCATION
# 创建AKS集群
az aks create \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--node-count 3 \
--node-vm-size Standard_D4s_v3 \
--enable-cluster-autoscaler \
--min-count 3 \
--max-count 10 \
--network-plugin azure \
--enable-managed-identity \
--generate-ssh-keys
4. 配置数据库
Azure Database for PostgreSQL
# 创建PostgreSQL服务器
az postgres flexible-server create \
--resource-group $RESOURCE_GROUP \
--name taijipda \
--location $LOCATION \
--admin-user taiji \
--admin-password 'By@123456.' \
--sku-name Standard_D4s_v3 \
--tier GeneralPurpose \
--storage-size 128 \
--version 14
# 配置防火墙规则(允许Azure服务访问)
az postgres flexible-server firewall-rule create \
--resource-group $RESOURCE_GROUP \
--name taijipda \
--rule-name AllowAzureServices \
--start-ip-address 0.0.0.0 \
--end-ip-address 0.0.0.0
Azure Cache for Redis
# 创建Redis缓存
az redis create \
--resource-group $RESOURCE_GROUP \
--name taiji \
--location $LOCATION \
--sku Standard \
--vm-size c1 \
--enable-non-ssl-port false
5. 配置Secrets
编辑 k8s/secrets.yaml 文件,填入实际的连接字符串和密钥:
stringData:
database-url: "postgresql+asyncpg://taiji:By%40123456.@taijipda.postgres.database.azure.com:5432/postgres?sslmode=require"
redis-url: "rediss://:YOUR_REDIS_PASSWORD@taiji.southeastasia.redis.azure.net:10000/0?ssl_cert_reqs=none"
jwt-secret: "YOUR_STRONG_SECRET_KEY"
encryption-key: "YOUR_ENCRYPTION_KEY"
6. 运行部署脚本
cd services/mcp-server
chmod +x scripts/deploy-azure.sh
./scripts/deploy-azure.sh
手动部署步骤
如果您希望手动控制每一步部署:
1. 构建并推送镜像
# 登录ACR
az acr login --name $ACR_NAME
# 构建镜像
docker build -t ${ACR_NAME}.azurecr.io/mcp-server:latest .
# 推送镜像
docker push ${ACR_NAME}.azurecr.io/mcp-server:latest
2. 配置kubectl
az aks get-credentials \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME
3. 创建命名空间
kubectl create namespace taiji-ai
4. 部署Secrets
kubectl apply -f k8s/secrets.yaml
5. 部署应用
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/ingress.yaml
6. 验证部署
# 查看Pod状态
kubectl get pods -n taiji-ai
# 查看服务
kubectl get svc -n taiji-ai
# 查看Ingress
kubectl get ingress -n taiji-ai
# 查看日志
kubectl logs -f -l app=mcp-server -n taiji-ai
配置Application Gateway Ingress Controller
安装AGIC
# 添加Helm仓库
helm repo add application-gateway-kubernetes-ingress https://appgwingress.blob.core.windows.net/ingress-azure-helm-package/
helm repo update
# 安装AGIC
helm install ingress-azure \
application-gateway-kubernetes-ingress/ingress-azure \
--namespace taiji-ai \
--set appgw.subscriptionId=$SUBSCRIPTION_ID \
--set appgw.resourceGroup=$RESOURCE_GROUP \
--set appgw.name=taiji-appgw \
--set appgw.shared=false \
--set armAuth.type=servicePrincipal \
--set armAuth.secretJSON=$(cat sp-credentials.json | base64 -w0)
SSL/TLS证书配置
使用cert-manager自动管理证书
# 安装cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
# 创建Let's Encrypt Issuer
cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@taiji-ai.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: azure/application-gateway
EOF
监控和日志
查看实时日志
# 查看所有Pod日志
kubectl logs -f -l app=mcp-server -n taiji-ai
# 查看特定Pod日志
kubectl logs -f <pod-name> -n taiji-ai
查看资源使用情况
# 查看Pod资源使用
kubectl top pods -n taiji-ai
# 查看节点资源使用
kubectl top nodes
Azure Monitor集成
# 启用AKS监控
az aks enable-addons \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--addons monitoring
扩容和更新
手动扩容
# 扩容到5个副本
kubectl scale deployment mcp-server --replicas=5 -n taiji-ai
自动扩容
HPA(HorizontalPodAutoscaler)已在 deployment.yaml 中配置:
- 最小副本数:3
- 最大副本数:10
- CPU使用率阈值:70%
- 内存使用率阈值:80%
滚动更新
# 更新镜像
kubectl set image deployment/mcp-server \
mcp-server=${ACR_NAME}.azurecr.io/mcp-server:v2 \
-n taiji-ai
# 查看更新状态
kubectl rollout status deployment/mcp-server -n taiji-ai
# 回滚到上一个版本
kubectl rollout undo deployment/mcp-server -n taiji-ai
故障排查
Pod无法启动
# 查看Pod详情
kubectl describe pod <pod-name> -n taiji-ai
# 查看事件
kubectl get events -n taiji-ai --sort-by='.lastTimestamp'
数据库连接问题
# 测试数据库连接
kubectl run -it --rm debug --image=postgres:14 --restart=Never -- \
psql "postgresql://taiji:PASSWORD@taijipda.postgres.database.azure.com:5432/postgres?sslmode=require"
查看Secret配置
# 查看Secret(base64编码)
kubectl get secret taiji-secrets -n taiji-ai -o yaml
# 解码查看内容(谨慎操作)
kubectl get secret taiji-secrets -n taiji-ai -o jsonpath='{.data.database-url}' | base64 -d
清理资源
# 删除应用
kubectl delete namespace taiji-ai
# 删除AKS集群
az aks delete --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER_NAME --yes
# 删除整个资源组(谨慎操作)
az group delete --name $RESOURCE_GROUP --yes
安全最佳实践
- 使用Azure Key Vault - 将敏感信息存储在Key Vault中
- 启用RBAC - 配置适当的角色和权限
- 网络策略 - 限制Pod之间的网络通信
- 定期更新 - 保持AKS和容器镜像更新
- 备份 - 定期备份数据库和配置
成本优化
- 使用Spot实例 - 用于非关键工作负载
- 配置自动扩缩容 - 根据负载动态调整资源
- 使用预留实例 - 长期运行的服务可节省成本
- 监控资源使用 - 及时发现和优化资源浪费
支持
如有问题,请联系:
- Email: support@taiji-ai.com
- 文档: https://docs.taiji-ai.com
许可证
Copyright © 2025 Taiji AI. All rights reserved.