diff --git a/scripts/install_flux.sh b/scripts/install_flux.sh index 446add64d59c6bb7b1a91e4718bdc9017177cc99..4fee58a2d804ac9865cdaf4daa969787ad7301ee 100755 --- a/scripts/install_flux.sh +++ b/scripts/install_flux.sh @@ -21,14 +21,27 @@ WAIT_TIMEOUT=300 function help { 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 --u|--registry-username - (required) registry username to use for flux installation --p|--registry-password - (required) registry password to use for flux installation --w|--wait-timeout - (optional, default: 120) how long to wait; in seconds, for each key flux resource component +-h|--help - print this help message and exit +-r|--registry-url - (optional, default: registry1.dso.mil) registry url to use for flux installation +-s|--use-existing-secret - (optional) use existing private-registry secret +-u|--registry-username - (required) registry username to use for flux installation +-p|--registry-password - (required) registry password to use for flux installation +-w|--wait-timeout - (optional, default: 120) how long to wait; in seconds, for each key flux resource component EOF } +# script check for existing pull secret +function check_secrets { + if kubectl get secrets/"$FLUX_SECRET" -n flux-system > /dev/null 2>&1; + then + #the secret exists + FLUX_SECRET_EXISTS=0 + else + #the secret does not exist + FLUX_SECRET_EXISTS=1 + fi +} + # # cli parsing # @@ -90,6 +103,11 @@ while (( "$#" )); do -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 @@ -103,31 +121,33 @@ while (( "$#" )); do esac done -# check required arguments -if [ -z "$REGISTRY_USERNAME" ] || [ -z "$REGISTRY_PASSWORD" ]; then - help; exit 1 -fi +# check if secret exists +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 + fi -# debug print cli args -echo "REGISTRY_URL: $REGISTRY_URL" -echo "REGISTRY_USERNAME: $REGISTRY_USERNAME" + # debug print cli args + echo "REGISTRY_URL: $REGISTRY_URL" + echo "REGISTRY_USERNAME: $REGISTRY_USERNAME" + kubectl create namespace flux-system || true + + echo "Creating secret $FLUX_SECRET in namespace flux-system" + kubectl create secret docker-registry "$FLUX_SECRET" -n flux-system \ + --docker-server="$REGISTRY_URL" \ + --docker-username="$REGISTRY_USERNAME" \ + --docker-password="$REGISTRY_PASSWORD" \ + --docker-email="$REGISTRY_EMAIL" \ + --dry-run=client -o yaml | kubectl apply -n flux-system -f - +fi # # install flux # -kubectl create namespace flux-system || true - - -echo "Creating secret $FLUX_SECRET in namespace flux-system" -kubectl create secret docker-registry "$FLUX_SECRET" -n flux-system \ - --docker-server="$REGISTRY_URL" \ - --docker-username="$REGISTRY_USERNAME" \ - --docker-password="$REGISTRY_PASSWORD" \ - --docker-email="$REGISTRY_EMAIL" \ - --dry-run=client -o yaml | kubectl apply -n flux-system -f - - echo "Installing flux from kustomization" kustomize build "$FLUX_KUSTOMIZATION" | sed "s/registry1.dso.mil/${REGISTRY_URL}/g" | kubectl apply -f -