#!/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}