Add CentOS7 support for K8s installation 43/1043/4
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Fri, 14 Jun 2019 16:14:39 +0000 (18:14 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Fri, 28 Jun 2019 22:33:47 +0000 (00:33 +0200)
Change-Id: Icd51658aed4f3280e2ee1bf5e44a68ae3fa7e5ca
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
src/foundation/scripts/k8s_common.sh

index 06d2d0d..975b43c 100755 (executable)
@@ -1,43 +1,99 @@
 #!/bin/bash -ex
 
-DOCKER_VERSION=18.06.1~ce~3-0~ubuntu
-KUBE_VERSION=1.13.0-00
-K8S_CNI_VERSION=0.6.0-00
-
-# Install basic software
-sudo apt update
-sudo apt install -y software-properties-common apt-transport-https curl
-
-# Install Docker as Prerequisite
-curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-sudo apt-key fingerprint 0EBFCD88
-sudo add-apt-repository \
-  "deb https://download.docker.com/linux/ubuntu \
-  $(lsb_release -cs) \
-  stable"
-sudo apt update
-sudo apt install -y docker-ce=${DOCKER_VERSION}
+if grep -q -e rhel /etc/*-release; then
+  OS_ID_LIKE=rhel
+elif grep -q -e debian /etc/*-release; then
+  OS_ID_LIKE=debian
+fi
+
+case ${OS_ID_LIKE:-} in
+debian)
+  DOCKER_VERSION=18.06.1~ce~3-0~ubuntu
+  KUBE_VERSION=1.13.0-00
+  K8S_CNI_VERSION=0.6.0-00
+  KUBELET_CFG=/etc/default/kubelet
+  ;;
+rhel)
+  DOCKER_VERSION=18.06.1.ce-3.el7
+  KUBE_VERSION=1.13.0-0
+  K8S_CNI_VERSION=0.6.0-0
+  KUBELET_CFG=/etc/sysconfig/kubelet
+  ;;
+*)
+  echo 'Unsupported distribution detected!'
+  exit 1
+  ;;
+esac
+
+case ${OS_ID_LIKE:-} in
+debian)
+  # Install basic software
+  sudo apt update
+  sudo apt install -y software-properties-common apt-transport-https curl
+
+  # Install Docker as Prerequisite
+  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
+  sudo apt-key fingerprint 0EBFCD88
+  sudo add-apt-repository \
+    "deb https://download.docker.com/linux/ubuntu \
+    $(lsb_release -cs) \
+    stable"
+  sudo apt update
+  sudo apt install -y docker-ce=${DOCKER_VERSION}
+  ;;
+rhel)
+  sudo yum install -y yum-utils device-mapper-persistent-data lvm2
+  sudo yum-config-manager --add-repo \
+    https://download.docker.com/linux/centos/docker-ce.repo
+  sudo yum install -y \
+    docker-ce-$DOCKER_VERSION \
+    docker-ce-cli-$DOCKER_VERSION \
+    containerd.io
+  ;;
+esac
 
 # Disable swap on your machine
 sudo swapoff -a
 
-# Install Kubernetes with Kubeadm
-curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
+case ${OS_ID_LIKE:-} in
+debian)
+  # Install Kubernetes with Kubeadm
+  curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
 
-cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
+  cat <<-EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
 deb https://apt.kubernetes.io/ kubernetes-xenial main
 EOF
-sudo apt update
-# Minor fix for broken kubernetes-cni dependency in upstream xenial repo
-sudo apt install -y \
-  kubernetes-cni=${K8S_CNI_VERSION} kubelet=${KUBE_VERSION} kubeadm=${KUBE_VERSION} kubectl=${KUBE_VERSION}
-sudo apt-mark hold kubernetes-cni kubelet kubeadm kubectl
-
-#Add extra flags to Kubelet
-if ! grep -q -e 'fail-swap-on' /etc/default/kubelet; then
-   sudo sed 's/KUBELET_EXTRA_ARGS=/KUBELET_EXTRA_ARGS=--fail-swap-on=false --feature-gates HugePages=false/' -i /etc/default/kubelet
+  sudo apt update
+  # Minor fix for broken kubernetes-cni dependency in upstream xenial repo
+  sudo apt install -y \
+    kubernetes-cni=${K8S_CNI_VERSION} kubelet=${KUBE_VERSION} \
+    kubeadm=${KUBE_VERSION} kubectl=${KUBE_VERSION}
+  sudo apt-mark hold kubernetes-cni kubelet kubeadm kubectl
+  ;;
+rhel)
+  cat <<-EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
+[kubernetes]
+name=Kubernetes
+baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$(uname -m)
+enabled=1
+gpgcheck=1
+repo_gpgcheck=1
+gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
+       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
+EOF
+  sudo yum install -y kubelet-$KUBE_VERSION kubeadm-$KUBE_VERSION \
+                      kubectl-$KUBE_VERSION kubernetes-cni-$K8S_CNI_VERSION
+  ;;
+esac
+
+# Add extra flags to Kubelet
+if ! grep -q -e 'fail-swap-on' $KUBELET_CFG; then
+  sudo sed 's/KUBELET_EXTRA_ARGS=/KUBELET_EXTRA_ARGS=--fail-swap-on=false --feature-gates HugePages=false/' -i $KUBELET_CFG
 fi
 
+sudo systemctl enable docker kubelet
+sudo systemctl restart docker kubelet
+
 sudo modprobe br_netfilter
 _conf='/etc/sysctl.d/99-akraino-iec.conf'
 echo 'net.bridge.bridge-nf-call-iptables = 1' |& sudo tee "${_conf}"