#!/usr/bin/env bash BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.cert-hash]="required" BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.master.address]="required" BASHTARD_PLAYBOOK_VARS[$BASHTARD_PLAYBOOK.token]="required" playbook_add() { local version version="1.29" case "${BASHTARD_PLATFORM[key]}" in linux-debian_gnu_linux) # Fetch the apt key info "$BASHTARD_PLAYBOOK" "Adding apt repository" mkdir -pv -m 755 -- /etc/apt/keyrings curl -fsSL "https://pkgs.k8s.io/core:/stable:/v$version/deb/Release.key" \ | gpg --dearmor \ > /etc/apt/keyrings/kubernetes-apt-keyring.gpg printf "deb [signed-by=%s] %s /\n" \ "/etc/apt/keyrings/kubernetes-apt-keyring.gpg" \ "https://pkgs.k8s.io/core:/stable:/v$version/deb/" \ > /etc/apt/sources.list.d/kubernetes.list apt update ;; esac pkg install containerd pkg install kubeadm pkg install kubectl pkg install kubelet info "$BASHTARD_PLAYBOOK" "Enabling forwarding" cat <<-EOF > "$(config "fs.etcdir")/sysctl.d/kubernetes.conf" net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 EOF sysctl --system info "$BASHTARD_PLAYBOOK" "Enabling kernel modules" cat <<-EOF > "$(config "fs.etcdir")/modules-load.d/kubernetes.conf" br_netfilter overlay EOF modprobe overlay modprobe br_netfilter if [[ "$(config "$BASHTARD_PLAYBOOK.node-ip" "")" != "" ]] then notice "$BASHTARD_PLAYBOOK" "Setting node ip in $(config "fs.etcdir")/default/kubelet" cat <<-EOF > "$(config "fs.etcdir")/default/kubelet" KUBELET_EXTRA_ARGS="--node-ip=$(config "$BASHTARD_PLAYBOOK.node-ip")" EOF fi notice "$BASHTARD_PLAYBOOK" "Initialize kubeadm" kubeadm join \ --discovery-token-ca-cert-hash "$(config "$BASHTARD_PLAYBOOK.cert-hash")" \ --node-name="${BASHTARD_PLATFORM[fqdn]}" \ --token "$(config "$BASHTARD_PLAYBOOK.token")" \ "$(config "$BASHTARD_PLAYBOOK.master.address"):$(config "$BASHTARD_PLAYBOOK.master.port" "6443")" } playbook_sync() { :; } playbook_del() { kubectl drain "${BASHTARD_PLATFORM[fqdn]}" \ --delete-emptydir-data \ --force \ --ignore-daemonsets kubeadm reset --force iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X ipvsadm -C rm -fr -- \ "$(config "fs.etcdir")/modules-load.d/kubernetes.conf" \ "$(config "fs.etcdir")/sysctl.d/kubernetes.conf" \ "$(config "fs.etcdir")/cni/net.d" \ "$(config "fs.etcdir")/kubernetes" \ "/var/lib/etcd" \ "/var/lib/cni" pkg uninstall kubectl pkg uninstall kubeadm pkg uninstall kubelet pkg uninstall containerd case "${BASHTARD_PLATFORM[key]}" in linux-debian_gnu_linux) # Fetch the apt key info "$BASHTARD_PLAYBOOK" "Removing apt repository" rm -fr -- \ /etc/apt/keyrings/kubernetes-apt-keyring.gpg \ /etc/apt/sources.list.d/kubernetes.list ;; esac }