1 | #!/bin/bash
|
---|
2 |
|
---|
3 | rm -f cluster.yml
|
---|
4 | rm -f kube_config_cluster.yml
|
---|
5 | rm -f rke
|
---|
6 | rm -f config
|
---|
7 |
|
---|
8 | wget https://github.com/rancher/rke/releases/download/v0.2.1/rke_linux-amd64
|
---|
9 | mv rke_linux-amd64 rke
|
---|
10 | chmod 754 rke
|
---|
11 |
|
---|
12 |
|
---|
13 | usage () {
|
---|
14 | echo "Usage:"
|
---|
15 | echo " ./$(basename $0) -c \"cNode1 cNode2 ... cnodeN\" -w \"wNode1 wnode2 ... wnodeN\""
|
---|
16 | echo "Note: controllers hostnames and workers hostnames are to be enclosed in \"\""
|
---|
17 | exit 0
|
---|
18 | }
|
---|
19 |
|
---|
20 | if [[ ( $# == "--help") || $# == "-h" ]]
|
---|
21 | then
|
---|
22 | usage
|
---|
23 | exit 0
|
---|
24 | fi
|
---|
25 |
|
---|
26 | if [ "$#" -lt 2 ]; then
|
---|
27 | echo "Missing Kubernetes control and worker nodes"
|
---|
28 | usage
|
---|
29 | fi
|
---|
30 |
|
---|
31 | echo "# An example of an HA Kubernetes cluster for ONAP" >> cluster.yml
|
---|
32 | echo "nodes:" >> cluster.yml
|
---|
33 |
|
---|
34 | while getopts c:w: option
|
---|
35 | do
|
---|
36 | case "${option}"
|
---|
37 | in
|
---|
38 | c) CONTROLLERS=${OPTARG};;
|
---|
39 | w) WORKERS=${OPTARG};;
|
---|
40 | esac
|
---|
41 | done
|
---|
42 |
|
---|
43 | IFS=' ' read -ra C <<< "$CONTROLLERS"
|
---|
44 | IFS=' ' read -ra W <<< "$WORKERS"
|
---|
45 |
|
---|
46 | echo "Testing node availability. This might take some time"
|
---|
47 | for i in "${C[@]}"; do
|
---|
48 | while ! ping -c 1 -n -w 1 $i &> /dev/null
|
---|
49 | do
|
---|
50 | printf "%c" "."
|
---|
51 | done
|
---|
52 |
|
---|
53 | echo "127.0.0.1 localhost" > hosts
|
---|
54 | echo "`ping $i -c 1 | grep \"PING\" | grep '('|awk '{gsub(/[()]/,\"\"); print $3}'` ${i}" >> hosts
|
---|
55 |
|
---|
56 | scp hosts root@$i:/etc/hosts
|
---|
57 | done
|
---|
58 |
|
---|
59 | for i in "${W[@]}"; do
|
---|
60 | while ! ping -c 1 -n -w 1 $i &> /dev/null
|
---|
61 | do
|
---|
62 | printf "%c" "."
|
---|
63 | done
|
---|
64 | echo "127.0.0.1 localhost" > hosts
|
---|
65 | echo "`ping $i -c 1 | grep \"PING\" | grep '('|awk '{gsub(/[()]/,\"\"); print $3}'` ${i}" >> hosts
|
---|
66 | scp hosts root@$i:/etc/hosts
|
---|
67 | done
|
---|
68 | echo "Availability check successful"
|
---|
69 |
|
---|
70 | for i in "${C[@]}"; do
|
---|
71 | echo "- address: `ping $i -c 1 | grep \"PING\" | grep '('|awk '{gsub(/[()]/,\"\"); print $3}'`" >> cluster.yml
|
---|
72 | echo ' port: "22"' >> cluster.yml
|
---|
73 | echo " role:" >> cluster.yml
|
---|
74 | echo " - controlplane" >> cluster.yml
|
---|
75 | echo " - etcd" >> cluster.yml
|
---|
76 | echo " hostname_override: `ping $i -c 1 | grep 'PING' | awk '{print $2}' | awk -F . '{print $1}'`" >> cluster.yml
|
---|
77 | echo " user: root" >> cluster.yml
|
---|
78 | echo " ssh_key_path: '~/.ssh/id_rsa'" >> cluster.yml
|
---|
79 | done
|
---|
80 |
|
---|
81 | echo "# worker nodes start " >> cluster.yml
|
---|
82 |
|
---|
83 | for i in "${W[@]}"; do
|
---|
84 | echo "- address: `ping $i -c 1 | grep \"PING\" | grep '('|awk '{gsub(/[()]/,\"\"); print $3}'`" >> cluster.yml
|
---|
85 | echo ' port: "22"' >> cluster.yml
|
---|
86 | echo " role:" >> cluster.yml
|
---|
87 | echo " - worker" >> cluster.yml
|
---|
88 | echo " hostname_override: `ping $i -c 1 | grep 'PING' | awk '{print $2}' | awk -F . '{print $1}'`" >> cluster.yml
|
---|
89 | echo " user: root" >> cluster.yml
|
---|
90 | echo " ssh_key_path: '~/.ssh/id_rsa'" >> cluster.yml
|
---|
91 | done
|
---|
92 |
|
---|
93 | echo 'services:
|
---|
94 | kube-api:
|
---|
95 | service_cluster_ip_range: 10.43.0.0/16
|
---|
96 | pod_security_policy: false
|
---|
97 | always_pull_images: false
|
---|
98 | kube-controller:
|
---|
99 | cluster_cidr: 10.42.0.0/16
|
---|
100 | service_cluster_ip_range: 10.43.0.0/16
|
---|
101 | kubelet:
|
---|
102 | cluster_domain: cluster.local
|
---|
103 | cluster_dns_server: 10.43.0.10
|
---|
104 | fail_swap_on: false
|
---|
105 | network:
|
---|
106 | plugin: canal
|
---|
107 | authentication:
|
---|
108 | strategy: x509
|
---|
109 | ssh_key_path: "~/.ssh/id_rsa"
|
---|
110 | ssh_agent_auth: false
|
---|
111 | authorization:
|
---|
112 | mode: rbac
|
---|
113 | ignore_docker_version: false
|
---|
114 | kubernetes_version: "v1.13.5-rancher1-2"
|
---|
115 | private_registries:
|
---|
116 | - url: nexus3.onap.org:10001
|
---|
117 | user: docker
|
---|
118 | password: docker
|
---|
119 | is_default: true
|
---|
120 | cluster_name: "onap"
|
---|
121 | restore:
|
---|
122 | restore: false
|
---|
123 | snapshot_name: ""' >> cluster.yml
|
---|
124 |
|
---|
125 | ./rke up
|
---|
126 |
|
---|
127 | for i in "${C[@]}"; do
|
---|
128 | scp kube_config_cluster.yml root@$i:~/.kube/config
|
---|
129 | done
|
---|
130 |
|
---|
131 | exit 0
|
---|
132 |
|
---|