This repository was archived by the owner on Nov 16, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathK1-kasten.sh
executable file
·179 lines (159 loc) · 4.92 KB
/
K1-kasten.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#!/usr/bin/env bash
### Install command check ####
if type "kubectl" > /dev/null 2>&1
then
echo "kubectl was already installed"
else
echo "kubectl was not found. Please install helm and re-run"
exit 255
fi
if type "helm" > /dev/null 2>&1
then
echo "helm was not found. Please install helm and re-run"
else
echo "helm was not found"
exit 255
fi
#########################################################
### UID Check ###
if [ ${EUID:-${UID}} != 0 ]; then
echo "This script must be run as root"
exit 1
else
echo "I am root user."
fi
### Distribution Check ###
lsb_release -d | grep Ubuntu | grep 20.04
DISTVER=$?
if [ ${DISTVER} = 1 ]; then
echo "only supports Ubuntu 20.04 server"
exit 1
else
echo "Ubuntu 20.04=OK"
fi
### ARCH Check ###
PARCH=`arch`
if [ ${PARCH} = aarch64 ]; then
ARCH=arm64
echo ${ARCH}
elif [ ${PARCH} = arm64 ]; then
ARCH=arm64
echo ${ARCH}
elif [ ${PARCH} = x86_64 ]; then
ARCH=amd64
echo ${ARCH}
else
echo "${ARCH} platform is not supported"
exit 1
fi
#### LOCALIP #########
ip address show ens160 >/dev/null
retval=$?
if [ ${retval} -eq 0 ]; then
LOCALIPADDR=`ip -f inet -o addr show ens160 |cut -d\ -f 7 | cut -d/ -f 1`
else
ip address show ens192 >/dev/null
retval2=$?
if [ ${retval2} -eq 0 ]; then
LOCALIPADDR=`ip -f inet -o addr show ens192 |cut -d\ -f 7 | cut -d/ -f 1`
else
LOCALIPADDR=`ip -f inet -o addr show eth0 |cut -d\ -f 7 | cut -d/ -f 1`
fi
fi
echo ${LOCALIPADDR}
#########################################################
# htpasswd for basic auth
apt -y install apache2-utils
# Install K10-tools
TOOLSVER=4.5.2
rm -rf /usr/local/bin/k10tools
if [ ! -f /usr/local/bin/k10tools ]; then
curl -OL https://github.com/kastenhq/external-tools/releases/download/${TOOLSVER}/k10tools_${TOOLSVER}_linux_${ARCH}.tar.gz
tar xfz k10tools_${TOOLSVER}_linux_${ARCH}.tar.gz -C /usr/local/bin
chmod +x /usr/local/bin/k10tools
fi
rm -rf /usr/local/bin/k10multicluster
if [ ! -f /usr/local/bin/k10multicluster ]; then
curl -OL https://github.com/kastenhq/external-tools/releases/download/${TOOLSVER}/k10multicluster_${TOOLSVER}_linux_${ARCH}.tar.gz
tar xfz k10multicluster_${TOOLSVER}_linux_${ARCH}.tar.gz -C /usr/local/bin
chmod +x /usr/local/bin/k10multicluster
fi
if [ ${ARCH} = "amd64" ]; then
KUBESTRVER=0.4.31
if [ ! -f /usr/local/bin/kubestr ]; then
mkdir temp
cd temp
curl -OL https://github.com/kastenhq/kubestr/releases/download/v${KUBESTRVER}/kubestr_${KUBESTRVER}_Linuxs_-${ARCH}.tar.gz
tar xfz kubestr_${KUBESTRVER}_Linux_${ARCH}.tar.gz
rm kubestr_${KUBESTRVER}_Linux_${ARCH}.tar.gz
mv kubestr /usr/local/bin/kubestr
chmod +x /usr/local/bin/kubestr
cd ..
rm -rf temp
fi
# Pre-req Kasten
helm repo add kasten https://charts.kasten.io/
helm repo update
kubectl get volumesnapshotclass | grep csi-hostpath-snapclass
retval3=$?
if [ ${retval3} -eq 0 ]; then
kubectl annotate volumesnapshotclass csi-hostpath-snapclass \
k10.kasten.io/is-snapshot-class=true
fi
curl https://docs.kasten.io/tools/k10_primer.sh | bash
rm k10primer.yaml
# Install Kasten
kubectl create namespace kasten-io
helm install k10 kasten/k10 --namespace=kasten-io \
--set services.securityContext.runAsUser=0 \
--set services.securityContext.fsGroup=0 \
--set prometheus.server.securityContext.runAsUser=0 \
--set prometheus.server.securityContext.runAsGroup=0 \
--set prometheus.server.securityContext.runAsNonRoot=false \
--set prometheus.server.securityContext.fsGroup=0 \
--set global.persistence.size=40G \
--set global.persistence.storageClass=csi-hostpath-sc \
--set auth.tokenAuth.enabled=true \
--set externalGateway.create=true \
--set ingress.create=true \
--set grafana.enabled=true
##--set injectKanisterSidecar.enabled=true \
# define NFS storage
kubectl get sc | grep nfs-csi
retval4=$?
if [ ${retval4} -eq 0 ]; then
cat <<EOF | kubectl apply -n kasten-io -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kastennfspvc01
spec:
storageClassName: nfs-csi
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
EOF
fi
echo "Following is login token"
sa_secret=$(kubectl get serviceaccount k10-k10 -o jsonpath="{.secrets[0].name}" --namespace kasten-io)
kubectl get secret $sa_secret --namespace kasten-io -ojsonpath="{.data.token}{'\n'}" | base64 --decode > k10-k10.token
echo "" >> k10-k10.token
cat k10-k10.token
echo
EXTERNALIP=`kubectl -n kasten-io get ingress | awk '{print $4}' | tail -n 1`
echo ""
echo "*************************************************************************************"
echo "Next Step"
echo "Confirm kasten is running with kubectl get pods --namespace kasten-io"
echo "kubectl --namespace kasten-io port-forward --address 0.0.0.0 service/gateway 8080:8000"
echo "Open your browser http://${LOCALIPADDR}:8080/k10/#/"
echo "or"
echo "Open http://${EXTERNALIP}/K10/# from local browser"
echo "then input login token"
echo
else
echo "kubestr: ${ARCH} is not supported"
echo "Kasten-io: ${ARCH} is not supported"
fi