kubernetes rke install sh and heat RI
Change-Id: I84d5349d702e3c9c1fc575350226c8b3ef542336
Issue-ID: OOM-1670
Signed-off-by: Michael O'Brien <michael@obrienlabs.org>
diff --git a/kubernetes/contrib/tools/rke/rke_setup.sh b/kubernetes/contrib/tools/rke/rke_setup.sh
new file mode 100755
index 0000000..cc71522
--- /dev/null
+++ b/kubernetes/contrib/tools/rke/rke_setup.sh
@@ -0,0 +1,355 @@
+#!/bin/bash
+#############################################################################
+# Copyright © 2019 Bell.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#############################################################################
+#
+# This installation is for an RKE install of kubernetes
+# after this run the standard oom install
+# this installation can be run on amy ubuntu 16.04 VM, RHEL 7.6 (root only), physical or cloud azure/aws host
+# https://wiki.onap.org/display/DW/OOM+RKE+Kubernetes+Deployment
+# source from https://jira.onap.org/browse/OOM-1598
+#
+# master/dublin
+# RKE 0.1.16 Kubernetes 1.11.6, kubectl 1.11.6, Helm 2.9.1, Docker 18.06
+# single node install, HA pending
+
+usage() {
+cat <<EOF
+Usage: $0 [PARAMs]
+example
+sudo ./rke_setup.sh -b dublin -s rke.onap.cloud -e onap -l amdocs -v true
+-u : Display usage
+-b [branch] : branch = master or dublin (required)
+-s [server] : server = IP or DNS name (required)
+-e [environment] : use the default (onap)
+-k [key] : ssh key name
+-l [username] : login username account (use ubuntu for example)
+EOF
+}
+
+install_onap() {
+ #constants
+ PORT=8880
+ if [ "$BRANCH" == "casablanca" ]; then
+ KUBERNETES_VERSION=
+ RKE_VERSION=0.1.15
+ KUBECTL_VERSION=1.11.3
+ HELM_VERSION=2.9.1
+ DOCKER_VERSION=17.03
+ else
+ KUBERNETES_VERSION=
+ RKE_VERSION=0.1.16
+ KUBECTL_VERSION=1.11.6
+ HELM_VERSION=2.9.1
+ DOCKER_VERSION=18.06
+ fi
+
+ # copy your private ssh key and cluster.yml file to the vm
+ # on your dev machine
+ #sudo cp ~/.ssh/onap_rsa .
+ #sudo chmod 777 onap_rsa
+ #scp onap_rsa ubuntu@192.168.241.132:~/
+ # on this vm
+ #sudo chmod 400 onap_rsa
+ #sudo cp onap_rsa ~/.ssh
+ # make sure public key is insetup correctly in
+ # sudo vi ~/.ssh/authorized_keys
+
+ echo "please supply your ssh key as provided by the -k keyname - it must be be chmod 400 and chown user:user in ~/.ssh/"
+ echo "The RKE version specific cluster.yaml is already integrated in this script for 0.1.15/0.1.16 no need for below generation..."
+ echo "rke config --name cluster.yml"
+ echo "specifically"
+ echo "address: $SERVER"
+ echo "user: $USERNAME"
+ echo "ssh_key_path: $SSHPATH_PREFIX/$SSHKEY"
+
+ RKETOOLS=
+ HYPERCUBE=
+ POD_INFRA_CONTAINER=
+ if [ "$RKE_VERSION" == "0.1.16" ]; then
+ RKETOOLS=0.1.15
+ HYPERCUBE=1.11.6-rancher1
+ POD_INFRA_CONTAINER=rancher/pause-amd64:3.1
+ else
+ # 0.1.15
+ RKETOOLS=0.1.14
+ HYPERCUBE=1.11.3-rancher1
+ POD_INFRA_CONTAINER=gcr.io.google_containers/pause-amd64:3.1
+ fi
+
+ cat > cluster.yml <<EOF
+# generated from rke_setup.sh
+nodes:
+- address: $SERVER
+ port: "22"
+ internal_address: ""
+ role:
+ - controlplane
+ - worker
+ - etcd
+ hostname_override: ""
+ user: $USERNAME
+ docker_socket: /var/run/docker.sock
+ ssh_key: ""
+ ssh_key_path: $SSHPATH_PREFIX/$SSHKEY
+ labels: {}
+services:
+ etcd:
+ image: ""
+ extra_args: {}
+ extra_binds: []
+ extra_env: []
+ external_urls: []
+ ca_cert: ""
+ cert: ""
+ key: ""
+ path: ""
+ snapshot: null
+ retention: ""
+ creation: ""
+ kube-api:
+ image: ""
+ extra_args: {}
+ extra_binds: []
+ extra_env: []
+ service_cluster_ip_range: 10.43.0.0/16
+ service_node_port_range: ""
+ pod_security_policy: false
+ kube-controller:
+ image: ""
+ extra_args: {}
+ extra_binds: []
+ extra_env: []
+ cluster_cidr: 10.42.0.0/16
+ service_cluster_ip_range: 10.43.0.0/16
+ scheduler:
+ image: ""
+ extra_args: {}
+ extra_binds: []
+ extra_env: []
+ kubelet:
+ image: ""
+ extra_args:
+ max-pods: 900
+ extra_binds: []
+ extra_env: []
+ cluster_domain: cluster.local
+ infra_container_image: ""
+ cluster_dns_server: 10.43.0.10
+ fail_swap_on: false
+ kubeproxy:
+ image: ""
+ extra_args: {}
+ extra_binds: []
+ extra_env: []
+network:
+ plugin: canal
+ options: {}
+authentication:
+ strategy: x509
+ options: {}
+ sans: []
+system_images:
+ etcd: rancher/coreos-etcd:v3.2.18
+ alpine: rancher/rke-tools:v$RKETOOLS
+ nginx_proxy: rancher/rke-tools:v$RKETOOLS
+ cert_downloader: rancher/rke-tools:v$RKETOOLS
+ kubernetes_services_sidecar: rancher/rke-tools:v$RKETOOLS
+ kubedns: rancher/k8s-dns-kube-dns-amd64:1.14.10
+ dnsmasq: rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.10
+ kubedns_sidecar: rancher/k8s-dns-sidecar-amd64:1.14.10
+ kubedns_autoscaler: rancher/cluster-proportional-autoscaler-amd64:1.0.0
+ kubernetes: rancher/hyperkube:v$HYPERCUBE
+ flannel: rancher/coreos-flannel:v0.10.0
+ flannel_cni: rancher/coreos-flannel-cni:v0.3.0
+ calico_node: rancher/calico-node:v3.1.3
+ calico_cni: rancher/calico-cni:v3.1.3
+ calico_controllers: ""
+ calico_ctl: rancher/calico-ctl:v2.0.0
+ canal_node: rancher/calico-node:v3.1.3
+ canal_cni: rancher/calico-cni:v3.1.3
+ canal_flannel: rancher/coreos-flannel:v0.10.0
+ wave_node: weaveworks/weave-kube:2.1.2
+ weave_cni: weaveworks/weave-npc:2.1.2
+ pod_infra_container: $POD_INFRA_CONTAINER
+ ingress: rancher/nginx-ingress-controller:0.16.2-rancher1
+ ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.4
+ metrics_server: rancher/metrics-server-amd64:v0.2.1
+ssh_key_path: $SSHPATH
+ssh_agent_auth: false
+authorization:
+ mode: rbac
+ options: {}
+ignore_docker_version: false
+kubernetes_version: "$KUBERNETES_VERSION"
+private_registries: []
+ingress:
+ provider: ""
+ options: {}
+ node_selector: {}
+ extra_args: {}
+cluster_name: ""
+cloud_provider:
+ name: ""
+prefix_path: ""
+addon_job_timeout: 0
+bastion_host:
+ address: ""
+ port: ""
+ user: ""
+ ssh_key: ""
+ ssh_key_path: ""
+monitoring:
+ provider: ""
+ options: {}
+EOF
+
+
+
+ echo "Installing on ${SERVER} for ${BRANCH}: RKE: ${RKE_VERSION} Kubectl: ${KUBECTL_VERSION} Helm: ${HELM_VERSION} Docker: ${DOCKER_VERSION} username: ${USERNAME}"
+ sudo echo "127.0.0.1 ${SERVER}" >> /etc/hosts
+ echo "Install docker - If you must install as non-root - comment out the docker install below - run it separately, run the user mod, logout/login and continue this script"
+ curl https://releases.rancher.com/install-docker/$DOCKER_VERSION.sh | sh
+ sudo usermod -aG docker $USERNAME
+
+ echo "Install RKE"
+ sudo wget https://github.com/rancher/rke/releases/download/v$RKE_VERSION/rke_linux-amd64
+ mv rke_linux-amd64 rke
+ sudo chmod +x rke
+ sudo mv ./rke /usr/local/bin/rke
+
+ echo "Install make - required for beijing+ - installed via yum groupinstall Development Tools in RHEL"
+ # ubuntu specific
+ sudo apt-get install make -y
+
+ sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_VERSION/bin/linux/amd64/kubectl
+ sudo chmod +x ./kubectl
+ sudo mv ./kubectl /usr/local/bin/kubectl
+ sudo mkdir ~/.kube
+ wget http://storage.googleapis.com/kubernetes-helm/helm-v${HELM_VERSION}-linux-amd64.tar.gz
+ sudo tar -zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz
+ sudo mv linux-amd64/helm /usr/local/bin/helm
+
+ echo "Bringing RKE up - using supplied cluster.yml"
+ sudo rke up
+ echo "wait 2 extra min for the cluster"
+ sleep 60
+ echo "1 more min"
+ sleep 60
+ echo "copy kube_config_cluter.yaml generated - to ~/.kube/config"
+ sudo cp kube_config_cluster.yml ~/.kube/config
+ # avoid using sudo for kubectl
+ sudo chmod 777 ~/.kube/config
+ echo "Verify all pods up on the kubernetes system - will return localhost:8080 until a host is added"
+ echo "kubectl get pods --all-namespaces"
+ kubectl get pods --all-namespaces
+ echo "install tiller/helm"
+ kubectl -n kube-system create serviceaccount tiller
+ kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
+ helm init --service-account tiller
+ kubectl -n kube-system rollout status deploy/tiller-deploy
+ echo "upgrade server side of helm in kubernetes"
+ if [ "$USERNAME" == "root" ]; then
+ helm version
+ else
+ sudo helm version
+ fi
+ echo "sleep 30"
+ sleep 30
+ if [ "$USERNAME" == "root" ]; then
+ helm init --upgrade
+ else
+ sudo helm init --upgrade
+ fi
+ echo "sleep 30"
+ sleep 30
+ echo "verify both versions are the same below"
+ if [ "$USERNAME" == "root" ]; then
+ helm version
+ else
+ sudo helm version
+ fi
+ echo "start helm server"
+ if [ "$USERNAME" == "root" ]; then
+ helm serve &
+ else
+ sudo helm serve &
+ fi
+ echo "sleep 30"
+ sleep 30
+ echo "add local helm repo"
+ if [ "$USERNAME" == "root" ]; then
+ helm repo add local http://127.0.0.1:8879
+ helm repo list
+ else
+ sudo helm repo add local http://127.0.0.1:8879
+ sudo helm repo list
+ fi
+ echo "To enable grafana dashboard - do this after running cd.sh which brings up onap - or you may get a 302xx port conflict"
+ echo "kubectl expose -n kube-system deployment monitoring-grafana --type=LoadBalancer --name monitoring-grafana-client"
+ echo "to get the nodeport for a specific VM running grafana"
+ echo "kubectl get services --all-namespaces | grep graf"
+ sudo docker version
+ helm version
+ kubectl version
+ kubectl get services --all-namespaces
+ kubectl get pods --all-namespaces
+ echo "finished!"
+}
+
+BRANCH=
+SERVER=
+ENVIRON=
+VALIDATE=false
+USERNAME=ubuntu
+SSHPATH_PREFIX=~/.ssh
+
+while getopts ":b:s:e:u:l:k:v" PARAM; do
+ case $PARAM in
+ u)
+ usage
+ exit 1
+ ;;
+ b)
+ BRANCH=${OPTARG}
+ ;;
+ e)
+ ENVIRON=${OPTARG}
+ ;;
+ s)
+ SERVER=${OPTARG}
+ ;;
+ l)
+ USERNAME=${OPTARG}
+ ;;
+ k)
+ SSHKEY=${OPTARG}
+ ;;
+ v)
+ VALIDATE=${OPTARG}
+ ;;
+ ?)
+ usage
+ exit
+ ;;
+ esac
+done
+
+if [[ -z $BRANCH ]]; then
+ usage
+ exit 1
+fi
+
+install_onap $BRANCH $SERVER $ENVIRON $USERNAME $SSHPATH_PREFIX $SSHKEY $VALIDATE