2 #Install the k8s-master & k8s-worker node from Mgnt node
7 # Displays the help menu.
12 echo "This script can help you to deploy a simple iec testing"
14 echo "Firstly, the master node and worker node information must"
15 echo "be added into config file which will be used for deployment."
17 echo "Secondly, there should be an user on each node which will be"
18 echo "used to install the corresponding software on master and"
19 echo "worker nodes. At the same time, this user should be enable to"
20 echo "run the sudo command without input password on the hosts."
22 echo "In the end, some optional parameters could be directly passed"
23 echo "to startup.sh by shell for easy customizing your own IEC"
25 echo "-k|--kube: ---- The version of k8s"
26 echo "-c|--cni-ver: ---- Kubernetes-cni version"
27 echo "-C|--cni: ---- CNI type: calico/flannel"
29 echo "Example usages:"
30 echo " ./startup.sh #Deploy with default parameters"
31 echo " #Deploy the flannel with 1.15.2 K8s"
32 echo " ./startup.sh -C flannel -k 1.15.2 -c 0.7.5"
44 INSTALL_SOFTWARE="sudo apt-get update && sudo apt-get install -y git &&\
45 sudo rm -rf ~/.kube ~/iec &&\
46 git clone ${REPO_URL} &&\
47 cd iec/src/foundation/scripts/ && source k8s_common.sh $KUBE_VERSION $CNI_VERSION"
49 #Automatic deploy the K8s environments on Master node
50 SETUP_MASTER="cd iec/src/foundation/scripts/ && source k8s_master.sh ${K8S_MASTER_IP} ${POD_NETWORK_CIDR} ${SVC_CIDR}"
51 sshpass -p ${K8S_MASTERPW} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${K8S_MASTER_IP} ${INSTALL_SOFTWARE}
52 sshpass -p ${K8S_MASTERPW} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${K8S_MASTER_IP} ${SETUP_MASTER} | tee ${LOG_FILE}
54 TOKEN=$(grep "\--token " ./${LOG_FILE})
55 TOKEN_ID=$(echo ${TOKEN#*"token "}|cut -f1 -d' ')
57 SH256=$(grep "\--discovery-token-ca-cert-hash " ./${LOG_FILE})
58 TOKEN_CA_SH256=${SH256#*"sha256:"}
60 KUBEADM_JOIN_CMD="kubeadm join ${K8S_MASTER_IP}:6443 --token ${TOKEN_ID} --discovery-token-ca-cert-hash sha256:${TOKEN_CA_SH256}"
62 #Automatic deploy the K8s environments on each worker-node
63 SETUP_WORKER="cd iec/src/foundation/scripts/ && source k8s_worker.sh"
65 for worker in "${K8S_WORKER_GROUP[@]}"
67 ip_addr="$(cut -d',' -f1 <<<${worker})"
68 passwd="$(cut -d',' -f2 <<<${worker})"
69 echo "Install & Deploy on ${ip_addr}. password:${passwd}"
71 sshpass -p ${passwd} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${ip_addr} ${INSTALL_SOFTWARE}
72 sshpass -p ${passwd} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${ip_addr} "echo \"sudo ${KUBEADM_JOIN_CMD}\" >> ./iec/src/foundation/scripts/k8s_worker.sh"
74 if [ -n "${CNI_TYPE}" ] && [ ${CNI_TYPE} == "contivpp" ] && [ -n "${DEV_NAME[$ip_addr]}" ]
76 CONTIVPP_CONFIG="cd iec/src/foundation/scripts/cni/contivpp && sudo ./contiv-update-config.sh ${DEV_NAME[$ip_addr]}"
77 sshpass -p ${passwd} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${ip_addr} $CONTIVPP_CONFIG
80 sshpass -p ${passwd} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${ip_addr} ${SETUP_WORKER}
81 sshpass -p ${passwd} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${ip_addr} "sudo swapon -a"
85 #Deploy etcd & CNI from master node
86 SETUP_CNI="cd iec/src/foundation/scripts && source setup-cni.sh $CLUSTER_IP $POD_NETWORK_CIDR $CNI_TYPE $K8S_MASTER_IP $SVC_CIDR"
87 sshpass -p ${K8S_MASTERPW} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${K8S_MASTER_IP} ${SETUP_CNI}
88 SETUP_HELM="cd iec/src/foundation/scripts && source helm.sh"
89 sshpass -p ${K8S_MASTERPW} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${K8S_MASTER_IP} ${SETUP_HELM}
94 # Check the K8s environments
99 VERIFY_K8S="cd iec/src/foundation/scripts/ && source nginx.sh"
100 sshpass -p ${K8S_MASTERPW} ssh -o StrictHostKeyChecking=no ${HOST_USER}@${K8S_MASTER_IP} ${VERIFY_K8S}
107 echo "K8S_MASTER_IP:${K8S_MASTER_IP}"
108 echo "HOST_USER:${HOST_USER}"
109 echo "REPO_URL:${REPO_URL}"
111 echo "The number of K8s-Workers:${#K8S_WORKER_GROUP[@]}"
112 for worker in "${K8S_WORKER_GROUP[@]}"
114 ip_addr="$(cut -d',' -f1 <<<${worker})"
115 passwd="$(cut -d',' -f2 <<<${worker})"
116 echo "Install & Deploy on ${ip_addr}. password:${passwd}"
119 echo "KUBE_VERSION: ${KUBE_VERSION}"
120 echo "CNI_TPYE: ${CNI_TYPE}"
121 echo "CLUSTER_IP: ${CLUSTER_IP}"
122 echo "POD_NETWORK_CIDR: ${POD_NETWORK_CIDR}"
125 # Read the configuration file
130 ARGS=`getopt -a -o C:k:c:h -l cni:,kube:,cni-ver:,help -- "$@"`
131 eval set -- "${ARGS}"
141 echo "This is config kube version:$2"
146 echo "This is config cni version:$2"
151 echo "this is help case"