Runbooks
Operationele how-to's, afgeleid van de Ansible-playbooks en Terraform-modules in de repo.
Alle homelab-commando's draaien vanaf jumpy — niet vanaf alma (alma's kubectl
wijst naar productie). Ansible-commando's draaien vanuit ansible/, Terraform vanuit
de betreffende module onder terraform/.
VM's provisionen (Terraform)
De Kubernetes-VM's (3 control-plane + 3 workers) worden data-driven aangemaakt door per-shape templates te clonen. De shape (cpu/mem/disk) komt 100% uit de template — er zijn bewust geen post-clone hardware-overrides (zie Beslissingen).
cd terraform/k8s-cluster
terraform plan
terraform apply # vereist bevestiging
Kubernetes zelf wordt niet door Terraform geconfigureerd, maar door de Ansible-playbooks hieronder.
Templates bouwen
Bouwt de K8s-VM-templates op de Proxmox-hosts. VMID's zijn cluster-breed uniek, dus elke host heeft zijn eigen reeks (px-01 → 9001/9002, px-02 → 9011/9012, px-03 → 9021/9022).
ansible-playbook -i inventory/proxmox-hosts.yml playbooks/build-k8s-templates.yml
K8s greenfield bootstrap
Volgorde voor een vers HA-cluster (vanuit ansible/):
# 1. OS-prerequisites op alle nodes (incl. containerd)
ansible-playbook -i inventory/hosts.yml playbooks/prepare-nodes.yml
# 2. kubeadm/kubelet/kubectl installeren
ansible-playbook -i inventory/hosts.yml playbooks/kubeadm-install-packages.yml
# 3. (alleen bij herbouw) vorige clusterstaat opruimen
ansible-playbook -i inventory/hosts.yml playbooks/kubeadm-cleanup-before-bootstrap.yml
# 4. HA control-plane bootstrappen (kube-vip VIP .201) + workers joinen
ansible-playbook -i inventory/hosts.yml playbooks/kubeadm-bootstrap.yml
# 5. Post-bootstrap: kubeconfig ophalen + addons
ansible-playbook -i inventory/hosts.yml playbooks/kubeadm-post-bootstrap.yml
De kubeconfig blijft naar de kube-vip VIP 192.168.178.201:6443 wijzen — dat overleeft
het uitvallen van een control-plane-node.
Node-onderhoud & upgrades
Housekeeping (journald-cap + wekelijkse cleanup-timer, geen upgrades):
ansible-playbook -i inventory/hosts.yml playbooks/node-maintenance.yml
ansible-playbook -i inventory/proxmox-hosts.yml playbooks/node-maintenance.yml
Package-updates, drain-aware, één node tegelijk (draai uitsluitend vanaf jumpy — gebruikt
kubectl via delegate_to: localhost):
# K8s-nodes: drain → upgrade → reboot → uncordon
ansible-playbook -i inventory/hosts.yml playbooks/node-update.yml
# VM's: upgrade → reboot
ansible-playbook -i inventory/proxmox-hosts.yml playbooks/node-update.yml
node-update.yml houdt kubelet/kubeadm/kubectl op apt-mark hold. Een cluster-versie-hop
is een aparte operatie via playbooks/kubeadm-upgrade.yml.
Cilium upgraden
helm upgrade cilium cilium/cilium -n kube-system \
-f cluster-config/infra/cilium/values.yaml
Kerninstellingen: kubeProxyReplacement=true, Hubble aan, Gateway API aan.
Applicaties deployen (Proxmox-VM's)
De Nextcloud-tenants, proxy en Portainer draaien als Docker-compose-stacks op de laptop-Proxmox-VM's. Deploy via Ansible:
ansible-playbook -i inventory/proxmox-hosts.yml playbooks/deploy-nextcloud.yml
ansible-playbook -i inventory/proxmox-hosts.yml playbooks/deploy-proxy.yml
ansible-playbook -i inventory/proxmox-hosts.yml playbooks/deploy-portainer.yml