|
1 | 1 | #!/bin/bash |
2 | 2 | #shellcheck disable=SC2145,SC2016 |
| 3 | + |
| 4 | +set -eux |
| 5 | + |
3 | 6 | log() { (>&1 echo -e "$@") ; } |
4 | | -cmd() { log "$@" ; } |
5 | 7 | info() { log "[ INFO ] $@" ; } |
6 | 8 | error() { (>&2 echo -e "[ ERROR ] $@") ;} |
7 | 9 |
|
8 | 10 | if [ -z "${TR_STACK}" ] || [ -z "${TR_LB_IP}" ] || \ |
9 | | - [ -z "$TR_MASTER_IPS" ] || [ -z "$TR_WORKER_IPS" ] || \ |
10 | | - [ -z "${TR_USERNAME}" ]; then |
11 | | - error '$TR_STACK $TR_LB_IP $TR_MASTER_IPS $TR_WORKER_IPS $TR_USERNAME must be specified' |
| 11 | + [ -z "$TR_MASTER_IPS" ] || [ -z "${TR_USERNAME}" ]; then |
| 12 | + error '$TR_STACK $TR_LB_IP $TR_MASTER_IPS $TR_USERNAME must be specified' |
12 | 13 | exit 1 |
13 | 14 | fi |
14 | 15 |
|
| 16 | +sleep 5 |
| 17 | + |
| 18 | +CILIUM_VERSION=$(curl -s https://api.github.com/repos/cilium/cilium/releases/latest | jq -r '.tag_name' | sed -e 's/^v//') |
| 19 | + |
15 | 20 | info "### Run following commands to bootstrap Kubernetes cluster:\\n" |
16 | | -cmd "" |
17 | 21 |
|
18 | 22 | i=0 |
19 | 23 | for MASTER in $TR_MASTER_IPS; do |
20 | | - cmd "ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${MASTER} /bin/bash <<EOF" |
21 | | - cmd "" |
22 | | - |
23 | 24 | if [ $i -eq "0" ]; then |
24 | | - cmd " sudo kubeadm init --cri-socket /run/containerd/containerd.sock --control-plane-endpoint ${TR_LB_IP}:6443 | tee kubeadm-init.log" |
25 | | - cmd "" |
26 | | - cmd " mkdir -p /home/${TR_USERNAME}/.kube" |
27 | | - cmd " sudo cp /etc/kubernetes/admin.conf /home/${TR_USERNAME}/.kube/config" |
28 | | - cmd " sudo chown ${TR_USERNAME}:users /home/${TR_USERNAME}/.kube/config" |
29 | | - cmd "EOF" |
30 | | - |
31 | 25 | ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${MASTER} /bin/bash <<-EOF |
32 | | - sudo kubeadm init --cri-socket /run/containerd/containerd.sock --control-plane-endpoint ${TR_LB_IP}:6443 | tee kubeadm-init.log |
| 26 | + set -eux |
| 27 | + sudo kubeadm init --cri-socket /run/containerd/containerd.sock --control-plane-endpoint ${MASTER}:6443 --upload-certs | tee kubeadm-init.log |
33 | 28 | mkdir -p /home/${TR_USERNAME}/.kube |
34 | 29 | sudo cp /etc/kubernetes/admin.conf /home/${TR_USERNAME}/.kube/config |
35 | 30 | sudo chown ${TR_USERNAME}:users /home/${TR_USERNAME}/.kube/config |
| 31 | + helm repo add cilium https://helm.cilium.io/ |
| 32 | + helm install cilium cilium/cilium --version ${CILIUM_VERSION} --namespace kube-system |
36 | 33 | EOF |
37 | 34 |
|
38 | | - cmd "" |
39 | | - export KUBEADM_JOIN=`ssh -l ${TR_USERNAME} ${MASTER} tail -n2 kubeadm-init.log` |
40 | | - export KUBEADM_CMD=`echo $KUBEADM_JOIN | sed -e 's/\\\ //'` |
41 | | - echo $KUBEADM_CMD |
| 35 | + export KUBEADM_MASTER_JOIN=`ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${MASTER} tail -n12 kubeadm-init.log | head -n3` |
| 36 | + export KUBEADM_WORKER_JOIN=`ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${MASTER} tail -n2 kubeadm-init.log` |
42 | 37 | else |
43 | | - cmd "" |
44 | | - cmd " sudo kubeadm join" |
45 | | - cmd "EOF" |
46 | | - cmd "" |
| 38 | + ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${MASTER} /bin/bash <<-EOF |
| 39 | + set -eux |
| 40 | + sudo ${KUBEADM_MASTER_JOIN} |
| 41 | + mkdir -p /home/${TR_USERNAME}/.kube |
| 42 | + sudo cp /etc/kubernetes/admin.conf /home/${TR_USERNAME}/.kube/config |
| 43 | + sudo chown ${TR_USERNAME}:users /home/${TR_USERNAME}/.kube/config |
| 44 | +EOF |
47 | 45 | fi |
48 | 46 | ((++i)) |
49 | 47 | done |
50 | 48 |
|
51 | 49 | i=0 |
52 | 50 | for WORKER in $TR_WORKER_IPS; do |
53 | | - cmd "ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${WORKER} sudo ${KUBEADM_CMD}" |
54 | | - ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${WORKER} sudo ${KUBEADM_CMD} |
| 51 | + ssh -o 'StrictHostKeyChecking no' -l ${TR_USERNAME} ${WORKER} /bin/bash <<-EOF |
| 52 | + set -eux |
| 53 | + sudo ${KUBEADM_WORKER_JOIN} |
| 54 | +EOF |
55 | 55 | ((++i)) |
56 | 56 | done |
57 | 57 |
|
58 | | -cmd "" |
59 | | -cmd "scp ${TR_USERNAME}@${MASTER}:/home/${TR_USERNAME}/.kube/config ./admin.conf" |
60 | | -cmd "export KUBECONFIG=`pwd`/admin.conf" |
61 | | -cmd "" |
62 | | - |
63 | 58 | scp ${TR_USERNAME}@${MASTER}:/home/${TR_USERNAME}/.kube/config ./admin.conf |
64 | 59 | export KUBECONFIG=`pwd`/admin.conf |
65 | 60 | kubectl get nodes |
66 | 61 |
|
67 | | -cmd "" |
68 | | -cmd "WARNING!!! To start with K8s cluster please run following command:" |
69 | | -cmd "export KUBECONFIG=`pwd`/admin.conf" |
70 | | -cmd "" |
| 62 | +log "" |
| 63 | +log "WARNING!!! To start with K8s cluster please run following command:" |
| 64 | +log "export KUBECONFIG=`pwd`/admin.conf" |
| 65 | +log "" |
0 commit comments