--- # kube_vip role defaults — control-plane HA VIP for the k3s kube-API. # # kube-vip runs as a DaemonSet on the control-plane nodes and floats a single # virtual IP (kube_vip_address) that always points at the current leader, giving # the kube-apiserver a stable failover endpoint (an operator port-forward fronts # it at 192.168.1.49:6443). It is CONTROL-PLANE ONLY (svc_enable=false): Cilium # owns Service LoadBalancing (L2 pool .53-.60), so kube-vip must not touch # Services or the two would fight over ARP for LoadBalancer IPs. # The floating control-plane VIP. Defined in group_vars/all.yml so k3s_server's # tls-san list and this role stay in parity; this default is the fallback. kube_vip_address: "192.168.1.49" # Image pinned deliberately — a version bump is a code change (verified tag on # ghcr.io). v0.8.9 is a current v0.8.x release. kube_vip_version: "v0.8.9" kube_vip_image: "ghcr.io/kube-vip/kube-vip:{{ kube_vip_version }}" kube_vip_namespace: "kube-system" kube_vip_port: 6443 # Empty => auto-detected per host (the interface holding 192.168.1.5x); override # only if detection is wrong. kube_vip_interface: "" # Leader-election tuning (seconds) — a snappy failover without thrashing. kube_vip_lease_duration: 15 kube_vip_renew_deadline: 10 kube_vip_retry_period: 2 # k3s auto-deploy manifests dir: k3s applies anything here on start, so kube-vip # is reproducible and independent of Flux/Helm. kube_vip_manifest_path: "/var/lib/rancher/k3s/server/manifests/kube-vip.yaml"