-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathmain.sh
executable file
·136 lines (110 loc) · 3.01 KB
/
main.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/usr/bin/env bash
set -e
MINIKUBE_VERSION=${MINIKUBE_VERSION:-"v1.19.0"}
KUBE_VERSION=${KUBE_VERSION:-"v1.20.0"}
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DISTRO=$(uname -s | tr '[:upper:]' '[:lower:]')
function kubectl-install()
{
if [[ "${KUBE_VERSION}" == 'latest' ]]; then
KUBE_VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
fi
# Download kubectl
curl -L -o kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/$DISTRO/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
mkdir -p ${HOME}/.kube
touch ${HOME}/.kube/config
}
function minikube-install()
{
# Download minikube
curl -L -o minikube https://storage.googleapis.com/minikube/releases/${MINIKUBE_VERSION}/minikube-$DISTRO-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/
}
function minikube-run()
{
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
export KUBECONFIG=$HOME/.kube/config
sudo -E minikube start --vm-driver=none --cpus 2 --memory 3062 --kubernetes-version=${KUBE_VERSION}
# this for loop waits until kubectl can access the api server that Minikube has created
for i in {1..150}; do # timeout for 5 minutes
kubectl version &> /dev/null
if [[ $? -ne 1 ]]; then
break
fi
sleep 2
done
# Check kubernetes info
kubectl cluster-info
# RBAC
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
# Install Helm
# curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
}
# $1 : file
# $2 : Number of replicas
function check()
{
SLEEP_TIME=10
MAX_ATTEMPTS=50
ATTEMPTS=0
READY_REPLICAS="0"
until [[ "$READY_REPLICAS" == "$2" ]]; do
sleep $SLEEP_TIME
ATTEMPTS=`expr $ATTEMPTS + 1`
if [[ $ATTEMPTS -gt $MAX_ATTEMPTS ]]; then
echo "ERROR: Max number of attempts was reached (${MAX_ATTEMPTS})"
exit 1
fi
READY_REPLICAS=$(kubectl get -f $1 -o jsonpath='{.items[?(@.kind=="StatefulSet")].status.readyReplicas}' 2>&1)
echo "[${ATTEMPTS}/${MAX_ATTEMPTS}] - Ready zookeeper replicas : ${READY_REPLICAS:-0}/$2 ... "
done
kubectl get all
}
function test()
{
# Given
file=$DIR/zk.yaml
# When
kubectl create -f $file
# Then
check $file 3
}
function test-persistent()
{
# Given, 3 replicas
file=$DIR/zk-persistent.yaml
# When
kubectl create -f $file
# Then
check $file 3
kubectl get pvc,pv
}
function test-all()
{
test && kubectl delete -l component=zk all
test-persistent && kubectl delete -l component=zk all,pv,pvc
}
function clean-all()
{
echo "Cleaning resources ...."
kubectl delete -l component=zk all,pv,pvc
}
function minikube-delete(){
echo "Deleting minikube cluster ...."
minikube delete
}
function help() # Show a list of functions
{
declare -F -p | cut -d " " -f 3
}
if [[ "_$1" = "_" ]]; then
help
else
"$@"
fi