@echo off REM Taiji AI-PAD AKS 部署脚本 (生产环境) - Windows 版本 REM 部署到 taiji-ai-pda AKS 集群 setlocal enabledelayedexpansion REM 配置变量 - 生产环境 set ACR_NAME=taiji set ACR_LOGIN_SERVER=%ACR_NAME%.azurecr.io set RESOURCE_GROUP=taiji-ai-pda set AKS_NAME=taiji-ai-pda set NAMESPACE=taiji-ai echo === Taiji AI-PAD AKS 部署脚本 (生产环境) === echo 警告: 您正在部署到生产环境! echo 目标集群: %AKS_NAME% echo 命名空间: %NAMESPACE% echo. REM 确认生产环境部署 set /p confirm=确认部署到生产环境? (输入 'yes' 继续): if not "%confirm%"=="yes" ( echo 部署已取消 exit /b 0 ) REM 检查 Azure CLI 登录状态 echo 检查 Azure 登录状态... az account show >nul 2>&1 if errorlevel 1 ( echo 请先运行 'az login' 登录 Azure exit /b 1 ) echo Azure 已登录 REM 登录 ACR echo 登录 Azure Container Registry... az acr login --name %ACR_NAME% REM 获取 AKS 凭据 echo 获取 AKS 集群凭据 (%AKS_NAME%)... az aks get-credentials --resource-group %RESOURCE_GROUP% --name %AKS_NAME% --overwrite-existing REM 构建并推送 Docker 镜像 echo 构建并推送 Docker 镜像到 ACR... REM 构建 Data Ingestion REM --platform linux/amd64: 显式锁定架构,与 AKS 标准节点 (amd64) 匹配,避免在 arm64 Mac 上误构建为 arm64 echo [1/2] 构建 Data Ingestion 镜像... docker build --platform linux/amd64 -t %ACR_LOGIN_SERVER%/data-ingestion:latest ./services/data-ingestion/ docker push %ACR_LOGIN_SERVER%/data-ingestion:latest REM 构建 MCP Server echo [2/2] 构建 MCP Server 镜像... docker build --platform linux/amd64 -t %ACR_LOGIN_SERVER%/mcp-server:latest ./services/mcp-server/ docker push %ACR_LOGIN_SERVER%/mcp-server:latest echo 所有镜像构建并推送完成! REM 部署到 AKS echo 部署到 AKS (生产环境)... REM 创建命名空间 echo 创建命名空间... kubectl apply -f k8s/prod/namespace.yaml REM 部署 Secrets 和 ConfigMap echo 部署 Secrets 和 ConfigMap... kubectl apply -f k8s/prod/secrets.yaml kubectl apply -f k8s/prod/configmap.yaml REM 部署 NATS echo 部署 NATS 消息队列... kubectl apply -f k8s/prod/nats.yaml REM 等待 NATS 就绪 echo 等待 NATS 就绪... kubectl wait --for=condition=ready pod -l app=nats -n %NAMESPACE% --timeout=120s REM 部署 Data Ingestion echo 部署 Data Ingestion... kubectl apply -f k8s/prod/data-ingestion.yaml REM 部署 MCP Server echo 部署 MCP Server... kubectl apply -f k8s/prod/mcp-server.yaml REM 部署 API Gateway echo 部署 API Gateway... kubectl apply -f k8s/prod/api-gateway.yaml REM 部署 Ingress echo 部署 Ingress... kubectl apply -f k8s/prod/ingress.yaml REM 部署 Prometheus 监控 echo 部署 Prometheus 监控... kubectl apply -f k8s/prod/monitoring.yaml REM 等待所有服务就绪 echo 等待所有服务就绪... kubectl wait --for=condition=ready pod -l app=data-ingestion -n %NAMESPACE% --timeout=180s kubectl wait --for=condition=ready pod -l app=mcp-server -n %NAMESPACE% --timeout=180s kubectl wait --for=condition=ready pod -l app=api-gateway -n %NAMESPACE% --timeout=180s kubectl wait --for=condition=ready pod -l app=prometheus -n %NAMESPACE% --timeout=180s REM 获取 API Gateway 外部 IP echo 获取 API Gateway 外部 IP... for /f "tokens=*" %%a in ('kubectl get svc api-gateway -n %NAMESPACE% -o jsonpath^="{.status.loadBalancer.ingress[0].ip}"') do set EXTERNAL_IP=%%a echo. echo === 生产环境部署完成! === echo. echo 查看所有 Pod 状态: kubectl get pods -n %NAMESPACE% echo. echo 查看所有 Service: kubectl get svc -n %NAMESPACE% echo. echo 查看 Ingress: kubectl get ingress -n %NAMESPACE% echo. echo 生产环境配置信息: echo - 数据库: taiji_prod (生产库) echo - Redis: taiji2026.southeastasia.redis.azure.net echo - 命名空间: %NAMESPACE% if defined EXTERNAL_IP ( echo. echo API Gateway 外部访问地址: http://%EXTERNAL_IP% echo - 健康检查: http://%EXTERNAL_IP%/health echo - MCP Server: http://%EXTERNAL_IP%/api/mcp/ echo - Data Ingestion: http://%EXTERNAL_IP%/api/data/ ) else ( echo. echo LoadBalancer IP 尚未分配,请稍后运行以下命令查看: echo kubectl get svc api-gateway -n %NAMESPACE% ) endlocal