| 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 |
|
|---|