#!/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 <