forked from xiaohei/taiji-AI-PAD
141 lines
4.2 KiB
Batchfile
141 lines
4.2 KiB
Batchfile
@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
|