#!/usr/bin/env bash # CloudNest 一键部署脚本 # CloudNest One-Click Deployment Script # 用法 / Usage: CLOUDNEST_ENV=prod ./deploy-all.sh set -euo pipefail ENV=${CLOUDNEST_ENV:-prod} echo "=== CloudNest 一键部署脚本 ===" echo "环境 / Environment: $ENV" # 0. 创建命名空间 / Create namespace kubectl create namespace cloudnest 2>/dev/null || true # 1. 基础设施 / Infrastructure echo "[1/3] 部署 MySQL / Redis / MinIO..." kubectl apply -f deployments/k8s/00-namespace.yaml kubectl apply -f deployments/k8s/mysql-deployment.yaml kubectl apply -f deployments/k8s/redis-deployment.yaml kubectl apply -f deployments/k8s/minio-deployment.yaml echo "等待基础设施就绪 / Waiting for infrastructure..." kubectl wait --for=condition=ready pod -l app=mysql -n cloudnest --timeout=180s kubectl wait --for=condition=ready pod -l app=redis -n cloudnest --timeout=60s kubectl wait --for=condition=ready pod -l app=minio -n cloudnest --timeout=60s # 2. 微服务 / Microservices echo "[2/3] 部署 Auth / File 微服务..." kubectl apply -f deployments/k8s/auth-deployment.yaml kubectl apply -f deployments/k8s/file-deployment.yaml kubectl apply -f deployments/k8s/ingress.yaml kubectl wait --for=condition=ready pod -l app=auth-service -n cloudnest --timeout=120s kubectl wait --for=condition=ready pod -l app=file-service -n cloudnest --timeout=120s # 3. 状态总览 / Status overview echo "[3/3] 部署完成,资源总览 / Deployment complete, resource overview:" kubectl get all,ingressroute,middleware -n cloudnest echo "" echo "下一步 / Next steps:" echo " 1. 在域名服务商添加 A 记录: api / minio -> 你的服务器公网 IP" echo " Add A records at your DNS provider: api / minio -> your server public IP" echo " 2. 按部署指南启用 Traefik Let's Encrypt 自动证书" echo " Enable Traefik Let's Encrypt auto-certificate per deployment guide" echo " 3. curl -X POST https://api.yourdomain.com/api/v1/auth/register -d '{\"username\":\"admin\",\"password\":\"123456\"}' -H 'Content-Type: application/json'"