Helm is a package manager for Kubernetes. Helm uses a package format called 'Charts'. A Chart is a collection of files that describes a related set of Kubernetes resources.
A Helm Chart can be used to deploy both simple and complex applications, such as a web app with HTTP servers, databases, etc.
A Chart contains files that are organized in a specific directory structure. To get a better idea of this, let's take an example of a WordPress Helm Chart.
The directory name is the name of the Chart without version information. For WordPress, for example, the directory wordpress/ is used. Within this directory, Helm uses the following structure:
wordpress/ Chart.yaml # A YAML file with information about the Helm Chart LICENSE # OPTIONAL: A plain text file with license information README.md # OPTIONAL: A human-readable README file values.yaml # The default configuration for this specific Helm Chart values.schema.json # OPTIONAL: A JSON Schema for validating the structure of the values.yaml file charts/ # A directory containing additional charts on which this chart depends. crds/ # A directory for Custom Resource Definitions templates/ # A directory containing templates that, when combined with values, # generate valid Kubernetes manifest files. templates/NOTES.txt # OPTIONAL: A plain text file with short usage notes
Helm reserves the above-mentioned file names and the charts/, crds/, and templates/ directories. Other files (absent in this example) are left as they are.
For more in-depth documentation, see the Helm Charts documentation.