-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy-production-lean.sh
More file actions
executable file
·123 lines (106 loc) · 3.97 KB
/
deploy-production-lean.sh
File metadata and controls
executable file
·123 lines (106 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
set -e
# Lean Production Deployment Script for Appwrite
# Single-node optimized - conservative resource allocation
# Source .env file if it exists
if [ -f .env ]; then
echo "📄 Loading environment variables from .env file..."
set -a
source .env
set +a
fi
echo "🚀 Deploying Appwrite (LEAN) to Production (servana cluster)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Check required environment variables
REQUIRED_VARS=(
"APPWRITE_OPENSSL_KEY"
"DB_ROOT_PASSWORD"
"DB_PASSWORD"
"EXECUTOR_SECRET"
"S3_ACCESS_KEY"
"S3_SECRET"
)
echo "🔍 Checking required environment variables..."
MISSING_VARS=()
for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var}" ]; then
MISSING_VARS+=("$var")
fi
done
if [ ${#MISSING_VARS[@]} -gt 0 ]; then
echo "❌ Missing required environment variables:"
for var in "${MISSING_VARS[@]}"; do
echo " - $var"
done
echo ""
echo "💡 Generate secrets with:"
echo " export APPWRITE_OPENSSL_KEY=\$(openssl rand -hex 32)"
echo " export DB_ROOT_PASSWORD=\$(openssl rand -base64 32)"
echo " export DB_PASSWORD=\$(openssl rand -base64 32)"
echo " export EXECUTOR_SECRET=\$(openssl rand -hex 32)"
echo " export S3_ACCESS_KEY='your-minio-access-key'"
echo " export S3_SECRET='your-minio-secret-key'"
exit 1
fi
echo "✅ All required variables present"
echo ""
# Check cluster capacity
echo "📊 Checking cluster capacity..."
kubectl --context=servana top nodes
# Confirm deployment
echo ""
echo "📋 Deployment Details:"
echo " Profile: LEAN (single-node optimized)"
echo " Cluster: servana (k0s)"
echo " Namespace: appwrite"
echo " Domain: your-domain.com (configure in values file)"
echo " Resources: ~3 cores, ~6GB RAM"
echo " Replicas: 1 (no HA)"
echo " Storage: OpenEBS + MinIO"
echo ""
read -p "Continue with LEAN deployment? (yes/no): " CONFIRM
if [ "$CONFIRM" != "yes" ]; then
echo "❌ Deployment cancelled"
exit 0
fi
echo ""
echo "📦 Creating namespace (if needed)..."
kubectl --context=servana create namespace appwrite --dry-run=client -o yaml | kubectl --context=servana apply -f -
echo "🔨 Templating Helm chart (LEAN configuration)..."
helm template appwrite . \
--namespace appwrite \
--values values-production-lean.yaml \
--set secrets.opensslKeyV1="$APPWRITE_OPENSSL_KEY" \
--set secrets.dbRootPassword="$DB_ROOT_PASSWORD" \
--set secrets.dbPassword="$DB_PASSWORD" \
--set secrets.executorSecret="$EXECUTOR_SECRET" \
--set secrets.storage.s3.accessKey="$S3_ACCESS_KEY" \
--set secrets.storage.s3.secret="$S3_SECRET" \
> /tmp/appwrite-production-lean.yaml
echo "📤 Deploying to servana cluster..."
kubectl --context=servana apply -n appwrite -f /tmp/appwrite-production-lean.yaml
echo "🧹 Cleaning up temp file..."
rm /tmp/appwrite-production-lean.yaml
echo ""
echo "✅ Deployment complete!"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📊 Check deployment status:"
echo " kubectl --context=servana get pods -n appwrite"
echo ""
echo "🔍 Watch pods starting:"
echo " kubectl --context=servana get pods -n appwrite -w"
echo ""
echo "📝 View logs:"
echo " kubectl --context=servana logs -n appwrite -l component=api --tail=50"
echo ""
echo "📈 Monitor resources:"
echo " kubectl --context=servana top pods -n appwrite"
echo ""
echo "🌐 Access Appwrite:"
echo " https://your-domain.com (configure in values file)"
echo ""
echo "⏳ Note: It may take 3-5 minutes for all pods to be ready"
echo "⚠️ This is a LEAN deployment - single replicas, conservative resources"
echo " Upgrade to values-production.yaml when you expand to 3+ nodes"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"