refactor(tolerations): drop the DRBD taint tolerations - #211
Merged
Conversation
The "storage-problems" additional strategy tolerated three drbd.linbit.com taints — lost-quorum, force-io-error and ignore-fail-over — and it was applied by default to every base strategy except "wildcard". That put LINBIT-specific keys on essentially every workload rendered through lib-helm, including modules that have nothing to do with block storage. Nothing sets those taints anymore: the LINSTOR-based stack that used to apply them is gone from sds-replicated-volume, and no module in the fleet taints nodes with them. The tolerations are dead weight. Remove the keys and stop applying the strategy by default. The strategy name itself stays as a no-op so that the existing "with-storage-problems" and "without-storage-problems" call sites keep rendering; it can be dropped once those are cleaned up. Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
NikolayDemchuk
self-requested a review
August 23, 2026 15:25
NikolayDemchuk
approved these changes
Aug 23, 2026
Signed-off-by: Vasily Oleynikov <vasily.oleynikov@flant.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Removes the DRBD taint tolerations from the
storage-problemsadditional strategy inhelm_lib_tolerations.Three changes in
_node_affinity.tpl:drbd.linbit.com/{lost-quorum,force-io-error,ignore-fail-over}toleration keys are gone.storage-problemsis no longer added to$additionalStrategiesby default, so it no longer applies to every base strategy exceptwildcard._helm_lib_additional_tolerations_storage_problemsis kept as an empty, documented no-op. It is not dead code by accident — it is a compatibility shim, see below.Why do we need it, and what problem does it solve?
storage-problemswas enabled by default in every base strategy exceptwildcard, which means lib-helm put LINBIT-vendor-specific taint keys on essentially every workload rendered through the library — cloud providers, CNI, MetalLB, monitoring — regardless of whether the module has anything to do with block storage. A general-purpose Helm library should not carry one storage vendor's taint vocabulary in its default path.More importantly, those tolerations are dead. Nothing applies the taints:
sds-replicated-volumedoes not taint nodes at all any more (grep -rniE '\btaint'over the module returns nothing) — the LINSTOR-era components that used to setdrbd.linbit.com/*are gone.ourmodules/*are pasted YAML inside archived support threads.So the change removes tolerations that could never match a taint.
What is the expected result?
Rendered output loses the three
drbd.linbit.comentries; everything else is byte-identical. Concretely,any-nodenow renders:Why the strategy name survives as a no-op. Four charts in
deckhousepasswith-storage-problemsexplicitly:modules/021-cni-cilium/templates/_agent-daemonset.tpland.../safe-agent-updater/daemonset.yamlee/se-plus/modules/021-cni-cilium/templates/egress-gateway-agent/daemonset.yamlee/modules/380-metallb/templates/speaker/daemonset.yamlandee/se/modules/380-metallb/templates/l2lb/speaker/daemonset.yamlincludeof an undefined template is a hard render error, so deleting the definition outright would make those charts fail to render the moment Deckhouse picks up this version. That is not an acceptable failure mode for a patch release of a library, hence the shim:with-storage-problemsandwithout-storage-problemskeep working and simply produce nothing. Dropping the definition is a follow-up, after the call sites are cleaned up.Two things reviewers of downstream repos should know:
template_testswill need updating. Five modules assert exact toleration lists that include the DRBD keys and will fail once Deckhouse bumps lib-helm:cloud-provider-dynamix,cloud-provider-vcd,cloud-provider-openstack,cloud-provider-huaweicloud(ee/modules/030-*/template_tests/module_test.go) andcloud-provider-vsphere(ee/se-plus/modules/030-*). Test-only, no runtime effect.sds-node-configurator,sds-replicated-volume(agent and linstor-node) andstorage-statuscallhelm_lib_tolerationswith a bare"storage-problems", without thewith-/without-prefix the parser requires. That argument has always been silently ignored — they got the tolerations from the default, not from their own request. They lose them now, with no runtime consequence since no taint producer exists, but the bare argument is worth removing when those charts are next touched.Covered by a new suite,
helm_lib_tolerations_base_strategy_test.yaml, with three cases: a base strategy renders no DRBD keys,with-storage-problemsstill renders, andwithout-storage-problemsis still accepted. Verified to fail againstmain's template and pass against this one.helm unittest ./tests/— 361 passed, 84 suites.go run tools/build-doc.go --diffclean.Chart version bumped to 1.72.17. 1.72.15 is taken by #209 and 1.72.16 by #210, so all three can merge in any order.
Checklist