89 lines
2.7 KiB
Bash
89 lines
2.7 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 部署 server 到 Kubernetes 的脚本
|
|||
|
|
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
# 配置变量
|
|||
|
|
NAMESPACE="${1:-default}"
|
|||
|
|
DEPLOYMENT_NAME="remote-task-executor-server"
|
|||
|
|
|
|||
|
|
# 颜色输出
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
NC='\033[0m' # No Color
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}========================================${NC}"
|
|||
|
|
echo -e "${GREEN}部署 Server 到 Kubernetes${NC}"
|
|||
|
|
echo -e "${GREEN}========================================${NC}"
|
|||
|
|
echo -e "命名空间: ${YELLOW}${NAMESPACE}${NC}"
|
|||
|
|
echo -e "部署名称: ${YELLOW}${DEPLOYMENT_NAME}${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查 kubectl 是否可用
|
|||
|
|
if ! command -v kubectl &> /dev/null; then
|
|||
|
|
echo -e "${RED}错误: kubectl 未安装或不在 PATH 中${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查 k8s 目录是否存在
|
|||
|
|
if [ ! -d "k8s" ]; then
|
|||
|
|
echo -e "${RED}错误: k8s 目录不存在${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查命名空间是否存在,不存在则创建
|
|||
|
|
echo -e "${GREEN}[1/4] 检查命名空间...${NC}"
|
|||
|
|
if ! kubectl get namespace ${NAMESPACE} &> /dev/null; then
|
|||
|
|
echo -e "${YELLOW}命名空间不存在,正在创建...${NC}"
|
|||
|
|
kubectl create namespace ${NAMESPACE}
|
|||
|
|
echo -e "${GREEN}命名空间创建成功${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${GREEN}命名空间已存在${NC}"
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 应用 Secret(如果存在,注意:实际使用时需要先创建真实的 Secret)
|
|||
|
|
if [ -f "k8s/secret.yaml" ]; then
|
|||
|
|
echo -e "${GREEN}[2/3] 应用 Secret...${NC}"
|
|||
|
|
kubectl apply -f k8s/secret.yaml -n ${NAMESPACE}
|
|||
|
|
echo -e "${GREEN}Secret 应用成功${NC}"
|
|||
|
|
echo ""
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW}[2/3] 跳过 Secret(文件不存在,如需使用请参考 secret.yaml.example)${NC}"
|
|||
|
|
echo ""
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 应用 Deployment 和 Service
|
|||
|
|
echo -e "${GREEN}[3/3] 应用 Deployment 和 Service...${NC}"
|
|||
|
|
kubectl apply -f k8s/deployment.yaml -n ${NAMESPACE}
|
|||
|
|
echo -e "${GREEN}Deployment 和 Service 应用成功${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 等待部署完成
|
|||
|
|
echo -e "${GREEN}等待部署就绪...${NC}"
|
|||
|
|
kubectl wait --for=condition=available --timeout=300s deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE} || true
|
|||
|
|
|
|||
|
|
# 显示部署状态
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${GREEN}========================================${NC}"
|
|||
|
|
echo -e "${GREEN}部署完成!${NC}"
|
|||
|
|
echo -e "${GREEN}========================================${NC}"
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${YELLOW}部署状态:${NC}"
|
|||
|
|
kubectl get deployment ${DEPLOYMENT_NAME} -n ${NAMESPACE}
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${YELLOW}Pod 状态:${NC}"
|
|||
|
|
kubectl get pods -l app=${DEPLOYMENT_NAME} -n ${NAMESPACE}
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${YELLOW}Service 状态:${NC}"
|
|||
|
|
kubectl get svc ${DEPLOYMENT_NAME} -n ${NAMESPACE}
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${GREEN}查看日志命令:${NC}"
|
|||
|
|
echo -e "kubectl logs -f deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE}"
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${GREEN}进入 Pod 命令:${NC}"
|
|||
|
|
echo -e "kubectl exec -it deployment/${DEPLOYMENT_NAME} -n ${NAMESPACE} -- /bin/sh"
|
|||
|
|
|