Files
AItrackwalker/deploy/scripts/install-addons.sh
T

52 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
CONFIG="${1:?site config is required}"
BUNDLE_ROOT="${2:?bundle root is required}"
DEPLOY_ROOT="${3:?deploy root is required}"
command -v helm >/dev/null 2>&1 || { echo "helm is required" >&2; exit 1; }
command -v kubectl >/dev/null 2>&1 || { echo "kubectl is required" >&2; exit 1; }
command -v yq >/dev/null 2>&1 || { echo "yq v4 is required" >&2; exit 1; }
install_chart() {
local release="$1"
local namespace="$2"
local chart="$3"
local values_file="$4"
shift 4
[[ -f "$chart" ]] || {
echo "Missing offline addon chart: $chart" >&2
exit 1
}
kubectl create namespace "$namespace" --dry-run=client -o yaml | kubectl apply -f -
helm upgrade --install "$release" "$chart" \
--namespace "$namespace" \
--values "$values_file" \
--wait \
--timeout 15m \
"$@"
}
if [[ "$(yq -r '.addons.longhorn.enabled' "$CONFIG")" == "true" ]]; then
LONGHORN_CHART="$BUNDLE_ROOT/$(yq -r '.addons.longhorn.chart' "$CONFIG")"
LONGHORN_NAMESPACE="$(yq -r '.addons.longhorn.namespace' "$CONFIG")"
install_chart \
longhorn \
"$LONGHORN_NAMESPACE" \
"$LONGHORN_CHART" \
"$DEPLOY_ROOT/addons/longhorn/values.yaml"
fi
if [[ "$(yq -r '.addons.gpuOperator.enabled' "$CONFIG")" == "true" ]]; then
GPU_CHART="$BUNDLE_ROOT/$(yq -r '.addons.gpuOperator.chart' "$CONFIG")"
GPU_NAMESPACE="$(yq -r '.addons.gpuOperator.namespace' "$CONFIG")"
DRIVER_MANAGED="$(yq -r '.gpu.driverManagedByOperator' "$CONFIG")"
install_chart \
gpu-operator \
"$GPU_NAMESPACE" \
"$GPU_CHART" \
"$DEPLOY_ROOT/addons/gpu/values.yaml" \
--set "driver.enabled=$DRIVER_MANAGED"
fi