chronograf/ui/cypress/local-chronograf-influxdb-e...

88 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# standard bash error handling
set -o errexit;
set -o pipefail;
set -o nounset;
# debug commands
set -x;
NO_BUILD=${1:-0}
CLEANUP_ONLY=${2:-0}
BIN_DIR="/tmp/kind"
KIND="${BIN_DIR}/kind"
CHRONO_PID="/tmp/chronograf.pid"
CWD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
RWD="$(git rev-parse --show-toplevel)"
LOG="${RWD}/out.log"
KIND_CONFIG="${RWD}/.github/workflows/resources/kind-config.yaml"
KUBE_CONFIG="${CWD}/kube-config"
# cleanup on exit (useful for running locally)
cleanup() {
"${KIND}" delete cluster >/dev/null 2>&1 || true
[[ -f ${CHRONO_PID} ]] && kill "$(cat ${CHRONO_PID})"
rm -rf "${CHRONO_PID}" "${BIN_DIR}" "${KUBE_CONFIG}" "${LOG}" >/dev/null 2>&1
}
# util to install a released kind version into ${BIN_DIR}
install_kind_release() {
mkdir -p "${BIN_DIR}"
VERSION="v0.11.1"
KIND_BINARY_URL="https://github.com/kubernetes-sigs/kind/releases/download/${VERSION}/kind-linux-amd64"
wget -O "${KIND}" "${KIND_BINARY_URL}"
chmod +x "${KIND}"
}
build_chronograf() {
make -C "${RWD}" clean
make -C "${RWD}"
nohup "${RWD}/chronograf" > "${LOG}" 2>&1 & echo $! > "${CHRONO_PID}"
sleep 5
echo -e "Chronograf status: $(curl -Isk "http://localhost:8888" | head -n 1)"
cat "${RWD}/out.log" || exit 0
}
deploy_influxdb_ent() {
# kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo add influxdata https://helm.influxdata.com/
helm repo update
helm upgrade --wait --install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.5.4 \
--set prometheus.enabled=false \
--set webhook.timeoutSeconds=30 \
--set installCRDs=true
kubectl apply -f "${RWD}/.github/workflows/resources/test-resources.yaml"
kubectl create secret generic influxdb-license --from-literal=INFLUXDB_ENTERPRISE_LICENSE_KEY="${LICENSE_KEY}"
helm upgrade --wait --install influxdb influxdata/influxdb-enterprise --namespace default \
--set-string envFromSecret=influxdb-license \
--set-string data.service.type=NodePort \
--set-string meta.service.type=NodePort \
--set data.service.nodePort=30086 \
--set meta.service.nodePort=30091
sleep 5
echo -e "InfluxDB data node status: $(curl -Isk "https://localhost:8086/ping" | head -n 1)"
}
main() {
cleanup
if [[ "${CLEANUP_ONLY}" == 0 ]]; then
LICENSE_KEY=${INFLUXDB_ENTERPRISE_LICENSE_KEY:?}
docker rm -fv kind-control-plane
install_kind_release
"${KIND}" create cluster --wait 60s --loglevel=debug --config "${KIND_CONFIG}" --kubeconfig "${KUBE_CONFIG}"
export KUBECONFIG="${KUBE_CONFIG}"
kubectl -n kube-system rollout restart deployment coredns
deploy_influxdb_ent
if [[ "${NO_BUILD}" == 0 ]]; then
build_chronograf
fi
fi
}
main