Helm: Dry Run & Template Debug

Helm uses a packaging format called charts (a collection of Kubernetes resource files).

This note shows how to --dry-run and --debug Helm chart templates with examples.

It also shows how to lint and render Helm chart YAMLs locally (without sending them to a Kubernetes API server).

Cool Tip: List Helm charts and repositories using a helm command! Read more →

Helm: Dry Run & Template Debug

Use the --dry-run and --debug options with the helm install command to test a Helm chart template rendering without actually installing anything:

$ helm install <chartName> <repoName>/<chartPath> --dry-run --debug
- example -
$ helm install nginx-ingress nginx-stable/nginx-ingress --dry-run --debug

The command above will send the chart to the tiller (the server portion of Helm, that typically runs on a Kubernetes cluster), which will render the template.

But instead of installing the chart, the command above will just print the rendered template.

If you are not connected to the Kubernetes cluster you may receive an error as follows:

Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get “http://localhost:8080/version”: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.

Cool Tip: How to download a Helm chart and save it locally! Read more →

To debug the Helm chart templates without sending them to a Kubernetes API server, you can download the chart and render it locally using the following command:

$ helm template <chartFolder|chartArchive>
- examples -
$ helm template ./nginx-ingress
$ helm template nginx-ingress-0.15.2.tgz

You can also lint the Helm chart to verify its validity and that it follows the best practices:

$ helm lint <chartFolder|chartArchive>
- examples -
$ helm lint ./nginx-ingress
$ helm lint nginx-ingress-0.15.2.tgz

Happy Helm chart templates debugging!

Was it useful? Share this post with the world!

Leave a Reply