diff --git a/ci_tests/_tests_common.sh b/ci_tests/_tests_common.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a1dede3f2ef6ead5fb87e51a6bab1804262290da
--- /dev/null
+++ b/ci_tests/_tests_common.sh
@@ -0,0 +1,170 @@
+#!/usr/bin/env bash
+
+debug() {
+    >&2 echo "DEBUG: $@"
+}
+
+error() {
+    >&2 echo "ERROR: $@"
+    exit 1
+}
+
+install_rabbitmq_chart() {
+    TEST_VALUES_DIR=$1
+    ./helpers/deploy_rabbitmq.sh "${TEST_VALUES_DIR}" "${RELEASE_PREFIX}"
+}
+
+install_postgres_chart() {
+    TEST_VALUES_DIR=$1
+}
+
+install_grb_chart() {
+    TEST_VALUES_DIR=$1
+    pushd geosphere-grb/chart
+    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "../../${TEST_VALUES_DIR}/values-grb-g16.yaml"
+    helm upgrade -v 2 --install --namespace $ns -f ../../${TEST_VALUES_DIR}/values-grb-g16.yaml ${GRB_RELEASE_NAME} cspp-geo-grb/
+    popd
+}
+
+install_geo2grid_chart() {
+    TEST_VALUES_DIR=$1
+    grb_pvc=$(get_pvc_name ${GRB_RELEASE_NAME})
+    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "${TEST_VALUES_DIR}/values-geo2grid-g16-radm1.yaml"
+    sed -i "s/cspp-geo-grb/${GRB_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-geo2grid-g16-radm1.yaml"
+    ./helpers/deploy_geo2grid.sh "${TEST_VALUES_DIR}" "${RELEASE_PREFIX}" "-g16-radm1"
+}
+
+install_tile_gen_chart() {
+    TEST_VALUES_DIR=$1
+    geotiff_pvc=$(get_pvc_name ${GEO2GRID_RELEASE_NAME})
+    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "${TEST_VALUES_DIR}/values-tile-gen-g16-radm1.yaml"
+    sed -i "s/cspp-geo-geo2grid/${GEO2GRID_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-tile-gen-g16-radm1.yaml"
+    ./helpers/deploy_tile_gen.sh "${TEST_VALUES_DIR}" "${RELEASE_PREFIX}" "-g16-radm1"
+}
+
+install_mapserver_chart() {
+    TEST_VALUES_DIR=$1
+    sed -i "s/cspp-geo-geo2grid/${GEO2GRID_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-mapserver.yaml"
+    sed -i "s/geosphere-tile-gen-shapefiles/${TILEGEN_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-mapserver.yaml"
+    ./helpers/deploy_mapserver.sh "${TEST_VALUES_DIR}" "${RELEASE_PREFIX}"
+}
+
+
+install_mapcache_chart() {
+    TEST_VALUES_DIR=$1
+    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "${TEST_VALUES_DIR}/values-mapcache.yaml"
+    sed -i "s/geosphere-mapserver/${MAPSERVER_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-mapcache.yaml"
+    ./helpers/deploy_mapcache.sh "${TEST_VALUES_DIR}" "${RELEASE_PREFIX}"
+}
+
+install_client_chart() {
+    TEST_VALUES_DIR=$1
+    sed -i "s/geosphere-mapserver/${MAPSERVER_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-client.yaml"
+    sed -i "s/geosphere-mapcache/${MAPCACHE_RELEASE_NAME}/g" "${TEST_VALUES_DIR}/values-client.yaml"
+    ./helpers/deploy_client.sh "${TEST_VALUES_DIR}" "${RELEASE_PREFIX}"
+}
+
+get_pod_name() {
+    release_name="$1"
+    kubectl -n $ns get pods --selector=app.kubernetes.io/instance=${release_name} -o name
+}
+
+get_pvc_name() {
+    release_name="$1"
+    kubectl -n $ns get pvc --selector=app.kubernetes.io/instance=${release_name} -o name
+}
+
+wait_for_pod() {
+    pod_name="$1"
+    debug "Waiting for ${pod_name} pod to be ready..."
+    kubectl -n $ns wait --for=condition=Ready ${pod_name} --timeout=120s
+}
+
+run_grb_checks() {
+    count=0
+    while true; do
+      num_files=$(kubectl exec -n $ns ${GRB_POD_NAME} -c cspp-geo-grb-notifier -- ls -1 /dst | wc -l || echo 0)
+      let count=count+1
+      if [[ $num_files -gt 16 ]]; then
+          debug "Got at least 16 files ($num_files)"
+          break
+      fi
+      if [[ $count -gt 10 ]]; then
+          error "Took too long for GRB to produce files ($num_files so far)"
+      fi
+      debug "Found $num_files files, waiting for more..."
+      sleep 12
+    done
+}
+
+run_geo2grid_checks() {
+    count=0
+    while true; do
+      num_files=$(kubectl exec -n $ns ${GEO2GRID_POD_NAME} -- ls -1 /dst/geotiffs/g16/abi/radm1/ | wc -l || echo 0)
+      let count=count+1
+      if [[ $num_files -gt 16 ]]; then
+          debug "Got at least 16 files ($num_files)"
+          break
+      fi
+      if [[ $count -gt 10 ]]; then
+          error "Took too long for Geo2Grid to produce files ($num_files so far)"
+      fi
+      debug "Found $num_files files, waiting for more..."
+      sleep 12
+    done
+}
+
+run_tile_gen_checks() {
+    count=0
+    while true; do
+      num_files=$(kubectl exec -n $ns ${TILEGEN_POD_NAME} -- ls -1 /dst/tiles/g16/abi/radm1/C01/ | wc -l || echo 0)
+      let count=count+1
+      if [[ $num_files -gt 3 ]]; then
+          debug "Got at least 3 files ($num_files)"
+          break
+      fi
+      if [[ $count -gt 10 ]]; then
+          error "Took too long for tile generation to produce its shape file"
+      fi
+      debug "Found $num_files files, waiting for more..."
+      sleep 12
+    done
+    return 0
+}
+
+run_mapserver_checks() {
+    # Ex: ["2020-11-24T22:23:19", "2020...
+    # Get the first element without quotes
+    first_time=$(curl -sS "http://${MAPSERVER_RELEASE_NAME}.${ns}/wms_times/g16/abi/radm1/C01" | head -c 21 | tail -c 19)
+    debug "MapServer first time: ${first_time}"
+    # if there aren't any times then we failed
+    if [ $first_time == "" ]; then
+        return 1
+    else
+        return 0
+    fi
+}
+
+run_mapcache_checks() {
+    first_time=$(curl -sS "http://${MAPSERVER_RELEASE_NAME}.${ns}/wms_times/g16/abi/radm1/C01" | head -c 21 | tail -c 19)
+    debug "MapServer first time: ${first_time}"
+    curl "http://${MAPCACHE_RELEASE_NAME}.${ns}/mapcache/wmts/?TIME=${first_time}Z&TILEMATRIXSET=grid_g16_abi_radf_1000m&LAYER=g16_abi_radf_l1b_C01&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=0&TileCol=0&TileRow=0" >/dev/null
+}
+
+run_client_checks() {
+    # just try to load the webpage at all
+    curl "http://${CLIENT_RELEASE_NAME}.${ns}/" >/dev/null
+}
+
+check_and_uninstall() {
+    ns="$1"
+    release_name="$2"
+    if [[ -z "${release_name}" ]]; then
+        # the chart was never created
+        debug "Release doesn't exist"
+        return
+    fi
+    debug "Uninstalling ${release_name}"
+    helm uninstall -n "${ns}" "${release_name}" || (debug "Could not uninstall chart $release_name" && return 1)
+}
+
diff --git a/ci_tests/values-client.yaml b/ci_tests/basic_grb/values-client.yaml
similarity index 100%
rename from ci_tests/values-client.yaml
rename to ci_tests/basic_grb/values-client.yaml
diff --git a/ci_tests/values-geo2grid-g16-radm1.yaml b/ci_tests/basic_grb/values-geo2grid-g16-radm1.yaml
similarity index 100%
rename from ci_tests/values-geo2grid-g16-radm1.yaml
rename to ci_tests/basic_grb/values-geo2grid-g16-radm1.yaml
diff --git a/ci_tests/values-geosphere-rabbit.yaml b/ci_tests/basic_grb/values-geosphere-rabbit.yaml
similarity index 100%
rename from ci_tests/values-geosphere-rabbit.yaml
rename to ci_tests/basic_grb/values-geosphere-rabbit.yaml
diff --git a/ci_tests/values-grb-g16.yaml b/ci_tests/basic_grb/values-grb-g16.yaml
similarity index 100%
rename from ci_tests/values-grb-g16.yaml
rename to ci_tests/basic_grb/values-grb-g16.yaml
diff --git a/ci_tests/values-mapcache.yaml b/ci_tests/basic_grb/values-mapcache.yaml
similarity index 100%
rename from ci_tests/values-mapcache.yaml
rename to ci_tests/basic_grb/values-mapcache.yaml
diff --git a/ci_tests/values-mapserver.yaml b/ci_tests/basic_grb/values-mapserver.yaml
similarity index 100%
rename from ci_tests/values-mapserver.yaml
rename to ci_tests/basic_grb/values-mapserver.yaml
diff --git a/ci_tests/values-tile-gen-g16-radm1.yaml b/ci_tests/basic_grb/values-tile-gen-g16-radm1.yaml
similarity index 100%
rename from ci_tests/values-tile-gen-g16-radm1.yaml
rename to ci_tests/basic_grb/values-tile-gen-g16-radm1.yaml
diff --git a/ci_tests/cleanup_basic_grb_test.sh b/ci_tests/cleanup_basic_grb_test.sh
index 7ab52083acf2223ec7a3d98688c71d0826d700db..64710db88bae5b077a7472d7a76c45e79b2a8828 100755
--- a/ci_tests/cleanup_basic_grb_test.sh
+++ b/ci_tests/cleanup_basic_grb_test.sh
@@ -1,25 +1,6 @@
 #!/usr/bin/env bash
 
