Design and establish the bare-metal cluster networking foundation #3
Labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gitchegumi/homelab#3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
Select the cluster's bare-metal
LoadBalancerapproach and document how service addresses and DNS will integrate with the existing network. These decisions must precede stable application ingress and UDS work.Scope
LoadBalancerimplementation.Acceptance criteria
LoadBalancerapproach and rationale are documented.LoadBalancerservice is reachable from the intended network after implementation.Dependencies / blockers
Requires a healthy base RKE2 cluster. Exact IP ranges, DNS records, and ingress implementation remain intentionally unresolved until selected during this issue.
Decision: Use MetalLB for bare-metal
LoadBalancerservicesI will deploy MetalLB in Layer 2 mode as the cluster’s initial implementation for Kubernetes services of type
LoadBalancer.MetalLB was selected because the cluster currently has a single RKE2 control-plane node and the immediate requirement is to provide stable LAN addresses for application and ingress services. It offers straightforward address-pool management, works with the existing Layer 2 network without requiring BGP-capable routing, and leaves a clear upgrade path to BGP later if the network supports it.
This decision does not prevent future control-plane high availability. If the cluster is expanded to three RKE2 server nodes, kube-vip can be added specifically for the fixed RKE2 registration and Kubernetes API address while MetalLB continues handling application services. Migrating application services to kube-vip later would also remain possible, provided the controllers use separate address pools or load-balancer classes during the transition.
Next steps:
IPAddressPoolandL2Advertisement.LoadBalancerservice.Networking foundation implementation completed
MetalLB is installed as the cluster's bare-metal
LoadBalancerimplementation in Layer 2 mode using the pinned stable release selected for this deployment.Address allocation
[LAN_SUBNET][DHCP_START]-[DHCP_END][METALLB_POOL_START]-[METALLB_POOL_END]Advertisement design
An
IPAddressPooland explicit per-nodeL2Advertisementresources are configured. Each advertisement pairs[NODE_NAME]with its[WIRED_INTERFACE]. Wireless interfaces may remain enabled for host access but are excluded from MetalLB announcements. All cluster nodes remain eligible for wired Layer 2 failover.Validation
A temporary nginx service of type
LoadBalancerwas deployed:[TEST_VIP]from the configured pool.externalTrafficPolicy: Clustersuccessfully routed traffic to the workload endpoint.DNS, ingress, and external-routing boundaries
The deliberately unresolved follow-on decisions are the public-exposure requirement, authoritative DNS/DDNS provider, final public hostnames, edge NAT/firewall policy, and certificate-management details. These are recorded for later work and are outside this networking-foundation issue.
Closed as complete