-
Notifications
You must be signed in to change notification settings - Fork 124
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
Conversation
This reverts commit 6b8cbf4. Using `fix` to trigger a new patch release.
Codecov ReportAll modified and coverable lines are covered by tests ✅
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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
We might not fully revert commit 6b8cbf4. Putting this PR in draft to keep the current PR description, while continuing work on this topic. |
31e120c
to
a5e6851
Compare
There was a problem hiding this 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
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)
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)
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 fromk8s.io/cloud-provider
, which reportedVersion v0.0.0-master+$Format:%H$
Our feature gate
CloudControllerManagerWatchBasedRoutesReconciliation
, which is currently tested in HCCMv1.27.0-alpha.0
, requires Kubernetes >= v1.33. This is currently broken, as thek8s.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.