VILLASweb-backend-go/k8s_test.sh

100 lines
3.0 KiB
Bash

#!/bin/bash
set -e
NS=${NS:-villas}
MK="minikube"
KCTL="kubectl -n${NS}"
HELM="helm -n${NS}"
# CHART="villas"
CHART="~/workspace/rwth/acs/public/catalogue/charts/villas"
CONFIG=$(mktemp)
NAME="villas"
function cleanup() {
kill $PF1 $PF2 $PF3
wait $PF1 $PF2 $PF3
rm ${CONFIG}
echo "Goodbye"
}
trap cleanup EXIT
if [ -n "${USE_MINIKUBE}" ]; then
MK_START_OPTS="--addons=ingress"
if [ $(uname -s) == Darwin ]; then
# https://github.com/kubernetes/minikube/issues/7332
MK_START_OPTS+="--vm=true"
fi
${MK} start ${MK_START_OPTS}
kubectl -n kube-system expose deployment ingress-nginx-controller --type=LoadBalancer || true
IP=$(minikube ip)
PORT=$(kubectl -n kube-system get service ingress-nginx-controller --output='jsonpath={.spec.ports[0].nodePort}')
# Add pseudo hostname to /etc/hosts
echo "Please provide your root password for modifiying /etc/hosts"
sudo sed -in "/^${IP}.*/d" /etc/hosts
echo "${IP} minikube" | sudo tee -a /etc/hosts
HELM_OPTS="--set web.backend.enabled=false \
--set web.backend.external.ip=${IP} \
--set web.backend.external.port=4000 \
--set web.admin.password=admin \
--set ingress.host=minikube"
# Check if chart has already been deployed before
if helm get values villas > /dev/null; then
RABBITMQ_ERLANG_COOKIE=$(kubectl get secret --namespace default villas-broker -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 --decode)
RABBITMQ_PASSWORD=$(kubectl get secret --namespace default villas-broker -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)
HELM_OPTS+=" --set broker.auth.password=${RABBITMQ_PASSWORD} --set broker.auth.erlangCookie=${RABBITMQ_ERLANG_COOKIE}"
fi
${HELM} upgrade \
${HELM_OPTS} \
--install \
--create-namespace \
--wait \
--repo https://packages.fein-aachen.org/helm/charts \
${NAME} ${CHART}
fi
# Get backend config from cluster
${KCTL} get cm ${NAME}-web -o 'jsonpath={.data.config\.yaml}' > ${CONFIG}
# Enable access of backend to db, broker and s3
export DB_HOST=localhost
export DB_PASS=$(${KCTL} get secret ${NAME}-database -o 'jsonpath={.data.postgresql-password}' | base64 -d)
export AMQP_HOST=localhost
export AMQP_PASS=$(${KCTL} get secret ${NAME}-broker -o 'jsonpath={.data.rabbitmq-password}' | base64 -d)
export AWS_ACCESS_KEY_ID=$(${KCTL} get secret ${NAME}-s3 -o 'jsonpath={.data.accesskey}' | base64 -d)
export AWS_SECRET_ACCESS_KEY=$(${KCTL} get secret ${NAME}-s3 -o 'jsonpath={.data.secretkey}' | base64 -d)
# Setup port forwards for backend
if [ -n "${USE_EXTERNAL_POSTGRESQL}" ]; then
kubectl -n postgresql port-forward svc/postgresql 5432:5432 & PF1=$!
else
${KCTL} port-forward svc/${NAME}-database 5432:5432 & PF1=$!
fi
${KCTL} port-forward svc/${NAME}-broker 5672:5672 & PF2=$!
sleep 2
if [ -n "${USE_MINIKUBE}" ]; then
# python -mwebbrowser http://minikube:${PORT}
echo
echo "==========================================="
echo "Access VILLASweb at http://minikube:${PORT}"
echo "==========================================="
echo
fi
go run start.go -config ${CONFIG}