HOMELAB-1107: HA control plane — kube-vip ARP VIP + cluster_endpoint_ip #236

Open
aaron wants to merge 1 commit from plane/HOMELAB-1107-ha-control-plane-kube-vip into live
Owner

Summary

Adds cluster_endpoint_ip variable to the talos-cluster module with kube-vip ARP config patch injection. When null (Phase 1), coalesce falls back to control_planes[0].ip_address for a zero-change plan. When set (Phase 2), all cluster_endpoint references use the VIP and control planes get the kube-vip config patch.

Changes

  • variables.tf: cluster_endpoint_ip variable with IPv4 validation
  • main.tf: kube_vip_config_patch local; coalesce on CP + worker machine configs; injection into CP config_patches
  • outputs.tf: cluster_endpoint output uses coalesce

Protocol Boundaries Preserved

  • Bootstrap (talos_machine_bootstrap) and kubeconfig (talos_cluster_kubeconfig) still use bare control_planes[0].ip_address (port 50000 Talos management API, not the VIP)
  • Worker config_patches excludes kube_vip_config_patch (ARP VIP is CP-only)

New Schematic

523ce0faa528bc510fb5cdc50256129e88c21186801d770dc902a3819501f3e0 includes siderolabs/kube-vip + all existing extensions (iscsi-tools, newt, qemu-guest-agent, util-linux-tools).

Verification

  • terraform validate passes in module directory
  • All automated grep criteria from implementation plan pass
  • Worker exclusion verified: no kube_vip_config_patch in worker config_patches

Risks

Medium — this is a control plane change. Phase 1 (null default) is safe; Phase 2 (VIP activation + 2 new CP nodes) requires Aaron approval per dangerous ops policy.

  • Plan: .rpiv/artifacts/plans/2026-06-12_16-55-37_ha-control-plane-kube-vip.md
  • Design: .rpiv/artifacts/designs/2026-06-11_22-36-26_ha-control-plane-kube-vip.md
## Summary Adds `cluster_endpoint_ip` variable to the `talos-cluster` module with kube-vip ARP config patch injection. When null (Phase 1), `coalesce` falls back to `control_planes[0].ip_address` for a zero-change plan. When set (Phase 2), all `cluster_endpoint` references use the VIP and control planes get the kube-vip config patch. ## Changes - **variables.tf**: `cluster_endpoint_ip` variable with IPv4 validation - **main.tf**: `kube_vip_config_patch` local; `coalesce` on CP + worker machine configs; injection into CP `config_patches` - **outputs.tf**: `cluster_endpoint` output uses `coalesce` ## Protocol Boundaries Preserved - Bootstrap (`talos_machine_bootstrap`) and kubeconfig (`talos_cluster_kubeconfig`) still use bare `control_planes[0].ip_address` (port 50000 Talos management API, not the VIP) - Worker `config_patches` excludes `kube_vip_config_patch` (ARP VIP is CP-only) ## New Schematic `523ce0faa528bc510fb5cdc50256129e88c21186801d770dc902a3819501f3e0` includes `siderolabs/kube-vip` + all existing extensions (iscsi-tools, newt, qemu-guest-agent, util-linux-tools). ## Verification - `terraform validate` passes in module directory - All automated grep criteria from implementation plan pass - Worker exclusion verified: no `kube_vip_config_patch` in worker `config_patches` ## Risks Medium — this is a control plane change. Phase 1 (null default) is safe; Phase 2 (VIP activation + 2 new CP nodes) requires Aaron approval per dangerous ops policy. ## Related - Plan: `.rpiv/artifacts/plans/2026-06-12_16-55-37_ha-control-plane-kube-vip.md` - Design: `.rpiv/artifacts/designs/2026-06-11_22-36-26_ha-control-plane-kube-vip.md`
HOMELAB-1107: add cluster_endpoint_ip variable and kube-vip ARP config patch
Some checks failed
0/0 projects applied successfully.
CI Review / helm-validate (pull_request) Has been cancelled
Lint & Validate / yaml-lint (pull_request) Has been cancelled
Lint & Validate / shellcheck (pull_request) Has been cancelled
Release / release (pull_request) Has been cancelled
CI Review / pr-title (pull_request) Has been cancelled
CI Review / ai-review (pull_request) Has been cancelled
Lint & Validate / terraform-validate (pull_request) Has been cancelled
4ea95092e2
- Add cluster_endpoint_ip variable (string, null default, IPv4 validation)
- Add kube_vip_config_patch local with ens18 interface targeting
- Rewrite CP + worker cluster_endpoint with coalesce(null, cp[0].ip)
- Inject kube_vip_config_patch into CP config_patches compact list
- Update cluster_endpoint output to use coalesce
- Protocol boundaries preserved: bootstrap + kubeconfig use bare cp[0].ip
Some checks failed
0/0 projects applied successfully.
CI Review / helm-validate (pull_request) Has been cancelled
Required
Details
Lint & Validate / yaml-lint (pull_request) Has been cancelled
Required
Details
Lint & Validate / shellcheck (pull_request) Has been cancelled
Required
Details
Release / release (pull_request) Has been cancelled
CI Review / pr-title (pull_request) Has been cancelled
Required
Details
CI Review / ai-review (pull_request) Has been cancelled
Lint & Validate / terraform-validate (pull_request) Has been cancelled
Required
Details
This pull request has changes conflicting with the target branch.
  • core/terraform/modules/talos-cluster/main.tf
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin plane/HOMELAB-1107-ha-control-plane-kube-vip:plane/HOMELAB-1107-ha-control-plane-kube-vip
git switch plane/HOMELAB-1107-ha-control-plane-kube-vip
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aaron/infra-core!236
No description provided.