#!/bin/bash # Nginx 配置迁移卸载脚本 # tags: kubernetes, k3s, traefik, cleanup, uninstall # description: 卸载所有已部署的外部服务和 IngressRoute 配置 # title: 卸载脚本 # createdAt: 2025-11-26 set -e echo "======================================" echo "卸载 K3s 外部服务配置" echo "======================================" echo "" # 颜色定义 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # 确认卸载 read -p "确认要卸载所有外部服务和 IngressRoute 配置吗?(y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo -e "${YELLOW}取消卸载${NC}" exit 0 fi # 删除 IngressRoute echo "" echo -e "${YELLOW}步骤 1/2: 删除 IngressRoute...${NC}" if kubectl get ingressroute -n default &> /dev/null; then kubectl delete -f k8s/xiongxiao.me/ingress/apps-ingressroute.yaml || true echo -e "${GREEN}✓ IngressRoute 已删除${NC}" else echo -e "${YELLOW}无 IngressRoute 需要删除${NC}" fi # 删除外部服务 echo "" echo -e "${YELLOW}步骤 2/2: 删除外部服务和 Endpoints...${NC}" if kubectl get svc -n default | grep -q external; then kubectl delete -f k8s/xiongxiao.me/services/external-services.yaml || true echo -e "${GREEN}✓ 外部服务已删除${NC}" else echo -e "${YELLOW}无外部服务需要删除${NC}" fi # 验证清理 echo "" echo -e "${YELLOW}验证清理结果...${NC}" REMAINING_SVC=$(kubectl get svc -n default | grep -c "external" || true) REMAINING_ROUTES=$(kubectl get ingressroute -n default 2>/dev/null | grep -c "https" || true) if [ "$REMAINING_SVC" -eq 0 ] && [ "$REMAINING_ROUTES" -eq 0 ]; then echo -e "${GREEN}✓ 所有配置已清理完成${NC}" else echo -e "${RED}警告: 仍有 ${REMAINING_SVC} 个服务和 ${REMAINING_ROUTES} 个路由${NC}" fi echo "" echo -e "${GREEN}======================================" echo "卸载完成!" echo "======================================${NC}" echo "" echo -e "${YELLOW}注意: Traefik 本身未被删除${NC}" echo "如需删除 Traefik,请运行:" echo " kubectl delete -f k8s/xiongxiao.me/traefik/traefik-complete.yaml" echo ""