-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathsetup.sh
executable file
·48 lines (38 loc) · 1.53 KB
/
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
#!/usr/bin/env bash
# Perform restore if we have a backup, else make a backup
[ -f /etc/kubernetes/kube-apiserver.bak ] && cp /etc/kubernetes/kube-apiserver.bak /etc/kubernetes/manifests/kube-apiserver.yaml
[ ! -f /etc/kubernetes/kube-apiserver.bak ] && cp /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/kube-apiserver.bak
if [ "$1" = "" ]
then
echo "Usage: setup <scenario>"
echo
echo "Where <scenario> is the number of the scenario to install"
exit 1
fi
basedir=$(dirname "${BASH_SOURCE[0]}")
if [ ! -d "$basedir/scenarios/scenario-$1" ]
then
echo "No scenario $1 found."
exit 1
fi
if ! command -v yq > /dev/null
then
# Install YQ for patching YAML if not present
curl -LO https://github.com/mikefarah/yq/releases/download/v4.31.1/yq_linux_amd64
chmod 755 yq_linux_amd64
mv yq_linux_amd64 /usr/local/bin/yq
fi
echo "Setting up scenario $1 and crashing that API server!"
source $basedir/scenarios/scenario-$1/setup.sh
echo "Waiting for kubelet to see the change and API server to crash"
# Have seen behaviour where the kubelet does NOT replace the API server if the manifest is dodgy,
# so force a stop and restart
mv /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/kube-apiserver.yaml
sleep 1
rm -f /etc/kubernetes/manifests/kube-apiserver.*
systemctl restart kubelet
while crictl ps | grep apiserver > /dev/null ; do sleep 0.25s ; done
mv /etc/kubernetes/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml
kubectl get pods -n kube-system
echo
echo "The scene is set!"