-debug() {
-    >&2 echo "DEBUG: $@"
-}
-
-error() {
-    >&2 echo "ERROR: $@"
-    exit 1
-}
-
-check_and_uninstall() {
-    ns="$1"
-    release_name="$2"
-    if [[ -z "${release_name}" ]]; then
-        # the chart was never created
-        debug "Release doesn't exist"
-        return
-    fi
-    debug "Uninstalling ${release_name}"
-    helm uninstall -n "${ns}" "${release_name}" || (debug "Could not uninstall chart $release_name" && return 1)
-}
+source ci_tests/_tests_common.sh
 
 ns=$(./helpers/get_namespace.sh)
 source ./ci_tests/get_release_names.sh
diff --git a/ci_tests/cleanup_basic_postgres_test.sh b/ci_tests/cleanup_basic_postgres_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7a5b6d795458d02f67046840258d4aeb1f87016d
--- /dev/null
+++ b/ci_tests/cleanup_basic_postgres_test.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+source ci_tests/_tests_common.sh
+ns=$(./helpers/get_namespace.sh)
+source ./ci_tests/get_release_names.sh
+EXIT_STATUS=0
+#check_and_uninstall "${ns}" "${GRB_RELEASE_NAME}" || EXIT_STATUS=$?
+#check_and_uninstall "${ns}" "${RABBITMQ_RELEASE_NAME}" || EXIT_STATUS=$?
+#check_and_uninstall "${ns}" "${GEO2GRID_RELEASE_NAME}" || EXIT_STATUS=$?
+#check_and_uninstall "${ns}" "${TILEGEN_RELEASE_NAME}" || EXIT_STATUS=$?
+#check_and_uninstall "${ns}" "${MAPSERVER_RELEASE_NAME}" || EXIT_STATUS=$?
+#check_and_uninstall "${ns}" "${MAPCACHE_RELEASE_NAME}" || EXIT_STATUS=$?
+#check_and_uninstall "${ns}" "${CLIENT_RELEASE_NAME}" || EXIT_STATUS=$?
+exit $EXIT_STATUS
diff --git a/ci_tests/gitlab-ci.yaml b/ci_tests/gitlab-ci.yaml
index b726c5a8d7b7b5db00cca324ae1cb45ea98001d2..f435e1d3d940d73d490ddfb2e697490167c65216 100644
--- a/ci_tests/gitlab-ci.yaml
+++ b/ci_tests/gitlab-ci.yaml
@@ -12,8 +12,11 @@ test_basic_grb:
   stage: test
   script:
     - ./ci_tests/run_basic_grb_test.sh
+    # run, but don't care about failure
+    - ./ci_tests/run_basic_postgres_test.sh || true
   after_script:
     - ./ci_tests/cleanup_basic_grb_test.sh
+    - ./ci_tests/cleanup_basic_postgres_test.sh
   dependencies:
     - get_chart_grb
     - get_chart_geo2grid
@@ -23,3 +26,22 @@ test_basic_grb:
     - get_chart_client
   rules:
     - when: on_success
+
+test_basic_postgres:
+  extends: .helm_based_job
+  stage: test
+  script:
+    # run, but don't care about failure
+    - ./ci_tests/run_basic_postgres_test.sh || true
+  after_script:
+    - ./ci_tests/cleanup_basic_postgres_test.sh
+  dependencies:
+    - get_chart_grb
+    - get_chart_geo2grid
+    - get_chart_tilegen
+    - get_chart_mapserver
+    - get_chart_mapcache
+    - get_chart_client
+  allow_failure: true
+  rules:
+    - when: on_success
diff --git a/ci_tests/run_basic_grb_test.sh b/ci_tests/run_basic_grb_test.sh
index 8d5d7fa891530b08c85450e30616147a77e087c2..6013b6f0e83197c84d4b16dce61991e0f352010d 100755
--- a/ci_tests/run_basic_grb_test.sh
+++ b/ci_tests/run_basic_grb_test.sh
@@ -1,150 +1,21 @@
 #!/usr/bin/env bash
 
