Skip to content

BGP VIP management: render an IPv6 ToR peer on dual-stack deployments - #1945

Open
mkowalski wants to merge 1 commit into
openshift-metal3:masterfrom
mkowalski:bgp-vip-v6-peer
Open

BGP VIP management: render an IPv6 ToR peer on dual-stack deployments#1945
mkowalski wants to merge 1 commit into
openshift-metal3:masterfrom
mkowalski:bgp-vip-v6-peer

Conversation

@mkowalski

Copy link
Copy Markdown
Member

Follow-up to #1939: with IP_STACK=v4v6 the install-config carries one API/ingress VIP per address family, but bgpVIPConfig only 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.

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>
@openshift-ci
openshift-ci Bot requested review from andfasano and bfournie August 6, 2026 14:42
@openshift-ci

openshift-ci Bot commented Aug 6, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign tdomnesc for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

mkowalski added a commit to mkowalski/openshift-release that referenced this pull request Aug 6, 2026
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>
@openshift-ci

openshift-ci Bot commented Aug 6, 2026

Copy link
Copy Markdown

@mkowalski: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-metal-ipi-ovn-ipv4-bond d6acf46 link false /test e2e-metal-ipi-ovn-ipv4-bond
ci/prow/e2e-metal-ipi-virtualmedia d6acf46 link false /test e2e-metal-ipi-virtualmedia
ci/prow/e2e-metal-ovn-arbiter d6acf46 link false /test e2e-metal-ovn-arbiter

Full PR test history. Your PR dashboard.

Details

Instructions 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant