-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
chart_cluster_setup.sh
executable file
·72 lines (63 loc) · 2.62 KB
/
chart_cluster_setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
set -o xtrace
echo "Set ENV variables"
CLUSTER=${CLUSTER:-"minikube"}
CLUSTER_NAME=${CLUSTER_NAME:-"chart-testing"}
RELEASE_NAME=${RELEASE_NAME:-"test"}
SELENIUM_NAMESPACE=${SELENIUM_NAMESPACE:-"selenium"}
KEDA_NAMESPACE=${KEDA_NAMESPACE:-"keda"}
INGRESS_NAMESPACE=${INGRESS_NAMESPACE:-"ingress-nginx"}
SUB_PATH=${SUB_PATH:-"/selenium"}
CHART_PATH=${CHART_PATH:-"charts/selenium-grid"}
TEST_VALUES_PATH=${TEST_VALUES_PATH:-"tests/charts/ci"}
SELENIUM_GRID_HOST=${SELENIUM_GRID_HOST:-"localhost"}
SELENIUM_GRID_PORT=${SELENIUM_GRID_PORT:-"80"}
WAIT_TIMEOUT=${WAIT_TIMEOUT:-"90s"}
SKIP_CLEANUP=${SKIP_CLEANUP:-"false"} # For debugging purposes, retain the cluster after the test run
KUBERNETES_VERSION=${KUBERNETES_VERSION:-$(curl -L -s https://dl.k8s.io/release/stable.txt)}
CNI=${CNI:-"calico"} # auto, calico, cilium
CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-"docker"} # docker, containerd, cri-o
# Function to clean up for retry step on workflow
cleanup() {
if [ "${SKIP_CLEANUP}" = "false" ]; then
./tests/charts/make/chart_cluster_cleanup.sh
fi
}
# Function to be executed on command failure
on_failure() {
local exit_status=$?
echo "There is step failed with exit status $exit_status"
cleanup
exit $exit_status
}
# Trap ERR signal and call on_failure function
trap 'on_failure' ERR
# Limit the number of resources to avoid host OOM
CPUs=$(grep -c ^processor /proc/cpuinfo)
if [ "${CPUs}" -gt 1 ]; then
CPUs=$((CPUs-1))
fi
MEMORY=$(free -m | awk '/^Mem:/{print $7}')
if [ "${MEMORY}" = "" ]; then
MEMORY=$(free -m | awk '/^Mem:/{print $2}')
fi
if [ "${CLUSTER}" = "kind" ]; then
echo "Start Kind cluster"
kind create cluster --image kindest/node:${KUBERNETES_VERSION} --wait ${WAIT_TIMEOUT} --name ${CLUSTER_NAME} --config tests/charts/config/kind-cluster.yaml
elif [ "${CLUSTER}" = "minikube" ]; then
echo "Start Minikube cluster"
sudo chmod 777 /tmp
export CHANGE_MINIKUBE_NONE_USER=true
sudo -SE minikube start --vm-driver=none --cpus ${CPUs} --memory ${MEMORY} \
--kubernetes-version=${KUBERNETES_VERSION} --network-plugin=cni --cni=${CNI} --container-runtime=${CONTAINER_RUNTIME}
sudo chown -R $USER $HOME/.kube $HOME/.minikube
fi
echo "Install KEDA core on kind kubernetes cluster"
helm upgrade -i ${KEDA_NAMESPACE} -n ${KEDA_NAMESPACE} --create-namespace --set webhooks.enabled=false kedacore/keda
if [ "${CLUSTER}" = "kind" ]; then
echo "Load built local Docker Images into Kind Cluster"
image_list=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep ${NAMESPACE} | grep ${BUILD_DATE:-$VERSION})
for image in $image_list; do
kind load docker-image --name ${CLUSTER_NAME} "$image"
done
fi