#!/bin/bash set -e echo "🚀 开始部署 PHP 测试项目到 k3s..." # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 1. 构建 Docker 镜像 echo -e "${BLUE}📦 步骤 1: 构建 Docker 镜像...${NC}" docker build -t php-test:latest . echo -e "${GREEN}✅ Docker 镜像构建完成${NC}\n" # 2. 导入镜像到 k3s echo -e "${BLUE}📥 步骤 2: 导入镜像到 k3s...${NC}" docker save php-test:latest | sudo k3s ctr images import - echo -e "${GREEN}✅ 镜像导入完成${NC}\n" # 3. 应用 ConfigMap echo -e "${BLUE}⚙️ 步骤 3: 应用配置文件...${NC}" kubectl apply -f k8s/mysql-configmap.yaml kubectl apply -f k8s/php-configmap.yaml echo -e "${GREEN}✅ ConfigMap 应用完成${NC}\n" # 4. 部署 MySQL echo -e "${BLUE}🗄️ 步骤 4: 部署 MySQL 数据库...${NC}" kubectl apply -f k8s/mysql-deployment.yaml echo -e "${GREEN}✅ MySQL 部署完成${NC}\n" # 5. 等待 MySQL 就绪 echo -e "${YELLOW}⏳ 等待 MySQL 就绪...${NC}" kubectl wait --for=condition=ready pod -l app=mysql -n php-test --timeout=120s echo -e "${GREEN}✅ MySQL 已就绪${NC}\n" # 6. 部署 PHP 应用 echo -e "${BLUE}🐘 步骤 5: 部署 PHP 应用...${NC}" kubectl apply -f k8s/php-deployment.yaml echo -e "${GREEN}✅ PHP 应用部署完成${NC}\n" # 7. 等待 PHP 应用就绪 echo -e "${YELLOW}⏳ 等待 PHP 应用就绪...${NC}" kubectl wait --for=condition=ready pod -l app=php-app -n php-test --timeout=120s echo -e "${GREEN}✅ PHP 应用已就绪${NC}\n" # 8. 显示部署信息 echo -e "${BLUE}📊 部署信息:${NC}" echo "================================" kubectl get all -n php-test echo "" # 9. 获取访问地址 NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}') NODE_PORT=30080 echo -e "${GREEN}🎉 部署成功!${NC}" echo "" echo -e "${BLUE}访问地址:${NC}" echo -e " http://${NODE_IP}:${NODE_PORT}" echo -e " http://localhost:${NODE_PORT}" echo "" echo -e "${YELLOW}提示:${NC}" echo " - 查看 Pod 状态: kubectl get pods -n php-test" echo " - 查看日志: kubectl logs -f deployment/php-app -n php-test" echo " - 删除部署: ./undeploy.sh"