stackrox / kube-linter

KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices.
https://docs.kubelinter.io/
Apache License 2.0
2.97k stars 234 forks source link

[FEATURE_REQUEST] Merge arbitrary values.yaml when checking a helm chart #706

Open josegomezr opened 9 months ago

josegomezr commented 9 months ago

Description of the problem/feature request Allow kube-linter to receive an arbitrary amount of values.yaml files (just like helm upgrade does) when checking a helm chart.

Description of the existing behavior vs. expected behavior

We deploy several "variations" of the same workload across environments, and those variations we control via values.yaml.

We have a baseline behavior (no added values), and then with --values %the-file%.yml we enable/disable extra features for that environment.

We'd like to catch potential errors on the chart when using those special files too.

Additional context

Something like:

kube-linter lint --verbose --fail-if-no-objects-found --fail-on-invalid-resource --values "custom.yaml" helm-chart/

And that would load the default values.yaml inside the helm-chart directory as well as merging the values defined in custom.yaml on top of the aforementioned.

I'm open to contribute this change!

meganwalker-ibm commented 1 month ago

This would be of great benefit to us as well.

It would also be good to be able to set the Release Name and Release Namespace to something specific, as those can also be used in helm charts as part of feature gates, rather than having them hardcoded in https://github.com/stackrox/kube-linter/blob/d028f4efa58ce1d1fa7ab5d7c79abf1126a35be0/pkg/lintcontext/parse_yaml.go#L113

josegomezr commented 1 month ago

For what is worth @meganwalker-ibm we kinda worked it around by using helm template [all helm flags] | kube-linter [all linter flags]