Diff is incorrect when values in values.yaml change and --reuse-values is used
We realized that the produced diff is incorrect for a helm upgrade call if new values have been added to values.yaml.
Example:
- install any chart
- modify the chart such that it has a new value in values.yaml (e.g. new_label: testing)
- modify the chart to set this label in a ressource:
labels:
new_label: {{ .Values.new_label }}
- call
helm diff upgrade <release> <chart> --reuse-values- the diff shows the new label asnew_label: testing
This diff is incorrect. With --reuse-values the new value in values.yaml should not slip in. helm upgrade <release> <chart> --reuse-values --dry-run correctly generates the manifest with the label new_label: nil. This is correct, the value new_label does not exist in the original install and since we used --reuse-values the new base values are ignored.
I'm aware that I can tell helm diff to use --dry-run to generate the diff via env. But I feel like this should be the default. Forgetting to set the env creates diffs that are incorrect.
In this project's README, it says:
This is a Helm plugin giving you a preview of what a
helm upgradewould change. It basically generates a diff between the latest deployed version of a release and ahelm upgrade --debug --dry-run.
That makes it sound like diff using --dry-run is the default. Is it not?
EDIT: Later in the README, it seems to contradict itself and agree with you:
Set HELM_DIFF_USE_UPGRADE_DRY_RUN=true to use
helm upgrade --dry-runinstead ofhelm templateto render manifests from the chart.