Skip to content

fix: feature gate cannot be enabled #980

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 17, 2025
Merged

Conversation

lukasmetzner
Copy link
Contributor

@lukasmetzner lukasmetzner commented Jul 16, 2025

k8s.io/component-base/version provides a standardized way for Kubernetes components to embed and expose their version information. Currently, our build scripts overwrite the upstream version (e.g v1.32, v1.33) with the current HCCM version (e.g v1.26, v1.27). This was done to correct a log message from k8s.io/cloud-provider, which reported Version v0.0.0-master+$Format:%H$

Our feature gate CloudControllerManagerWatchBasedRoutesReconciliation, which is currently tested in HCCM v1.27.0-alpha.0, requires Kubernetes >= v1.33. This is currently broken, as the k8s.io libraries will report, that the current Kubernetes version is to low.

Instead of reverting 6b8cbf4, we are replacing $Format:%H$ with the current HCCM version, e.g.: v0.0.0-master+v1.27.0. This adds the relevant information to the log message and does not break enabling the feature gate.

This reverts commit 6b8cbf4.

Using `fix` to trigger a new patch release.
Copy link

codecov bot commented Jul 16, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 67.46%. Comparing base (f1bc175) to head (0012df8).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #980      +/-   ##
==========================================
- Coverage   71.27%   67.46%   -3.81%     
==========================================
  Files          22       22              
  Lines        3046     3046              
==========================================
- Hits         2171     2055     -116     
- Misses        706      828     +122     
+ Partials      169      163       -6     
Flag Coverage Δ
e2e ?
unit 67.46% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lukasmetzner
Copy link
Contributor Author

lukasmetzner commented Jul 16, 2025

We might not fully revert commit 6b8cbf4. Putting this PR in draft to keep the current PR description, while continuing work on this topic.

@lukasmetzner lukasmetzner changed the title fix: revert "fix: wrong version logged on startup (#729)" fix: feature gate cannot be enabled Jul 16, 2025
@lukasmetzner lukasmetzner marked this pull request as ready for review July 16, 2025 14:46
@lukasmetzner lukasmetzner requested a review from a team as a code owner July 16, 2025 14:46
Copy link
Member

@apricote apricote left a comment

Choose a reason for hiding this comment

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

Looking good and can be merged with or without removing the "v" prefix

@lukasmetzner lukasmetzner merged commit aad8181 into main Jul 17, 2025
4 of 9 checks passed
@lukasmetzner lukasmetzner deleted the revert-k8s-version-override branch July 17, 2025 11:35
lukasmetzner pushed a commit that referenced this pull request Jul 18, 2025
This release introduces an experimental feature to address #395.

### Watch-Based Route Reconciliation (Experimental)

Currently, route reconciliation is performed at a fixed interval of 30s.
This leads to unnecessary API requests, as a `GET /v1/networks/{id}`
call is triggered every 30s, even when no changes have occurred.

Upstream we have proposed an event-driven approach, similar to the
mechanism used by other controllers such as the Load Balancer
Controller. With this new approach, route reconciliation is triggered on
node additions, node deletions, or when the `PodCIDRs` or `Addresses` of
nodes change. Additionally, to ensure consistency, reconciliation will
still occur periodically at a randomized interval between 12 and 24
hours.

We are close to merging a Kubernetes Enhancement Proposal (KEP).
Furthermore, a work-in-progress pull request containing the
implementation is already open in the Kubernetes repository.

#### Forked Upstream Libraries

In this release, we replaced the upstream `controller-manager` and
`cloud-provider` libraries with our own forks. These forks are based on
the upstream `v0.33.2` release (aligned with Kubernetes v1.33.2) and
include our patches on top.

#### Enabling the Feature

This feature is **disabled by default** and will not impact existing
deployments unless explicitly enabled. We **do not recommend** running
this feature in production environments at this stage. However, we
welcome early testers who can try it in non-critical setups. Running
with this feature active is enough for us to analyze its impact. No
additional feedback is required.

To enable the feature, set the following Helm value:

`args.feature-gates=CloudControllerManagerWatchBasedRoutesReconciliation=true`

### Bug Fixes

- feature gate cannot be enabled (#980)
lukasmetzner pushed a commit that referenced this pull request Jul 18, 2025
This release introduces an experimental feature to address #395.

### Watch-Based Route Reconciliation (Experimental)

Currently, route reconciliation is performed at a fixed interval of 30s.
This leads to unnecessary API requests, as a `GET /v1/networks/{id}`
call is triggered every 30s, even when no changes have occurred.

Upstream we have proposed an event-driven approach, similar to the
mechanism used by other controllers such as the Load Balancer
Controller. With this new approach, route reconciliation is triggered on
node additions, node deletions, or when the `PodCIDRs` or `Addresses` of
nodes change. Additionally, to ensure consistency, reconciliation will
still occur periodically at a randomized interval between 12 and 24
hours.

We are close to merging a Kubernetes Enhancement Proposal (KEP).
Furthermore, a work-in-progress pull request containing the
implementation is already open in the Kubernetes repository.

#### Forked Upstream Libraries

In this release, we replaced the upstream `controller-manager` and
`cloud-provider` libraries with our own forks. These forks are based on
the upstream `v0.33.2` release (aligned with Kubernetes v1.33.2) and
include our patches on top.

#### Enabling the Feature

This feature is **disabled by default** and will not impact existing
deployments unless explicitly enabled. We **do not recommend** running
this feature in production environments at this stage. However, we
welcome early testers who can try it in non-critical setups. Running
with this feature active is enough for us to analyze its impact. No
additional feedback is required.

To enable the feature, set the following Helm value:


`args.feature-gates=CloudControllerManagerWatchBasedRoutesReconciliation=true`

### Bug Fixes

- feature gate cannot be enabled (#980)
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.

2 participants