mirror of
https://github.com/labring/sealos.git
synced 2026-09-21 05:44:43 +08:00
* feat(providers): migrate app deploys to helm charts * fix(aiproxy): use sealos-compatible entrypoint command * fix(providers): use sealos-compatible kubefile commands
90 lines
4.1 KiB
Bash
Executable File
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}
|