46 lines
2.0 KiB
Bash
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'"
|