d1b27bcf097485089ad13f3e20948dbf8f6a7e09
[iec.git] / src / foundation / scripts / setup-cni.sh
1 #!/bin/bash
2 set -o xtrace
3 set -e
4
5 if [ -f "$HOME/.bashrc" ]; then
6   # shellcheck source=/dev/null
7   source "$HOME/.bashrc"
8 fi
9
10
11 CLUSTER_IP=${1:-172.16.1.136} # Align with the value in our K8s setup script
12 POD_NETWORK_CIDR=${2:-192.168.0.0/16}
13 CNI_TYPE=${3:-calico}
14 DEV_NAME=${4:-}
15
16 SCRIPTS_DIR=$(dirname "${BASH_SOURCE[0]}")
17
18 install_calico(){
19   # Install the Etcd Database
20   ETCD_YAML=etcd.yaml
21
22   sed -i "s/10.96.232.136/${CLUSTER_IP}/" "${SCRIPTS_DIR}/cni/calico/${ETCD_YAML}"
23   kubectl apply -f "${SCRIPTS_DIR}/cni/calico/${ETCD_YAML}"
24
25   # Install the RBAC Roles required for Calico
26   kubectl apply -f "${SCRIPTS_DIR}/cni/calico/rbac.yaml"
27
28   # Install Calico to system
29   sed -i "s@10.96.232.136@${CLUSTER_IP}@; s@192.168.0.0/16@${POD_NETWORK_CIDR}@" \
30     "${SCRIPTS_DIR}/cni/calico/calico.yaml"
31   kubectl apply -f "${SCRIPTS_DIR}/cni/calico/calico.yaml"
32 }
33
34 install_flannel(){
35   # Install the flannel CNI
36   sed -i "s@10.244.0.0/16@${POD_NETWORK_CIDR}@" "${SCRIPTS_DIR}/cni/flannel/kube-flannel.yml"
37   kubectl apply -f "${SCRIPTS_DIR}/cni/flannel/kube-flannel.yml"
38 }
39
40 install_contivpp(){
41   # Update vpp config file
42   ${SCRIPTS_DIR}/cni/contivpp/contiv-update-config.sh $DEV_NAME
43
44   # Install contivpp CNI
45   sed -i "s@10.1.0.0/16@${POD_NETWORK_CIDR}@" "${SCRIPTS_DIR}/cni/contivpp/contiv-vpp.yaml"
46   kubectl apply -f "${SCRIPTS_DIR}/cni/contivpp/contiv-vpp.yaml"
47 }
48
49 case ${CNI_TYPE} in
50  'calico')
51         echo "Install calico ..."
52         install_calico
53         ;;
54  'flannel')
55         echo "Install flannel ..."
56         install_flannel
57         ;;
58  'contivpp')
59         echo "Install Contiv-VPP ..."
60         install_contivpp
61         ;;
62  *)
63         echo "${CNI_TYPE} is not supported"
64         exit 1
65         ;;
66 esac
67
68 # Remove the taints on master node
69 kubectl taint nodes --all node-role.kubernetes.io/master- || true