Upgrade ovn-kubernetes CNI to latest release
[iec.git] / src / foundation / scripts / cni / ovn-kubernetes / install-ovn-k8s.sh
1 #!/bin/bash -ex
2 # shellcheck disable=SC2016
3
4 SCRIPTS_DIR=$(dirname "${BASH_SOURCE[0]}")
5
6 function wait_for {
7   # Execute in a subshell to prevent local variable override during recursion
8   (
9     local total_attempts=$1; shift
10     local cmdstr=$*
11     local sleep_time=2
12     echo -e "\n[wait_for] Waiting for cmd to return success: ${cmdstr}"
13     # shellcheck disable=SC2034
14     for attempt in $(seq "${total_attempts}"); do
15       echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}"
16       # shellcheck disable=SC2015
17       eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true
18       sleep "${sleep_time}"
19     done
20     echo "[wait_for] ERROR: Failed after max attempts: ${cmdstr}"
21     return 1
22   )
23 }
24
25 # shellcheck source=/dev/null
26 source ${SCRIPTS_DIR}/clean_old_ovs.sh
27
28 # Create OVN namespace, service accounts, ovnkube-db headless service, configmap, and policies
29 kubectl create -f ${SCRIPTS_DIR}/yaml/ovn-setup.yaml
30 wait_for 5 'test $(kubectl get configmap -n ovn-kubernetes | grep ovn-config -c ) -eq 1'
31
32
33 # Run ovnkube-db daemonset.
34 kubectl create -f ${SCRIPTS_DIR}/yaml/ovnkube-db.yaml
35 wait_for 60 'test $(kubectl get pods -n ovn-kubernetes | grep -e "ovnkube-db" | grep "Running" -c) -eq 1'
36
37
38 # Run ovnkube-master daemonset.
39 kubectl create -f ${SCRIPTS_DIR}/yaml/ovnkube-master.yaml
40 wait_for 60 'test $(kubectl get pods -n ovn-kubernetes | grep -e "ovnkube-master" | grep "Running" -c) -eq 1'
41
42
43 # Run ovnkube daemonsets for nodes, maybe more than 1 ovnkube-node pods since there would be 1 ovnkube-node
44 # pod on each K8s node
45 kubectl create -f ${SCRIPTS_DIR}/yaml/ovnkube-node.yaml
46 wait_for 60 'test $(kubectl get pods -n ovn-kubernetes | grep -e "ovnkube-node" | grep "Running" -c) -ge 1'
47
48
49 #kubectl get pods -n ovn-kubernetes