#!/usr/bin/env bash set -euo pipefail if [[ "${EUID}" -eq 0 ]]; then SUDO="" else SUDO="sudo" fi # 若未安装 helm,则自动安装 if ! command -v helm >/dev/null 2>&1; then echo "未检测到 helm,自动安装..." curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | ${SUDO} bash fi # 检查集群可用性 kubectl cluster-info >/dev/null echo "[1/3] 安装 Spark Operator" helm repo add spark-operator https://kubeflow.github.io/spark-operator >/dev/null 2>&1 || true helm repo update >/dev/null SPARK_OPERATOR_JOB_NAMESPACES_JSON="${SPARK_OPERATOR_JOB_NAMESPACES_JSON:-[\"\"]}" SPARK_OPERATOR_IVY_CACHE_PATH="${SPARK_OPERATOR_IVY_CACHE_PATH:-/var/lib/wenshu/spark-ivy}" helm upgrade --install spark-operator spark-operator/spark-operator \ --namespace spark-operator \ --create-namespace \ --set-json "spark.jobNamespaces=${SPARK_OPERATOR_JOB_NAMESPACES_JSON}" \ --set-json "controller.volumes=[{\"name\":\"tmp\",\"emptyDir\":{\"sizeLimit\":\"1Gi\"}},{\"name\":\"wenshu-spark-ivy-cache\",\"emptyDir\":{}}]" \ --set-json "controller.volumeMounts=[{\"name\":\"tmp\",\"mountPath\":\"/tmp\",\"readOnly\":false},{\"name\":\"wenshu-spark-ivy-cache\",\"mountPath\":\"${SPARK_OPERATOR_IVY_CACHE_PATH}\",\"readOnly\":false}]" echo "[2/3] 安装 StarRocks Operator" kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/starrocks.com_starrocksclusters.yaml kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml echo "[3/3] 验证 Operator" kubectl get crd sparkapplications.sparkoperator.k8s.io kubectl get crd starrocksclusters.starrocks.com kubectl get pods -n spark-operator || true kubectl get pods -n starrocks || true echo echo "Spark + StarRocks Operator 安装完成。"