Files
k3s-configs/php-test/deploy.sh
2026-01-21 13:37:13 +00:00

69 lines
2.1 KiB
Bash
Executable File

#!/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"