#!/bin/bash

sudo apt-get update
sudo apt-get install curl gpg wget

echo "Installing kubernetes repo v1.34"

# Installing pkgs.k8s.io repo to apt
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo rm /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg


echo "Installing tools..."
sudo apt-get update
sudo apt-get install kubeadm kubelet kubectl containerd containernetworking-plugins -y

echo "Marking the essential packages as hold..."
sudo apt-mark hold kubeadm kubelet kubectl

echo "Setting up forwarding..."
# Setup IPv4/6 forwarding / routing
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 1
EOF

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

sudo sysctl --system


sudo swapoff -a


echo "Preparing containerd"
sudo mkdir -p /etc/containerd
sudo rm /etc/containerd/*
sudo containerd config default | sudo tee /etc/containerd/config.toml

# Enable SystemdCgroup = true
sudo sed -i 's/            SystemdCgroup = false/            SystemdCgroup = true/' /etc/containerd/config.toml

# Apply changes
sudo systemctl enable containerd
sudo systemctl restart containerd

echo "Done!"

echo "Ensure that you have no more swap devices enabled in /etc/fstab!"
echo "Otherwise kubernetes wont start!"
