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.
PCI review checklist
I have documented a clear reason for, and description of, the change I am making.
If applicable, I've documented a plan to revert these changes if they require more than reverting the pull request.
If applicable, I've documented the impact of any changes to security controls.
Examples of changes to security controls include using new access control methods, adding or removing logging pipelines, etc.
This PR aims to fix a broken
PodDisruptionBudgetwhen enabled.Summary
When
controller.podDisruptionBudget.enabledis set totrue, the following error is thrown:After trying multiple combinations of values for
controller.podDisruptionBudget.minAvailableandcontroller.podDisruptionBudget.maxUnavailable, I discovered a temporary workaround: setting one to an explicit value and the other to an empty string ("") resolves this, but this is clunky and surely not the intended design.Root Cause
The chart sets default values of
0for bothmaxUnavailableandminUnavailable. This causing the template to render bothmaxUnavailableandminUnavailablesimultaneously (and with some strange spacing):Setting both values explicitly, even if one or both is
0, is disallowed by Kubernetes, so this always fails to apply.This PR aims to fix this bug by using the following logic, keeping the current values of
0as defaults for backward-compatibility:maxUnavailablenorminUnavailableare set, PDB defaults to a safe valueminAvailable: 1(user explicitly created a PDB, but they didn't set explicit constraints)maxUnavailableorminUnavailableare set and the other is null/unset, use the constraint with the explicitly set value (as expected)maxUnavailableandminUnavailableare set, but one is zero (the default if left unset), render only the non-zero value (maxUnavailableorminUnavailable)maxUnavailableandminUnavailableare set to non-zero values, trigger the built-in failure messageTesting
I have tested all scenarios involving combinations of null values, explicitly set values, zero values, etc. to ensure that this template follows the above logic.
I now see correctly rendered PDBs: