k8s-operator: make PeerRelay endpoints reachable on EKS by default (#20834)
This commit changes how PeerRelay services are exposed on AWS. A Network Load Balancer only forwards to targets in an availability zone enabled on it, and spec.aws.elasticIPs pins each service to a single subnet, which enables just one zone. A replica scheduled anywhere else silently receives nothing while still reporting PeerRelayReady with an address in status.endpoints. Without spec.aws we now leave the subnet unpinned, so the AWS Load Balancer Controller spreads the load balancer over every zone it finds, and cross-zone load balancing is on by default so any of its addresses reach the pod. Hostname resolution is no longer gated on the eip-allocations annotation, which had left these unpinned services in EndpointsPending forever, and a failure to resolve now logs at debug since it is expected while a load balancer provisions. Such a load balancer has an address per zone, and AWS bills for each, so every one of them is now advertised rather than only the lowest sorted. That also lets a peer reach the relay when one zone is unreachable. status.endpoints gains address as a second list map key so a replica can hold an entry per address; no field changes, so existing readers of endpoints[].address keep working. Readiness counts the replicas that have an endpoint rather than the entries, so a replica with several addresses cannot mask one that has none. The pods now serve containerboot's health check endpoint and the load balancer is pointed at it over HTTP. A peer relay listens only on UDP, so the default TCP check against the port the load balancer forwards could never succeed and every target sat unhealthy while relaying perfectly well. /healthz reports 200 once the device has tailnet addresses, which is the condition that actually matters. The CRD docs now describe spec.aws as the exception, note that it also needs a ProxyClass pinning pods to the zone of the subnets it names, and drop the claim that an Elastic IP has an availability zone of its own. Fixes: https://github.com/tailscale/tailscale/issues/20833 Signed-off-by: David Bond <davidsbond93@gmail.com>
D
David Bond committed
7f458941ae63241aaffd7b5e2c27938ff827661c
Parent: db07a34
Committed by GitHub <noreply@github.com>
on 8/12/2026, 2:31:16 PM