62 lines
1.6 KiB
Bash
Executable File
62 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
#set -eEx
|
|
#set -o pipefail
|
|
set -x
|
|
|
|
ARTIFACTS=($(echo $1 | tr "," "\n"))
|
|
ACTION="${2:-apply}"
|
|
ARGOCD="${3:-true}"
|
|
|
|
LOCAL_DEV=1
|
|
|
|
WORKDIR=$(mktemp -p /tmp -d kubezero.XXX)
|
|
[ -z "$DEBUG" ] && trap 'rm -rf $WORKDIR' ERR EXIT
|
|
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
|
# shellcheck disable=SC1091
|
|
. "$SCRIPT_DIR"/libhelm.sh
|
|
CHARTS="$(dirname $SCRIPT_DIR)/charts"
|
|
|
|
KUBE_VERSION="$(get_kube_version)"
|
|
PLATFORM="$(get_kubezero_platform)"
|
|
|
|
if [ -z "$KUBE_VERSION" ]; then
|
|
echo "Cannot contact cluster, cannot parse version!"
|
|
exit 1
|
|
fi
|
|
|
|
### Main
|
|
get_kubezero_values $ARGOCD
|
|
|
|
# Always use embedded kubezero chart
|
|
helm template $CHARTS/kubezero -f $WORKDIR/kubezero-values.yaml --kube-version $KUBE_VERSION --name-template kubezero --version ~$KUBE_VERSION --devel --output-dir $WORKDIR
|
|
|
|
# Root KubeZero apply directly and exit
|
|
if [ ${ARTIFACTS[0]} == "kubezero" ]; then
|
|
[ -f $CHARTS/kubezero/hooks.d/pre-install.sh ] && . $CHARTS/kubezero/hooks.d/pre-install.sh
|
|
kubectl replace -f $WORKDIR/kubezero/templates $(field_manager $ARGOCD)
|
|
exit $?
|
|
|
|
# "catch all" apply all enabled modules
|
|
elif [ ${ARTIFACTS[0]} == "all" ]; then
|
|
ARTIFACTS=($(ls $WORKDIR/kubezero/templates | sed -e 's/.yaml//g'))
|
|
fi
|
|
|
|
# Delete in reverse order, continue even if errors
|
|
if [ "$ACTION" == "delete" ]; then
|
|
set +e
|
|
for (( idx=${#ARTIFACTS[@]}-1 ; idx>=0 ; idx-- )) ; do
|
|
_helm delete ${ARTIFACTS[idx]} || true
|
|
done
|
|
else
|
|
if [ "$ACTION" == "apply" -o "$ACTION" == "crds" ]; then
|
|
for t in ${ARTIFACTS[@]}; do
|
|
_helm crds $t || true
|
|
done
|
|
fi
|
|
for t in ${ARTIFACTS[@]}; do
|
|
_helm $ACTION $t || true
|
|
done
|
|
fi
|