-
Notifications
You must be signed in to change notification settings - Fork 336
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
set Topology feature gate default to true #1167
Conversation
Welcome @huww98! |
Hi @huww98. Thanks for your PR. I'm waiting for a kubernetes-csi member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. 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/test-infra repository. |
/ok-to-test |
/lgtm |
/assign @pohly |
@divyenpatel, @msau42, @jsafrane: do you remember why the flag was left at default false in #516? Is it because that would have changed the default behavior and that wasn't desirable? If that's the reason, are we stuck with "false" forever? It's usually not a good idea to use feature gates to control optional behavior, because sooner or later one arrives at a situation like this where the feature gets promoted and (ideally) the entire feature gate gets removed. But if that is what was done, then there's not much that can be done about it without a breaking change. |
@pohly I think it is not the case. Even this feature gate is enabled, the relevant behaviors are only enabled if the driver declares support. And if the driver supports topology, I think it is always desirable to enable this, or we are not CSI compliant, and the driver may not work properly. So, this PR only changes the behavior for those who use driver that support topology, but do not enable this feature gate. Do such use-case exist for any reason? |
I believe the reason why the gate was there was to control rollout of a driver that wants to upgrade itself to add topology support. Because if topology was enabled in the controller but the driver has not been upgraded on the nodes to start reporting topology, then the provisioner would start failing to provision (and schedule pods). So the expected flow is:
I agree that for a permanent flag it is better to make it a config flag rather than a feature gate. |
@msau42 I think even after we remove the |
We're about to release a new provisioner. I personally like this PR - it goes the right direction (feature gate removal), yet it still allows users to override the feature gate to @huww98 can you please edit the release note to emphasize that @msau42 what do you think? |
This feature gate has already existed for 5 years. And should be safe to enable by default.
I am ok with the approach that @huww98 outlined. We need to document it and probably in the release notes we should call out action required. I think we should make it a major bump because of the action required. But normally if turing on a feature by default doesn't require action then it doens't need to be a major bump. |
@msau42 to confirm, does this match what you think? Action Required: Users who deploy controller that is reporting topology, but do not have corresponding node plugin version deployed should upgrade the node plugin before upgrading the controller. |
I think the action required should be to explicitly disable Topology feature gate if corresponding CSI driver incorrectly reports VOLUME_ACCESSIBILITY_CONSTRAINTS capability. And warn them that the feature gate will be removed in a future release. We should document probably in README.md that if a driver wants to enable topology support while it was disabled before, they should update node DaemonSet first to report |
I edited the release note |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: huww98, jsafrane The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This commit set feature-fate Topology to false as it is now enabled by default[1]. [1]: kubernetes-csi/external-provisioner#1167 Signed-off-by: Praveen M <[email protected]>
This commit set feature-fate Topology to false as it is now enabled by default[1]. [1]: kubernetes-csi/external-provisioner#1167 Signed-off-by: Praveen M <[email protected]>
This commit set feature-fate Topology to false as it is now enabled by default[1]. [1]: kubernetes-csi/external-provisioner#1167 Signed-off-by: Praveen M <[email protected]>
What type of PR is this?
/kind cleanup
What this PR does / why we need it:
This feature gate has already existed for 5 years. And should be safe to enable by default.
Besides, because this feature gate has been marked as GA, it will show warnings:
Setting GA feature gate Topology=true. It will be removed in a future release.
. So I went ahead and removed this feature gate from command line. Then something breaks, which is very confusing. I would expect a GA feature gate to default to true.Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?: