Spaces:
Paused
Paused
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"
|