File size: 3,219 Bytes
ae122c6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
set -e

# Yuga Planner Helm Deployment Script
# This script loads credentials from environment variables or creds.py and deploys using Helm

echo "πŸš€ Deploying Yuga Planner using Helm..."

# Check if we're in the correct directory (project root)
if [ ! -d "deploy/helm" ] && [ ! -f "deploy/helm/Chart.yaml" ]; then
    echo "❌ Error: Helm chart not found. Please ensure deploy/helm/Chart.yaml exists."
    exit 1
fi

# Get the script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# Source the credential loading script
source "${SCRIPT_DIR}/load-credentials.sh"

# Check and load credentials
if ! check_credentials; then
    exit 1
fi

# Check if helm is available
if ! command -v helm &> /dev/null; then
    echo "❌ Error: helm is required but not installed."
    echo "πŸ’‘ Install Helm from: https://helm.sh/docs/intro/install/"
    exit 1
fi

# Configuration
RELEASE_NAME="${HELM_RELEASE_NAME:-yuga-planner}"
# Get current namespace, fallback to default if not set
CURRENT_NAMESPACE=$(kubectl config view --minify --output 'jsonpath={..namespace}' 2>/dev/null || echo "default")
NAMESPACE="${HELM_NAMESPACE:-$CURRENT_NAMESPACE}"
CHART_PATH="${HELM_CHART_PATH:-deploy/helm}"

echo "πŸ“¦ Helm Release: $RELEASE_NAME"
echo "🏷️  Namespace: $NAMESPACE"
echo "πŸ“‚ Chart Path: $CHART_PATH"

# Create namespace if it doesn't exist
if ! kubectl get namespace "$NAMESPACE" &> /dev/null; then
    echo "πŸ—οΈ  Creating namespace: $NAMESPACE"
    kubectl create namespace "$NAMESPACE"
fi

# Prepare Helm values with environment variables
HELM_VALUES=""
HELM_VALUES="$HELM_VALUES --set env.NEBIUS_API_KEY=$NEBIUS_API_KEY"
HELM_VALUES="$HELM_VALUES --set env.NEBIUS_MODEL=$NEBIUS_MODEL"
HELM_VALUES="$HELM_VALUES --set env.MODAL_TOKEN_ID=$MODAL_TOKEN_ID"
HELM_VALUES="$HELM_VALUES --set env.MODAL_TOKEN_SECRET=$MODAL_TOKEN_SECRET"
HELM_VALUES="$HELM_VALUES --set env.HF_MODEL=$HF_MODEL"
HELM_VALUES="$HELM_VALUES --set env.HF_TOKEN=$HF_TOKEN"

# Add optional environment variables if set
if [ ! -z "$IMAGE_TAG" ]; then
    HELM_VALUES="$HELM_VALUES --set image.tag=$IMAGE_TAG"
fi

if [ ! -z "$REPLICAS" ]; then
    HELM_VALUES="$HELM_VALUES --set replicaCount=$REPLICAS"
fi

# Check if release already exists
if helm list -n "$NAMESPACE" | grep -q "^$RELEASE_NAME"; then
    echo "πŸ”„ Upgrading existing Helm release..."
    helm upgrade "$RELEASE_NAME" "$CHART_PATH" \
        --namespace "$NAMESPACE" \
        $HELM_VALUES \
        --timeout 300s \
        --wait
else
    echo "πŸ†• Installing new Helm release..."
    helm install "$RELEASE_NAME" "$CHART_PATH" \
        --namespace "$NAMESPACE" \
        $HELM_VALUES \
        --timeout 300s \
        --wait
fi

echo "βœ… Deployment complete!"
echo ""
echo "πŸ“Š Release Information:"
helm status "$RELEASE_NAME" -n "$NAMESPACE"
echo ""
echo "πŸ” Useful commands:"
echo "  β€’ Check pods: kubectl get pods -l app.kubernetes.io/instance=$RELEASE_NAME -n $NAMESPACE"
echo "  β€’ View logs: kubectl logs -l app.kubernetes.io/instance=$RELEASE_NAME -n $NAMESPACE -f"
echo "  β€’ Port forward: kubectl port-forward svc/$RELEASE_NAME 8080:80 -n $NAMESPACE"
echo "  β€’ Uninstall: helm uninstall $RELEASE_NAME -n $NAMESPACE"