Skip to content

Fix MetalLB L2Advertisement to use baremetal network interface only#75742

Draft
zhfeng wants to merge 1 commit intoopenshift:mainfrom
zhfeng:fix-metallb-l2-interface-selection
Draft

Fix MetalLB L2Advertisement to use baremetal network interface only#75742
zhfeng wants to merge 1 commit intoopenshift:mainfrom
zhfeng:fix-metallb-l2-interface-selection

Conversation

@zhfeng
Copy link
Contributor

@zhfeng zhfeng commented Mar 5, 2026

Summary

  • Dynamically detect the baremetal network interface and restrict MetalLB L2 announcements to that interface
  • Without this, extra network interfaces (e.g. nmstate1/nmstate2 from baremetalds-devscripts-conf-extranetwork) cause MetalLB speakers to fail to announce VIPs, breaking LoadBalancer service connectivity from the infra cluster
  • Root cause: MetalLB speakers create ARP responders on ALL interfaces when no interfaces filter is set. With extra networks present, the speaker fails to properly announce VIPs on the baremetal network

Evidence

  • periodic-ci-openshift-hypershift-release-4.21-periodics-e2e-kubevirt-metal-ovn (no extra networks) passes the [sig-kubevirt] services ... should allow connections to pods from infra cluster pod via LoadBalancer service test
  • periodic-ci-openshift-hypershift-release-4.21-periodics-mce-e2e-kubevirt-metal-ovn (has extra networks via nmstate) fails the same test consistently
  • Speaker logs show: non-MCE speakers have 3 stable interfaces (enp1s0, br-ex, ovn-k8s-mp0); MCE speakers have 5+ interfaces including enp3s0/enp4s0 (extra networks)
  • MetalLB controller allocated VIP 192.168.111.33 but no speaker ever announced it

Test plan

  • Rehearse periodic-ci-openshift-hypershift-release-4.21-periodics-mce-e2e-kubevirt-metal-ovn to verify the LoadBalancer test passes
  • Verify periodic-ci-openshift-hypershift-release-4.21-periodics-e2e-kubevirt-metal-ovn still passes (non-MCE, no extra networks)

🤖 Generated with Claude Code

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 5, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 5, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 5, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: zhfeng
Once this PR has been reviewed and has the lgtm label, please assign qinqon 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

@zhfeng
Copy link
Contributor Author

zhfeng commented Mar 5, 2026

/pj-rehearse periodic-ci-openshift-hypershift-release-4.21-periodics-mce-e2e-kubevirt-metal-ovn

@openshift-ci-robot
Copy link
Contributor

@zhfeng: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@zhfeng zhfeng force-pushed the fix-metallb-l2-interface-selection branch from c7ec3cc to 2c22953 Compare March 5, 2026 23:43
@zhfeng
Copy link
Contributor Author

zhfeng commented Mar 5, 2026

/pj-rehearse periodic-ci-openshift-hypershift-release-4.21-periodics-mce-e2e-kubevirt-metal-ovn

@openshift-ci-robot
Copy link
Contributor

@zhfeng: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@zhfeng
Copy link
Contributor Author

zhfeng commented Mar 6, 2026

/pj-rehearse periodic-ci-openshift-hypershift-release-4.21-periodics-mce-e2e-kubevirt-metal-ovn

@openshift-ci-robot
Copy link
Contributor

@zhfeng: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@zhfeng
Copy link
Contributor Author

zhfeng commented Mar 6, 2026

/pj-rehearse abort

@openshift-ci-robot
Copy link
Contributor

@zhfeng: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@zhfeng zhfeng force-pushed the fix-metallb-l2-interface-selection branch from 2c22953 to 08b8f08 Compare March 6, 2026 04:52
@zhfeng zhfeng force-pushed the fix-metallb-l2-interface-selection branch from 08b8f08 to c49b7cf Compare March 6, 2026 05:00
@zhfeng
Copy link
Contributor Author

zhfeng commented Mar 6, 2026

/pj-rehearse periodic-ci-openshift-hypershift-release-4.21-periodics-mce-e2e-kubevirt-metal-ovn

@openshift-ci-robot
Copy link
Contributor

@zhfeng: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-ci-robot
Copy link
Contributor

[REHEARSALNOTIFIER]
@zhfeng: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-hypershift-release-4.21-e2e-kubevirt-metal-conformance openshift/hypershift presubmit Registry content changed
pull-ci-openshift-hypershift-release-4.20-e2e-kubevirt-metal-conformance openshift/hypershift presubmit Registry content changed
pull-ci-openshift-hypershift-release-4.19-e2e-kubevirt-metal-conformance openshift/hypershift presubmit Registry content changed
pull-ci-openshift-hypershift-release-4.18-e2e-kubevirt-metal-conformance openshift/hypershift presubmit Registry content changed
pull-ci-openshift-hypershift-release-4.17-e2e-kubevirt-metal-conformance openshift/hypershift presubmit Registry content changed
pull-ci-openshift-hypershift-release-4.16-e2e-kubevirt-metal-ovn-conformance openshift/hypershift presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-main-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-5.0-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.23-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.22-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.21-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.20-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.19-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.18-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.17-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.16-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.15-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-cloud-provider-kubevirt-release-4.14-hypershift-kubevirt-conformance-baremetalds openshift/cloud-provider-kubevirt presubmit Registry content changed
pull-ci-openshift-origin-main-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-5.0-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.23-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.22-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.21-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.20-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed
pull-ci-openshift-origin-release-4.19-e2e-baremetalds-kubevirt openshift/origin presubmit Registry content changed

A total of 106 jobs have been affected by this change. The above listing is non-exhaustive and limited to 25 jobs.

A full list of affected jobs can be found here

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

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

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants