BGP VIP management: render an IPv6 ToR peer on dual-stack deployments - #1945
BGP VIP management: render an IPv6 ToR peer on dual-stack deployments#1945mkowalski wants to merge 1 commit into
Conversation
With IP_STACK=v4v6 the install-config carries one API/ingress VIP per address family, but bgpVIPConfig only rendered the IPv4 ToR peer, so the secondary-family VIPs had no same-family BGP session to be advertised over. Render a second peer for the ToR's address on the external IPv6 subnet when one exists (override: BGP_VIP_PEER_ADDRESS_V6). The ToR speaker itself already listens on both families (ENABLE_BGP_TOR renders per-family listen ranges). Validated on a dual-stack dev-scripts cluster: both sessions establish per node and both VIP families are advertised to the ToR. Assisted-By: Claude Fable 5 Signed-off-by: Mat Kowalski <mko@redhat.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
The three coexistence jobs now install IP_STACK=v4v6 clusters (with the DHCP_LEASE_EXPIRY=0 workaround the existing dual-stack lanes carry) and every verify step asserts both address families: - bgp-vip-verify (shared with the single-stack base lane, family-driven by the cluster's VIP lists): per-family ToR path counts for every API and ingress VIP (/32 and /128) and the console exercised over the ingress VIP of each family - ovn-bgp verify: unique Established route-reflector sessions equal to one per node InternalIP (per family), per-node pod subnets asserted in the matching address-family table, and the pod datapath exercised over both agnhost families - metallb pre/verify: per-family IPAddressPool ranges (.70-.90 and ::70-::90), a second BGPPeer for the ToR's IPv6 address, the lb-echo Service becomes ipFamilyPolicy PreferDualStack, and the verify asserts one LoadBalancer IP per family, each advertised from every node and reachable from the hypervisor Two fallback-path fixes found while validating on a live dual-stack cluster: wait for the MetalLB operator to create controller/speaker before rollout-waiting them (the CR-accept-to-workload window raced), and set METALLB_BGP_TYPE=frr-k8s on the dev-manifest webhook server (hardcoded 'native' rejects IPv6 pools that frr-k8s mode supports). Validated end to end on a live dual-stack (v4v6) BGP-VIP cluster with all three producers active: all three verify steps exit 0, both LB families answer, both agnhost families reachable from pods, console 200 over both ingress VIP families. Requires openshift-metal3/dev-scripts#1945 (IPv6 ToR peer in the knob) for CI installs, and the feature-side dual-stack fixes (MCO#6326 per-family kube-vip instances, kube-vip#1671 + the RT-mode NODAD fix) - red by design until those land, like everything else in this PR. Assisted-By: Claude Fable 5 Signed-off-by: Mat Kowalski <mko@redhat.com>
|
@mkowalski: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
Follow-up to #1939: with
IP_STACK=v4v6the install-config carries one API/ingress VIP per address family, butbgpVIPConfigonly rendered the IPv4 ToR peer — the secondary-family VIPs had no same-family BGP session to be advertised over. Render a second peer for the ToR's address on the external IPv6 subnet when one exists (override:BGP_VIP_PEER_ADDRESS_V6). The ToR speaker from #1929 already listens on both families.Validated on a live dual-stack dev-scripts cluster: both sessions establish per node and both VIP families are advertised to the ToR (v4 /32s and v6 /128s).
Needed for the dual-stack conversion of the
e2e-metal-ipi-bgp-vip*CI lanes (openshift/release#82912).This PR description was generated using AI. Please verify before acting on it.