diff --git a/scripts/install_flux.sh b/scripts/install_flux.sh index 4fee58a2d804ac9865cdaf4daa969787ad7301ee..eb78dc553ab0b2a342cd1eb549f5ac8ed551f025 100755 --- a/scripts/install_flux.sh +++ b/scripts/install_flux.sh @@ -6,20 +6,19 @@ trap 'echo ⌠exit at ${0}:${LINENO}, command was: ${BASH_COMMAND} 1>&2' ERR # # global defaults # -FLUX_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )" +FLUX_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" FLUX_KUSTOMIZATION="${FLUX_SCRIPT_DIR}/../base/flux" REGISTRY_URL=registry1.dso.mil FLUX_SECRET=private-registry WAIT_TIMEOUT=300 - # # helper functions # # script help message function help { - cat << EOF + cat <<EOF usage: $(basename "$0") <arguments> -h|--help - print this help message and exit -r|--registry-url - (optional, default: registry1.dso.mil) registry url to use for flux installation @@ -32,8 +31,7 @@ EOF # script check for existing pull secret function check_secrets { - if kubectl get secrets/"$FLUX_SECRET" -n flux-system > /dev/null 2>&1; - then + if kubectl get secrets/"$FLUX_SECRET" -n flux-system >/dev/null 2>&1; then #the secret exists FLUX_SECRET_EXISTS=0 else @@ -47,77 +45,84 @@ function check_secrets { # PARAMS="" -while (( "$#" )); do - case "$1" in - # registry username required argument - -u|--registry-username) - if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then - REGISTRY_USERNAME=$2 - shift 2 - else - echo "Error: Argument for $1 is missing" >&2 - help; exit 1 - fi - ;; - # registry password required argument - -p|--registry-password) - if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then - REGISTRY_PASSWORD=$2 - shift 2 - else - echo "Error: Argument for $1 is missing" >&2 - help; exit 1 - fi - ;; - # registry email required argument - -e|--registry-email) - if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then - REGISTRY_EMAIL=$2 - shift 2 - else - echo "Error: Argument for $1 is missing" >&2 - help; exit 1 - fi - ;; - # registry url optional argument - -r|--registry-url) - if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then - REGISTRY_URL=$2 - shift 2 - else - echo "Error: Argument for $1 is missing" >&2 - help; exit 1 - fi - ;; - # wait timeout optional argument - -w|--wait-timeout) - if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then - WAIT_TIMEOUT=$2 - shift 2 - else - echo "Error: Argument for $1 is missing" >&2 - help; exit 1 - fi - ;; - # help flag - -h|--help) - help; exit 0 - ;; - # Check if private-registry secret exists - -s|--use-existing-secret) - check_secrets; - shift - ;; - # unsupported flags - -*|--*=) - echo "Error: Unsupported flag $1" >&2 - help; exit 1 - ;; - # preserve positional arguments - *) - PARAMS="$PARAMS $1" - shift - ;; +while (("$#")); do + case "$1" in + # registry username required argument + -u | --registry-username) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + REGISTRY_USERNAME=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + help + exit 1 + fi + ;; + # registry password required argument + -p | --registry-password) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + REGISTRY_PASSWORD=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + help + exit 1 + fi + ;; + # registry email required argument + -e | --registry-email) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + REGISTRY_EMAIL=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + help + exit 1 + fi + ;; + # registry url optional argument + -r | --registry-url) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + REGISTRY_URL=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + help + exit 1 + fi + ;; + # wait timeout optional argument + -w | --wait-timeout) + if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then + WAIT_TIMEOUT=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + help + exit 1 + fi + ;; + # help flag + -h | --help) + help + exit 0 + ;; + # Check if private-registry secret exists + -s | --use-existing-secret) + check_secrets + shift + ;; + # unsupported flags + -* | --*=) + echo "Error: Unsupported flag $1" >&2 + help + exit 1 + ;; + # preserve positional arguments + *) + PARAMS="$PARAMS $1" + shift + ;; esac done @@ -126,7 +131,8 @@ if [ -z "$FLUX_SECRET_EXISTS" ] || [ "$FLUX_SECRET_EXISTS" -eq 1 ]; then # check required arguments if [ -z "$REGISTRY_USERNAME" ] || [ -z "$REGISTRY_PASSWORD" ]; then - help; exit 1 + help + exit 1 fi # debug print cli args @@ -147,9 +153,20 @@ fi # # install flux # - echo "Installing flux from kustomization" -kustomize build "$FLUX_KUSTOMIZATION" | sed "s/registry1.dso.mil/${REGISTRY_URL}/g" | kubectl apply -f - +KUBECTL_VERSION=$(kubectl version --client --short | awk -F "v" '{print $NF}') +KUBECTL_MIN_VERSION="1.21.0" + +if [ "$(printf '%s\n' "$KUBECTL_MIN_VERSION" "$KUBECTL_VERSION" | sort -V | head -n1)" = "$KUBECTL_MIN_VERSION" ]; then + kubectl kustomize "$FLUX_KUSTOMIZATION" | sed "s/registry1.dso.mil/${REGISTRY_URL}/g" | kubectl apply -f - +else + if [ command -v kustomize ] >/dev/null 2>&1; then + echo "Kustomize not found" + exit 1 + else + kustomize build "$FLUX_KUSTOMIZATION" | sed "s/registry1.dso.mil/${REGISTRY_URL}/g" | kubectl apply -f - + fi +fi # # verify flux