Files
cloudnest/deploy-all.sh

46 lines
2.0 KiB
Bash

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