X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tools%2Fk8s%2Fheat%2Fscripts%2Fk8s_vm_install.sh;h=6f20ea2a62fe827b929689ad6b9d20d3f8b50dca;hb=b73a566a8b19e6255deca95384888606089bb9bd;hp=2653f38880191ef4b178fbf7534c7b2c4d8f11c6;hpb=dc00cdf008775e2ac5dddb186d1eb81e80370b69;p=it%2Fdep.git diff --git a/tools/k8s/heat/scripts/k8s_vm_install.sh b/tools/k8s/heat/scripts/k8s_vm_install.sh index 2653f388..6f20ea2a 100644 --- a/tools/k8s/heat/scripts/k8s_vm_install.sh +++ b/tools/k8s/heat/scripts/k8s_vm_install.sh @@ -1,6 +1,6 @@ #!/bin/bash -x ################################################################################ -# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019,2020 AT&T Intellectual Property. # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -131,7 +131,7 @@ if [[ ${UBUNTU_RELEASE} == 16.* ]]; then elif [[ ${UBUNTU_RELEASE} == 18.* ]]; then echo "Installing on Ubuntu $UBUNTU_RELEASE (Bionic Beaver)" if [ ! -z "${DOCKERV}" ]; then - DOCKERVERSION="${DOCKERV}-0ubuntu1~18.04.5" + DOCKERVERSION="${DOCKERV}-0ubuntu1~18.04.4" fi else echo "Unsupported Ubuntu release ($UBUNTU_RELEASE) detected. Exit." @@ -148,8 +148,7 @@ echo "APT::Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries # install low latency kernel, docker.io, and kubernetes apt-get update -apt-get -y autoremove -RES=$(apt-get install -y virt-what curl jq netcat 2>&1) +RES=$(apt-get install -y virt-what curl jq netcat make ipset moreutils 2>&1) if [[ $RES == */var/lib/dpkg/lock* ]]; then echo "Fail to get dpkg lock. Wait for any other package installation" echo "process to finish, then rerun this script" @@ -162,14 +161,25 @@ if ! echo $(virt-what) | grep "virtualbox"; then apt-get install -y linux-image-4.15.0-45-lowlatency fi -if kubeadm version; then - # remove existing Kubernetes installation - echo "Removing existing Kubernetes installation, version $(kubeadm version)" - kubeadm reset -f - rm -rf ~/.kube -fi - APTOPTS="--allow-downgrades --allow-change-held-packages --allow-unauthenticated --ignore-hold " + +# remove infrastructure stack if present +# note the order of the packages being removed. +for PKG in kubeadm docker.io; do + INSTALLED_VERSION=$(dpkg --list |grep ${PKG} |tr -s " " |cut -f3 -d ' ') + if [ ! -z ${INSTALLED_VERSION} ]; then + if [ "${PKG}" == "kubeadm" ]; then + kubeadm reset -f + rm -rf ~/.kube + apt-get -y $APTOPTS remove kubeadm kubelet kubectl kubernetes-cni + else + apt-get -y $APTOPTS remove "${PKG}" + fi + fi +done +apt-get -y autoremove + +# install docker if [ -z ${DOCKERVERSION} ]; then apt-get install -y $APTOPTS docker.io else @@ -249,7 +259,7 @@ apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs EOF - elif [[ ${KUBEV} == 1.16.* ]]; then + elif [[ ${KUBEV} == 1.15.* ]] || [[ ${KUBEV} == 1.16.* ]]; then cat </root/config.yaml apiVersion: kubeadm.k8s.io/v1beta2 kubernetesVersion: v${KUBEV} @@ -303,16 +313,14 @@ EOF mkdir -p .kube cp -i /etc/kubernetes/admin.conf /root/.kube/config chown root:root /root/.kube/config + export KUBECONFIG=/root/.kube/config + echo "KUBECONFIG=${KUBECONFIG}" >> /etc/environment # at this point we should be able to use kubectl kubectl get pods --all-namespaces # install flannel - if [[ ${KUBEV} == 1.16.* ]]; then - kubectl apply -f "https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml" - else - kubectl apply -f "https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml" - fi + kubectl apply -f "https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml" # waiting for all 8 kube-system pods to be in running state # (at this point, minions have not joined yet) @@ -321,33 +329,35 @@ EOF # if running a single node cluster, need to enable master node to run pods kubectl taint nodes --all node-role.kubernetes.io/master- - cd /root - # install RBAC for Helm - kubectl create -f rbac-config.yaml - # install Helm HELMV=$(cat /opt/config/helm_version.txt) HELMVERSION=${HELMV} + if [ ! -e helm-v${HELMVERSION}-linux-amd64.tar.gz ]; then + wget https://storage.googleapis.com/kubernetes-helm/helm-v${HELMVERSION}-linux-amd64.tar.gz + fi cd /root && rm -rf Helm && mkdir Helm && cd Helm - wget https://storage.googleapis.com/kubernetes-helm/helm-v${HELMVERSION}-linux-amd64.tar.gz - tar -xvf helm-v${HELMVERSION}-linux-amd64.tar.gz + tar -xvf ../helm-v${HELMVERSION}-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm + cd /root + # install RBAC for Helm + kubectl create -f rbac-config.yaml + rm -rf /root/.helm if [[ ${KUBEV} == 1.16.* ]]; then # helm init uses API extensions/v1beta1 which is depreciated by Kubernetes # 1.16.0. Until upstream (helm) provides a fix, this is the work-around. - helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml > helm-init.yaml - sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' ./helm-init.yaml > helm-init-patched.yaml - kubectl apply -f ./helm-init-patched.yaml + helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml > /tmp/helm-init.yaml + sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' /tmp/helm-init.yaml > /tmp/helm-init-patched.yaml + kubectl apply -f /tmp/helm-init-patched.yaml else helm init --service-account tiller fi helm init -c - export HELM_HOME="/root/.helm" + export HELM_HOME="$(pwd)/.helm" + echo "HELM_HOME=${HELM_HOME}" >> /etc/environment # waiting for tiller pod to be in running state - wait_for_pods_running 1 kube-system tiller-deploy while ! helm version; do echo "Waiting for Helm to be ready" sleep 15