Creating your own Helm charts can mean facing potential errors, thankfully Helm has tools to help.

Linting

Most of us (including myself) have made an error when writing YAML. It can be an inadvertent space, or a character in the wrong place. A linter helps check that YAML file is written in the correct format and has all the required information.

Helm’s linter can be run using the command:

helm lint CHART_NAME
e.g.
helm lint helm-basic-chart/

In the above example I’ve run the linter against my “helm-basic-chart” (https://github.com/geektechdude/helm-basic-chart). The linter can return information (chart will run, but consider adding the missing information), error (chart won’t run, fix the errors), or warning (chart may run, consider resolving) messages.

For example a run of the linter against my current helm-basic-chart sees an information message around a missing icon:

[INFO] Chart.yaml: icon is recommended

This is because my Helm chart is currently missing a line that adds an optional icon (SVG or PNG) to the Chart.yaml. It’s optional and so only informational that it is missing, e.g. it does not break the chart.

I can either leave the informational message, as it does not break the chart, or resolve it by adding a line to my Chart.yaml to include an icon:

icon: https://geektechstuff.com/wp-content/uploads/2026/03/geektechstuff_icon.png

This alters my Chart.yaml so that it now looks like the below:

apiVersion: v2
name: webapp
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into ve>
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer.>
# a dependency of application charts to inject those utilities and functions in>
# pipeline. Library charts do not define any templates and therefore cannot be >
type: application
# This is the chart version. This version number should be incremented each tim>
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version nu>
# incremented each time you make changes to the application. Versions are not e>
# follow Semantic Versioning. They should reflect the version the application i>
# It is recommended to use it with quotes.
appVersion: "0.0.1"
icon: https://geektechstuff.com/wp-content/uploads/2026/03/geektechstuff_icon.png

On a rerun the linter now returns no informational, error, or warning messages:

==> Linting helm-basic-chart/
1 chart(s) linted, 0 chart(s) failed