Files
sealos/frontend/providers/cloudserver/deploy/cloudserver-frontend-entrypoint.sh
T
jingyang 79b3d1f9ed feat(providers): migrate app deploys to helm charts (#6954)
* feat(providers): migrate app deploys to helm charts

* fix(aiproxy): use sealos-compatible entrypoint command

* fix(providers): use sealos-compatible kubefile commands
2026-05-21 16:04:00 +08:00

90 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
set -e
RELEASE_NAME=${RELEASE_NAME:-"cloudserver-frontend"}
RELEASE_NAMESPACE=${RELEASE_NAMESPACE:-"cloudserver-frontend"}
CHART_PATH=${CHART_PATH:-"./charts/cloudserver-frontend"}
HELM_OPTS=${HELM_OPTS:-""}
HELM_OPTIONS=${HELM_OPTIONS:-""}
AUTO_CONFIG_HELM_OPTS=""
get_cm_value() {
local namespace="$1"
local name="$2"
local key="$3"
kubectl get configmap "${name}" -n "${namespace}" -o "jsonpath={.data.${key}}" 2>/dev/null || true
}
add_set_string() {
local key="$1"
local value="$2"
if [ -n "${value}" ]; then
AUTO_CONFIG_HELM_OPTS="${AUTO_CONFIG_HELM_OPTS} --set-string ${key}=${value}"
fi
}
SEALOS_CLOUD_DOMAIN=${SEALOS_CLOUD_DOMAIN:-"${cloudDomain:-$(get_cm_value sealos-system sealos-config cloudDomain)}"}
add_set_string cloudserverConfig.cloudDomain "${SEALOS_CLOUD_DOMAIN}"
SEALOS_CLOUD_PORT=${SEALOS_CLOUD_PORT:-"${cloudPort:-$(get_cm_value sealos-system sealos-config cloudPort)}"}
add_set_string cloudserverConfig.cloudPort "${SEALOS_CLOUD_PORT}"
SEALOS_HTTP_PORT=${SEALOS_HTTP_PORT:-"${httpPort:-$(get_cm_value sealos-system sealos-config httpPort)}"}
add_set_string cloudserverConfig.httpPort "${SEALOS_HTTP_PORT}"
SEALOS_DISABLE_HTTPS=${SEALOS_DISABLE_HTTPS:-"${disableHttps:-$(get_cm_value sealos-system sealos-config disableHttps)}"}
add_set_string cloudserverConfig.disableHttps "${SEALOS_DISABLE_HTTPS}"
SEALOS_CERT_SECRET_NAME=${SEALOS_CERT_SECRET_NAME:-"${certSecretName:-$(get_cm_value sealos-system sealos-config certSecretName)}"}
add_set_string cloudserverConfig.certSecretName "${SEALOS_CERT_SECRET_NAME}"
SEALOS_JWT_INTERNAL=${SEALOS_JWT_INTERNAL:-"${jwtInternal:-$(get_cm_value sealos-system sealos-config jwtInternal)}"}
add_set_string cloudserverConfig.jwtSecretApp "${SEALOS_JWT_INTERNAL}"
add_set_string cloudserverConfig.lafBaseUrl "${lafBaseUrl:-}"
adopt_namespaced_resource() {
local namespace="$1"
local kind="$2"
local name="$3"
if kubectl -n "${namespace}" get "${kind}" "${name}" >/dev/null 2>&1; then
echo "Adopting ${kind} ${namespace}/${name}..."
kubectl -n "${namespace}" label "${kind}" "${name}" app.kubernetes.io/managed-by=Helm --overwrite >/dev/null 2>&1 || true
kubectl -n "${namespace}" annotate "${kind}" "${name}" meta.helm.sh/release-name="${RELEASE_NAME}" meta.helm.sh/release-namespace="${RELEASE_NAMESPACE}" --overwrite >/dev/null 2>&1 || true
fi
}
adopt_cluster_resource() {
local kind="$1"
local name="$2"
if kubectl get "${kind}" "${name}" >/dev/null 2>&1; then
echo "Adopting ${kind} ${name}..."
kubectl label "${kind}" "${name}" app.kubernetes.io/managed-by=Helm --overwrite >/dev/null 2>&1 || true
kubectl annotate "${kind}" "${name}" meta.helm.sh/release-name="${RELEASE_NAME}" meta.helm.sh/release-namespace="${RELEASE_NAMESPACE}" --overwrite >/dev/null 2>&1 || true
fi
}
echo "Checking and adopting existing resources..."
if kubectl get namespace "${RELEASE_NAMESPACE}" >/dev/null 2>&1; then
kubectl label namespace "${RELEASE_NAMESPACE}" app.kubernetes.io/managed-by=Helm --overwrite >/dev/null 2>&1 || true
kubectl annotate namespace "${RELEASE_NAMESPACE}" meta.helm.sh/release-name="${RELEASE_NAME}" meta.helm.sh/release-namespace="${RELEASE_NAMESPACE}" --overwrite >/dev/null 2>&1 || true
adopt_namespaced_resource "${RELEASE_NAMESPACE}" configmap cloudserver-frontend-config
adopt_namespaced_resource "${RELEASE_NAMESPACE}" service cloudserver-frontend
adopt_namespaced_resource "${RELEASE_NAMESPACE}" deployment cloudserver-frontend
adopt_namespaced_resource "${RELEASE_NAMESPACE}" ingress cloudserver-frontend
fi
adopt_namespaced_resource app-system apps.app.sealos.io cloudserver
SERVICE_NAME="cloudserver-frontend"
USER_VALUES_PATH="/root/.sealos/cloud/values/core/${SERVICE_NAME}-values.yaml"
if [ ! -f "${USER_VALUES_PATH}" ]; then
mkdir -p "$(dirname "${USER_VALUES_PATH}")"
cp "./charts/cloudserver-frontend/cloudserver-frontend-values.yaml" "${USER_VALUES_PATH}"
fi
HELM_ARGS="${AUTO_CONFIG_HELM_OPTS} ${HELM_OPTIONS} ${HELM_OPTS}"
echo "Deploying Helm chart..."
helm upgrade -i "${RELEASE_NAME}" -n "${RELEASE_NAMESPACE}" --create-namespace "${CHART_PATH}" \
-f "./charts/cloudserver-frontend/values.yaml" \
-f "${USER_VALUES_PATH}" \
${HELM_ARGS}