Skip to content

Comments

Robot Upgrade: metallb chart upgrade from 0.14.9 to 0.15.3#3788

Open
weizhoublue wants to merge 1 commit intomainfrom
upgrade/metallb/0.15.3
Open

Robot Upgrade: metallb chart upgrade from 0.14.9 to 0.15.3#3788
weizhoublue wants to merge 1 commit intomainfrom
upgrade/metallb/0.15.3

Conversation

@weizhoublue
Copy link
Member

I am robot, upgrade: project metallb chart upgrade from 0.14.9 to 0.15.3

@gemini-code-assist
Copy link

Summary of Changes

Hello @weizhoublue, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request performs a significant upgrade of the metallb Helm chart from version 0.14.9 to 0.15.3. This update encompasses a range of improvements, including bumping the FRR version, introducing new Custom Resource Definitions for enhanced observability, and providing more robust network policy configurations. The changes also refine BGP peering options, add detailed IP address pool status reporting, and implement security hardening measures across various components, aiming to improve the overall stability, manageability, and security of MetalLB deployments.

Highlights

  • Metallb Chart Upgrade: The core Metallb Helm chart has been upgraded from version 0.14.9 to 0.15.3, bringing the latest features and fixes.
  • FRR Version Update: The underlying Free Range Routing (FRR) component has been updated from version 9.1.0 to 10.4.1, improving routing capabilities and stability.
  • New Custom Resource Definitions (CRDs): Two new CRDs, ConfigurationState and ServiceBGPStatus, have been introduced to provide better observability and status reporting for MetalLB components and BGP sessions.
  • Enhanced Network Policy Configuration: New configuration options for network policies have been added, allowing for more granular control over network traffic to and from MetalLB components, including an optional default deny policy.
  • Improved BGP Peer Configuration: The BGPPeer CRD now supports dualStackAddressFamily and interface fields, and the peerAddress field is no longer strictly required, offering more flexible BGP peering setups.
  • IPAddressPool Status Fields: The IPAddressPool CRD now includes status fields to report assigned and available IPv4/IPv6 addresses, enhancing monitoring capabilities for IP address usage.
  • Prometheus Alerting Enhancements: Prometheus rules for address pool exhaustion and usage now support an excludePools parameter, allowing specific pools to be ignored from alerting.
  • Security Context Hardening: Security contexts for several containers, including kube-rbac-proxy and FRR-related components, have been hardened by setting readOnlyRootFilesystem to true and allowPrivilegeEscalation to false.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request automates the upgrade of the metallb Helm chart from version 0.14.9 to 0.15.3. The upgrade introduces several new features, including new Custom Resource Definitions (CRDs) for status reporting (ConfigurationState, ServiceBGPStatus, BGPSessionState) and support for unnumbered BGP peering. Importantly, this update also includes significant security hardening by adding securityContext to multiple containers, making root filesystems read-only and preventing privilege escalation. While the changes are largely positive and align with the new version, I've identified two high-severity issues related to missing validation in the updated CRDs, which could lead to invalid configurations being accepted by the Kubernetes API server. Please see the detailed comments for suggestions on how to address these.

Comment on lines 680 to 682
required:
- myASN
- peerAddress
type: object

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The peerAddress field has been removed from the required list to support unnumbered BGP peering via the new interface field. However, there is no validation to ensure that either peerAddress or interface is specified, as stated in the interface field's description ("Address and Interface are mutually exclusive and one of them must be specified."). This could allow users to create invalid BGPPeer resources.

It's recommended to add a CEL validation rule to enforce this constraint. For example:

x-kubernetes-validations:
  - rule: "has(self.peerAddress) != has(self.interface)"
    message: "Either peerAddress or interface must be set, but not both."

This should be added under the properties of the BGPPeerSpec for the v1beta2 version.

type: object
required:
- address
type: object

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The address field has been removed from the required list for a neighbor to support unnumbered BGP peering via the new interface field. However, similar to the BGPPeer CRD, there is no validation here to ensure that either address or interface is specified. The description for the interface field states: "Address and Interface are mutually exclusive and one of them must be specified." The lack of validation could lead to invalid configurations.

I recommend adding a CEL validation rule to enforce this. For example:

x-kubernetes-validations:
  - rule: "has(self.address) != has(self.interface)"
    message: "Either address or interface must be set, but not both."

This should be added under the properties for a neighbor item in the neighbors array.

@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 7 times, most recently from b2f4316 to 1156ba6 Compare December 11, 2025 20:10
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 8 times, most recently from a69c0b2 to ad92a97 Compare December 19, 2025 20:09
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 8 times, most recently from 1b12527 to fc2ac6d Compare December 27, 2025 20:09
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 2 times, most recently from 700124f to f9c1da3 Compare December 29, 2025 20:10
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 7 times, most recently from f105a59 to 35ff566 Compare January 28, 2026 20:13
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 6 times, most recently from 823aeb9 to 6a09b26 Compare February 4, 2026 20:14
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 7 times, most recently from 118098d to 7669c96 Compare February 11, 2026 20:17
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch 8 times, most recently from 7bb69b5 to b64009f Compare February 19, 2026 20:14
Signed-off-by: robot <robot@example.com>
@github-actions github-actions bot force-pushed the upgrade/metallb/0.15.3 branch from b64009f to 480d5d2 Compare February 20, 2026 20:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants