temp
This commit is contained in:
91
k8s/xiongxiao.me/deploy-apps.sh
Executable file
91
k8s/xiongxiao.me/deploy-apps.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Nginx 配置迁移到 K3s + Traefik 部署脚本
|
||||
# tags: kubernetes, k3s, traefik, deployment, automation
|
||||
# description: 自动部署外部服务和 IngressRoute 配置的脚本
|
||||
# title: 自动部署脚本
|
||||
# createdAt: 2025-11-26
|
||||
|
||||
set -e
|
||||
|
||||
echo "======================================"
|
||||
echo "Nginx 配置迁移到 K3s + Traefik"
|
||||
echo "======================================"
|
||||
echo ""
|
||||
|
||||
# 颜色定义
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 检查 kubectl
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
echo -e "${RED}错误: kubectl 未安装${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 Traefik
|
||||
echo -e "${YELLOW}步骤 1/4: 检查 Traefik 部署状态...${NC}"
|
||||
if ! kubectl get namespace traefik &> /dev/null; then
|
||||
echo -e "${YELLOW}Traefik namespace 不存在,正在创建...${NC}"
|
||||
kubectl create namespace traefik
|
||||
fi
|
||||
|
||||
if ! kubectl get deployment traefik -n traefik &> /dev/null; then
|
||||
echo -e "${YELLOW}Traefik 未部署,正在部署...${NC}"
|
||||
kubectl apply -f traefik/traefik-complete.yaml
|
||||
echo -e "${GREEN}等待 Traefik Pod 就绪...${NC}"
|
||||
kubectl wait --for=condition=ready pod -l app=traefik -n traefik --timeout=120s
|
||||
else
|
||||
echo -e "${GREEN}✓ Traefik 已部署${NC}"
|
||||
fi
|
||||
|
||||
# 部署外部服务
|
||||
echo ""
|
||||
echo -e "${YELLOW}步骤 2/4: 部署外部服务配置...${NC}"
|
||||
kubectl apply -f services/external-services.yaml
|
||||
echo -e "${GREEN}✓ 外部服务配置已应用${NC}"
|
||||
|
||||
# 验证服务
|
||||
echo ""
|
||||
echo -e "${YELLOW}步骤 3/4: 验证服务创建...${NC}"
|
||||
sleep 2
|
||||
SERVICE_COUNT=$(kubectl get svc -n default | grep -c "external" || true)
|
||||
ENDPOINT_COUNT=$(kubectl get endpoints -n default | grep -c "external" || true)
|
||||
echo -e "${GREEN}✓ 创建了 ${SERVICE_COUNT} 个服务${NC}"
|
||||
echo -e "${GREEN}✓ 创建了 ${ENDPOINT_COUNT} 个 Endpoints${NC}"
|
||||
|
||||
# 部署 IngressRoute
|
||||
echo ""
|
||||
echo -e "${YELLOW}步骤 4/4: 部署 IngressRoute 配置...${NC}"
|
||||
kubectl apply -f ingress/apps-ingressroute.yaml
|
||||
sleep 2
|
||||
ROUTE_COUNT=$(kubectl get ingressroute -n default 2>/dev/null | grep -c "https" || true)
|
||||
echo -e "${GREEN}✓ 创建了 ${ROUTE_COUNT} 个 IngressRoute${NC}"
|
||||
|
||||
# 显示结果
|
||||
echo ""
|
||||
echo -e "${GREEN}======================================"
|
||||
echo "部署完成!"
|
||||
echo "======================================${NC}"
|
||||
echo ""
|
||||
echo "已部署的服务:"
|
||||
kubectl get svc -n default | grep external || echo "无"
|
||||
echo ""
|
||||
echo "已部署的 IngressRoute:"
|
||||
kubectl get ingressroute -n default || echo "无"
|
||||
echo ""
|
||||
echo -e "${YELLOW}提示:${NC}"
|
||||
echo "1. 查看 Traefik Dashboard:"
|
||||
echo " kubectl port-forward svc/traefik 8080:8080 -n traefik"
|
||||
echo " 然后访问 http://localhost:8080/dashboard/"
|
||||
echo ""
|
||||
echo "2. 查看 Traefik 日志:"
|
||||
echo " kubectl logs -n traefik -l app=traefik -f"
|
||||
echo ""
|
||||
echo "3. 测试服务访问:"
|
||||
echo " curl -k https://blinko.xiongxiao.me"
|
||||
echo ""
|
||||
echo "4. 确保 DNS 已配置正确,将域名指向 Traefik 的 NodePort (30443)"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user