--- # Deploy kube-vip as the control-plane HA VIP (192.168.1.49 on dev) for the kube-API. # Control-plane ONLY (svc_enable=false) — Cilium owns Service LoadBalancing. # Writes the manifest into each server's k3s auto-deploy dir; k3s applies it. # # PART OF THE ONE-COMMAND BRING-UP SINCE 2026-09-06, not a separate operator step: # playbooks/site.yml imports this play BETWEEN k3s.yml and cilium.yml, because Cilium's # k8sServiceHost is now this VIP (k3s_apiserver_endpoint, group_vars/all.yml) and the CNI # cannot be installed against an endpoint nothing announces yet. The role's final task waits # for the VIP to answer on 6443, so a failure to float it stops the run here with a named # cause instead of surfacing later as unreachable cilium-agents. # # TARGET (R-ENV-02): `k3s_hosts` defaults to dev's `k3s_servers`; prod is # ansible-playbook playbooks/kube-vip.yml -e k3s_hosts=k3s_prod # (the VIP itself comes from kube_vip_address, already scoped per environment in # group_vars — dev 192.168.1.49, prod 192.168.2.9). - name: Deploy kube-vip control-plane VIP hosts: "{{ k3s_hosts | default('k3s_servers') }}" become: true gather_facts: true roles: - role: kube_vip