mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-31 10:22:00 +08:00
148 lines
5.3 KiB
Bash
148 lines
5.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -eEu -o functrace
|
|
script=$0
|
|
|
|
function clean() {
|
|
EXIT_CODE=0
|
|
kubectl get ns ${HT_KUBE_NAMESPACE} ${KUBE_FLAGS} >/dev/null 2>&1 || EXIT_CODE=$?
|
|
if [ ${EXIT_CODE} != 0 ]; then
|
|
echo "[ERROR] Couldn't find namespace to uninstall. namespace: ${HT_KUBE_NAMESPACE}, context: ${HT_KUBE_CONTEXT}"
|
|
exit 1
|
|
fi
|
|
|
|
EXIT_CODE=0
|
|
helm get all hypertrace-platform-services ${HELM_FLAGS} >/dev/null 2>&1 || EXIT_CODE=$?
|
|
if [ ${EXIT_CODE} == 0 ]; then
|
|
echo "[INFO] found existing platform services deployment. running helm uninstall. release: 'hypertrace-platform-services'"
|
|
helm uninstall hypertrace-platform-services ${HELM_FLAGS}
|
|
else
|
|
echo "[INFO] Couldn't find helm release 'hypertrace-platform-services'"
|
|
fi
|
|
|
|
EXIT_CODE=0
|
|
helm get all hypertrace-data-services ${HELM_FLAGS} >/dev/null 2>&1 || EXIT_CODE=$?
|
|
if [ ${EXIT_CODE} == 0 ]; then
|
|
echo "[INFO] found existing data services deployment. running helm uninstall. release: 'hypertrace-data-services'"
|
|
helm uninstall hypertrace-data-services ${HELM_FLAGS}
|
|
else
|
|
echo "[INFO] Couldn't find helm release 'hypertrace-data-services'"
|
|
fi
|
|
echo "[INFO] We are clean! good to go!"
|
|
}
|
|
|
|
error_report() {
|
|
local retval=$?
|
|
echo "${script}: Error at line#: $1, command: $2, error code: ${retval}"
|
|
exit ${retval}
|
|
}
|
|
|
|
trap 'error_report ${LINENO} ${BASH_COMMAND}' ERR
|
|
|
|
function usage() {
|
|
echo "usage: $script {install|uninstall} [option]"
|
|
echo " "
|
|
echo "available options:"
|
|
echo " "
|
|
echo "--clean removes previous deployments of Hypertrace and do clean install"
|
|
|
|
exit 1
|
|
}
|
|
|
|
HYPERTRACE_HOME="`dirname \"$0\"`"
|
|
HYPERTRACE_HOME="`( cd \"${HYPERTRACE_HOME}\" && pwd )`" # absolutized and normalized
|
|
|
|
HYPERTRACE_CONFIG=${HYPERTRACE_HOME}/config/hypertrace.properties
|
|
|
|
if [ ! -f "${HYPERTRACE_CONFIG}" ]; then
|
|
echo "Configuration file not found: '${HYPERTRACE_CONFIG}'"
|
|
fi
|
|
source ${HYPERTRACE_CONFIG}
|
|
|
|
LOG_DIR=${HYPERTRACE_HOME}/logs
|
|
LOG_FILE=hypertrace.log
|
|
mkdir -p ${LOG_DIR}
|
|
|
|
if [ x${HT_KUBE_CONTEXT} == "x" ]; then
|
|
HT_KUBE_CONTEXT="$(kubectl config current-context)"
|
|
fi
|
|
|
|
HELM_FLAGS="--kube-context=${HT_KUBE_CONTEXT} --namespace=${HT_KUBE_NAMESPACE} --log-dir=${LOG_DIR} --log-file=${LOG_FILE} --log-file-max-size=16 --alsologtostderr=true --logtostderr=false"
|
|
KUBE_FLAGS="--context=${HT_KUBE_CONTEXT} --namespace=${HT_KUBE_NAMESPACE} --log-dir=${LOG_DIR} --log-file=${LOG_FILE} --log-file-max-size=16 --alsologtostderr=true --logtostderr=false"
|
|
|
|
|
|
if [[ "$HT_ENABLE_DEBUG" == "true" ]]; then
|
|
HELM_FLAGS="$HELM_FLAGS --debug --v=4"
|
|
KUBE_FLAGS="$KUBE_FLAGS --v=4"
|
|
fi
|
|
|
|
if [ "$#" -gt 1 ]; then
|
|
if [[ $2 == "--clean" ]]; then
|
|
clean
|
|
else
|
|
usage
|
|
fi
|
|
elif [ "$#" -ne 1 ]; then
|
|
echo "[ERROR] Illegal number of parameters"
|
|
echo "-------------------------------------"
|
|
usage
|
|
fi
|
|
|
|
|
|
subcommand=$1; shift
|
|
|
|
case "$subcommand" in
|
|
install)
|
|
EXIT_CODE=0;
|
|
|
|
# namespace - create when it doesn't exists. ignore, otherwise.
|
|
kubectl get ns ${HT_KUBE_NAMESPACE} ${KUBE_FLAGS} >/dev/null 2>&1 || EXIT_CODE=$?
|
|
if [ ${EXIT_CODE} == 0 ]; then
|
|
echo "[WARN] Skipping namespace creation. Namespace already exists. namespace: ${HT_KUBE_NAMESPACE}, context: ${HT_KUBE_CONTEXT}"
|
|
else
|
|
echo "[INFO] Creating namespace. namespace: ${HT_KUBE_NAMESPACE}, context: ${HT_KUBE_CONTEXT}"
|
|
kubectl create ns ${HT_KUBE_NAMESPACE} ${KUBE_FLAGS}
|
|
fi
|
|
|
|
|
|
echo "[INFO] cleaning up any helm temporary working directory"
|
|
rm -rf ${HYPERTRACE_HOME}/data-services/charts
|
|
rm -rf ${HYPERTRACE_HOME}/data-services/tmpcharts
|
|
rm -rf ${HYPERTRACE_HOME}/data-services/Chart.lock
|
|
rm -rf ${HYPERTRACE_HOME}/platform-services/charts
|
|
rm -rf ${HYPERTRACE_HOME}/platform-services/tmpcharts
|
|
rm -rf ${HYPERTRACE_HOME}/platform-services/Chart.lock
|
|
|
|
echo "[INFO] installing hypertrace data services. namespace: ${HT_KUBE_NAMESPACE}, context: ${HT_KUBE_CONTEXT}"
|
|
helm dependency update ${HYPERTRACE_HOME}/data-services ${HELM_FLAGS}
|
|
helm upgrade hypertrace-data-services ${HYPERTRACE_HOME}/data-services -f ${HYPERTRACE_HOME}/data-services/values.yaml -f ${HYPERTRACE_HOME}/clusters/$HT_PROFILE/values.yaml --install --wait ${HELM_FLAGS} --timeout ${HT_INSTALL_TIMEOUT}m --set htEnv=${HT_ENV}
|
|
|
|
echo "[INFO] installing hypertrace platform services. namespace: ${HT_KUBE_NAMESPACE}, context: ${HT_KUBE_CONTEXT}"
|
|
helm dependency update ${HYPERTRACE_HOME}/platform-services ${HELM_FLAGS}
|
|
helm upgrade hypertrace-platform-services ${HYPERTRACE_HOME}/platform-services -f ${HYPERTRACE_HOME}/platform-services/values.yaml -f ${HYPERTRACE_HOME}/clusters/$HT_PROFILE/values.yaml --install ${HELM_FLAGS} --timeout ${HT_INSTALL_TIMEOUT}m --set htEnv=${HT_ENV}
|
|
echo "[INFO] Hypertrace installation completed"
|
|
;;
|
|
|
|
uninstall)
|
|
echo "[INFO] Uninstalling Hypertrace deletes the hypertrace namespace and deletes any data stored."
|
|
echo "Choose an option to continue"
|
|
|
|
select yn in "Yes" "No"; do
|
|
case $yn in
|
|
Yes )
|
|
clean
|
|
kubectl delete ns ${HT_KUBE_NAMESPACE} ${KUBE_FLAGS}
|
|
echo "[INFO] Uninstall successful."
|
|
break;;
|
|
|
|
No )
|
|
echo "[INFO] Uninstall cancelled."
|
|
exit;;
|
|
esac
|
|
done
|
|
;;
|
|
*)
|
|
echo "[ERROR] Unknown command: ${subcommand}"
|
|
usage
|
|
;;
|
|
esac |