-debug() {
-    >&2 echo "DEBUG: $@"
-}
-
-error() {
-    >&2 echo "ERROR: $@"
-    exit 1
-}
-
-install_charts() {
-    # use the production rabbitmq config
-    ./helpers/deploy_rabbitmq.sh "ci_tests" "${RELEASE_PREFIX}"
-
-    # GRB
-    pushd geosphere-grb/chart
-    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "../../ci_tests/values-grb-g16.yaml"
-    helm upgrade -v 2 --install --namespace $ns -f ../../ci_tests/values-grb-g16.yaml ${GRB_RELEASE_NAME} cspp-geo-grb/
-    popd
-
-    # Geo2Grid
-    grb_pvc=$(get_pvc_name ${GRB_RELEASE_NAME})
-    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "ci_tests/values-geo2grid-g16-radm1.yaml"
-    sed -i "s/cspp-geo-grb/${GRB_RELEASE_NAME}/g" "ci_tests/values-geo2grid-g16-radm1.yaml"
-    ./helpers/deploy_geo2grid.sh "ci_tests" "${RELEASE_PREFIX}" "-g16-radm1"
-
-    # Tile Gen
-    geotiff_pvc=$(get_pvc_name ${GEO2GRID_RELEASE_NAME})
-    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "ci_tests/values-tile-gen-g16-radm1.yaml"
-    sed -i "s/cspp-geo-geo2grid/${GEO2GRID_RELEASE_NAME}/g" "ci_tests/values-tile-gen-g16-radm1.yaml"
-    ./helpers/deploy_tile_gen.sh "ci_tests" "${RELEASE_PREFIX}" "-g16-radm1"
-
-    # MapServer
-    sed -i "s/cspp-geo-geo2grid/${GEO2GRID_RELEASE_NAME}/g" "ci_tests/values-mapserver.yaml"
-    sed -i "s/geosphere-tile-gen-shapefiles/${TILEGEN_RELEASE_NAME}/g" "ci_tests/values-mapserver.yaml"
-    ./helpers/deploy_mapserver.sh "ci_tests" "${RELEASE_PREFIX}"
-
-    # MapCache
-    sed -i "s/geosphere-rabbit-rabbitmq/${RABBITMQ_SERVICE_NAME}/g" "ci_tests/values-mapcache.yaml"
-    sed -i "s/geosphere-mapserver/${MAPSERVER_RELEASE_NAME}/g" "ci_tests/values-mapcache.yaml"
-    ./helpers/deploy_mapcache.sh "ci_tests" "${RELEASE_PREFIX}"
-
-    # Client
-    sed -i "s/geosphere-mapserver/${MAPSERVER_RELEASE_NAME}/g" "ci_tests/values-client.yaml"
-    sed -i "s/geosphere-mapcache/${MAPCACHE_RELEASE_NAME}/g" "ci_tests/values-client.yaml"
-    ./helpers/deploy_client.sh "ci_tests" "${RELEASE_PREFIX}"
-
+install_basic_grb_charts() {
+    install_rabbitmq_chart $1
+    install_grb_chart $1
+    install_geo2grid_chart $1
+    install_tile_gen_chart $1
+    install_mapserver_chart $1
+    install_mapcache_chart $1
+    install_client_chart $1
     debug "$(helm -n $ns list)"
 }
 
-get_pod_name() {
-    release_name="$1"
-    kubectl -n $ns get pods --selector=app.kubernetes.io/instance=${release_name} -o name
-}
-
-get_pvc_name() {
-    release_name="$1"
-    kubectl -n $ns get pvc --selector=app.kubernetes.io/instance=${release_name} -o name
-}
-
-wait_for_pod() {
-    pod_name="$1"
-    debug "Waiting for ${pod_name} pod to be ready..."
-    kubectl -n $ns wait --for=condition=Ready ${pod_name} --timeout=120s
-}
-
-run_grb_checks() {
-    count=0
-    while true; do
-      num_files=$(kubectl exec -n $ns ${GRB_POD_NAME} -c cspp-geo-grb-notifier -- ls -1 /dst | wc -l || echo 0)
-      let count=count+1
-      if [[ $num_files -gt 16 ]]; then
-          debug "Got at least 16 files ($num_files)"
-          break
-      fi
-      if [[ $count -gt 10 ]]; then
-          error "Took too long for GRB to produce files ($num_files so far)"
-      fi
-      debug "Found $num_files files, waiting for more..."
-      sleep 12
-    done
-}
-
-run_geo2grid_checks() {
-    count=0
-    while true; do
-      num_files=$(kubectl exec -n $ns ${GEO2GRID_POD_NAME} -- ls -1 /dst/geotiffs/g16/abi/radm1/ | wc -l || echo 0)
-      let count=count+1
-      if [[ $num_files -gt 16 ]]; then
-          debug "Got at least 16 files ($num_files)"
-          break
-      fi
-      if [[ $count -gt 10 ]]; then
-          error "Took too long for Geo2Grid to produce files ($num_files so far)"
-      fi
-      debug "Found $num_files files, waiting for more..."
-      sleep 12
-    done
-}
-
-run_tile_gen_checks() {
-    count=0
-    while true; do
-      num_files=$(kubectl exec -n $ns ${TILEGEN_POD_NAME} -- ls -1 /dst/tiles/g16/abi/radm1/C01/ | wc -l || echo 0)
-      let count=count+1
-      if [[ $num_files -gt 3 ]]; then
-          debug "Got at least 3 files ($num_files)"
-          break
-      fi
-      if [[ $count -gt 10 ]]; then
-          error "Took too long for tile generation to produce its shape file"
-      fi
-      debug "Found $num_files files, waiting for more..."
-      sleep 12
-    done
-    return 0
-}
-
-run_mapserver_checks() {
-    # Ex: ["2020-11-24T22:23:19", "2020...
-    # Get the first element without quotes
-    first_time=$(curl -sS "http://${MAPSERVER_RELEASE_NAME}.${ns}/wms_times/g16/abi/radm1/C01" | head -c 21 | tail -c 19)
-    debug "MapServer first time: ${first_time}"
-    # if there aren't any times then we failed
-    if [ $first_time == "" ]; then
-        return 1
-    else
-        return 0
-    fi
-}
-
-run_mapcache_checks() {
-    first_time=$(curl -sS "http://${MAPSERVER_RELEASE_NAME}.${ns}/wms_times/g16/abi/radm1/C01" | head -c 21 | tail -c 19)
-    debug "MapServer first time: ${first_time}"
-    curl "http://${MAPCACHE_RELEASE_NAME}.${ns}/mapcache/wmts/?TIME=${first_time}Z&TILEMATRIXSET=grid_g16_abi_radf_1000m&LAYER=g16_abi_radf_l1b_C01&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=0&TileCol=0&TileRow=0" >/dev/null
-}
-
-run_client_checks() {
-    # just try to load the webpage at all
-    curl "http://${CLIENT_RELEASE_NAME}.${ns}/" >/dev/null
-}
 set -e
-
+source ci_tests/_tests_common.sh
 ns=$(./helpers/get_namespace.sh)
 source ci_tests/get_release_names.sh
-install_charts
+install_basic_grb_charts "ci_tests/basic_grb"
 
 # give kubernetes a bit to create the resources
 debug "Waiting for Kubernetes to deploy and schedule components..."
diff --git a/ci_tests/run_basic_postgres_test.sh b/ci_tests/run_basic_postgres_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..20d602bdd3703e32d2239a764682f2913fe9c10c
--- /dev/null
+++ b/ci_tests/run_basic_postgres_test.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+
diff --git a/helpers/build_image.yaml b/helpers/build_image.yaml
index 9264f0e14a7158c350a8f2e98c0cd242a4706be3..89fe09cc68f341292de177371043f49e3d98481a 100644
--- a/helpers/build_image.yaml
+++ b/helpers/build_image.yaml
@@ -34,4 +34,6 @@
         $test_script $image_url $docker_tag;
       done
     - docker push ${image_url}:${docker_tag}
-    - docker push ${image_url}:latest
+    - if [[ $CI_COMMIT_BRANCH == "master" ]]; then
+        docker push ${image_url}:latest;
+      fi
diff --git a/helpers/deploy_mapserver_postgres.sh b/helpers/deploy_mapserver_postgres.sh
new file mode 100755
index 0000000000000000000000000000000000000000..89f5d71ea837894d3b702986e6b4afa3818faa33
--- /dev/null
+++ b/helpers/deploy_mapserver_postgres.sh
@@ -0,0 +1,52 @@
+#!/usr/bin/env bash
+
+set -e
+
+if [ $# -ne 1 ] && [ $# -ne 2 ]; then
+    echo "Usage: ./helpers/deploy_rabbitmq.sh <values_base_dir> [<release_prefix>]"
+    exit 1
+fi
+
+# ci_geosphere-test
+values_base="$1"
+
+# Prefix Example: testing-YYYYMMDD-
+if [[ $# -eq 1 ]]; then
+    release_prefix=""
+else
+    release_prefix="$2"
+fi
+
+
+ns=$(./helpers/get_namespace.sh)
+# get password from any previous installation
+# if we don't do this the password will get out of sync
+# WARNING: If you can't figure out why the password isn't working and you
+#          can't authenticate the user, double check that the PVC for rabbitmq
+#          is deleted. This is storing the old password and may be messing
+#          things up.
+# Test user authentication by logging in to the rabbitmq pod and running:
+#   rabbitmqctl authenticate_user user <password>
+# where password is accessed from the kubectl secret:
+#   kubectl get secret --namespace geosphere geosphere-rabbit-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode
+sec_info=$(kubectl get secret --namespace $ns geosphere-rabbit-rabbitmq || echo "")
+echo $sec_info
+auth_sec="geosphere-rabbit-rabbitmq"
+if [[ "$sec_info" != "" ]]; then
+    pw=$(kubectl get secret --namespace $ns $auth_sec -o jsonpath="{.data.rabbitmq-password}" | base64 -d);
+    ec=$(kubectl get secret --namespace $ns $auth_sec -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 -d);
+    EXTRA_ARGS="--set auth.password=$pw --set auth.erlangCookie=$ec";
+fi
+echo "Adding extra arguments: $EXTRA_ARGS"
+# install third-party rabbitmq server
+helm repo add bitnami "https://charts.bitnami.com/bitnami"
+
+release_name="${release_prefix}geosphere-rabbit"
+helm upgrade -v 2 --install -f ${values_base}/values-geosphere-rabbit.yaml $EXTRA_ARGS --namespace $ns "${release_name}" bitnami/rabbitmq
+# do a little waiting for the rabbitmq pod to be ready so future stages
+# don't fail to communicate with it
+echo "Start waiting for rabbitmq: $(date +%Y%m%dT%H%M%S)"
+kubectl wait -n $ns pod/"${release_name}-rabbitmq-0" --timeout 120s --for=condition=Ready
+status=$?
+echo "Done waiting for rabbitmq: $(date +%Y%m%dT%H%M%S) : $status"
+exit $status