diff --git a/tools/gate/deploy-k8s-kubeadm.sh b/tools/gate/deploy-k8s-kubeadm.sh new file mode 100755 index 000000000..507f0a9fc --- /dev/null +++ b/tools/gate/deploy-k8s-kubeadm.sh @@ -0,0 +1,228 @@ +#!/bin/bash +# 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. + +set -ex + +: "${HELM_VERSION:="v3.6.3"}" +: "${KUBE_VERSION:="1.21.5-00"}" +: "${CALICO_VERSION:="v3.20"}" +: "${YQ_VERSION:="v4.6.0"}" + +export DEBCONF_NONINTERACTIVE_SEEN=true +export DEBIAN_FRONTEND=noninteractive + +sudo swapoff -a + +echo "DefaultLimitMEMLOCK=16384" | sudo tee -a /etc/systemd/system.conf +sudo systemctl daemon-reexec + +function configure_resolvconf { + # here with systemd-resolved disabled, we'll have 2 separate resolv.conf + # 1 - /etc/resolv.conf - to be used for resolution on host + + kube_dns_ip="10.96.0.10" + # keep all nameservers from both resolv.conf excluding local addresses + old_ns=$(grep -P --no-filename "^nameserver\s+(?!127\.0\.0\.|${kube_dns_ip})" \ + /etc/resolv.conf /run/systemd/resolve/resolv.conf | sort | uniq) + + # Add kube-dns ip to /etc/resolv.conf for local usage + sudo bash -c "echo 'nameserver ${kube_dns_ip}' > /etc/resolv.conf" + if [ -z "${HTTP_PROXY}" ]; then + sudo bash -c "printf 'nameserver 8.8.8.8\nnameserver 8.8.4.4\n' > /run/systemd/resolve/resolv.conf" + sudo bash -c "printf 'nameserver 8.8.8.8\nnameserver 8.8.4.4\n' >> /etc/resolv.conf" + else + sudo bash -c "echo \"${old_ns}\" > /run/systemd/resolve/resolv.conf" + sudo bash -c "echo \"${old_ns}\" >> /etc/resolv.conf" + fi + + for file in /etc/resolv.conf /run/systemd/resolve/resolv.conf; do + sudo bash -c "echo 'search svc.cluster.local cluster.local' >> ${file}" + sudo bash -c "echo 'options ndots:5 timeout:1 attempts:1' >> ${file}" + done +} + +# NOTE: Clean Up hosts file +sudo sed -i '/^127.0.0.1/c\127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4' /etc/hosts +sudo sed -i '/^::1/c\::1 localhost6 localhost6.localdomain6' /etc/hosts + +configure_resolvconf + +# shellcheck disable=SC1091 +. /etc/os-release + +# NOTE: Add docker repo +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +sudo apt-key fingerprint 0EBFCD88 +sudo add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) \ + stable" + +# NOTE: Configure docker +docker_resolv="/run/systemd/resolve/resolv.conf" +docker_dns_list="$(awk '/^nameserver/ { printf "%s%s",sep,"\"" $NF "\""; sep=", "} END{print ""}' "${docker_resolv}")" + +sudo -E mkdir -p /etc/docker +sudo -E tee /etc/docker/daemon.json <