diff options
Diffstat (limited to 'playbooks.d/k8s-node/playbook.bash')
-rw-r--r-- | playbooks.d/k8s-node/playbook.bash | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/playbooks.d/k8s-node/playbook.bash b/playbooks.d/k8s-node/playbook.bash new file mode 100644 index 0000000..e422452 --- /dev/null +++ b/playbooks.d/k8s-node/playbook.bash @@ -0,0 +1,103 @@ +#!/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 + 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 +} |