Here, a chart is a collection of files that describe k8s resources
A chart is used to deploy something
ex) memcached pod, web app w/ HTTP servers, databases, etc.
A chart is created from files organized in a specific directory tree
These files can be packaged into versioned archives for deployment
The Chart File Structure
A chart is organized as a collection of files inside a directory
The directory name == the chart name (excluding versioning information)
ex) A chart describing WordPress is stored in wordpress/
Inside the directory, Helm requires the following structure
wordpress/Chart.yaml# A YAML file containing information about the chartLICENSE# OPTIONAL: A plain text file containing the license for the chartREADME.md# OPTIONAL: A human-readable README filevalues.yaml# The default configuration values for this chartvalues.schema.json# OPTIONAL: A JSON Schema for imposing a structure on the values.yaml filecharts/# A directory containing any charts upon which this chart depends.crds/# Custom Resource Definitionstemplates/# A directory of templates that, when combined with values,# will generate valid Kubernetes manifest files.templates/NOTES.txt# OPTIONAL: A plain text file containing short usage notes
Helm reserves the names of the charts/, crds/, templates/ directories and all the file names shown in the example above
The Chart.yaml File
The Chart.yaml file is a required component of a chart and contains the following fields
Other fields not specified above will not be applied
apiVersion: The chart API version (required)
name: The name of the chart (required)
version: A SemVer 2 version (required)
kubeVersion: A SemVer range of compatible Kubernetes versions (optional)
description: A single-sentence description of this project (optional)
type: The type of the chart (optional)
keywords:
- A list of keywords about this project (optional)
home: The URL of this projects home page (optional)
sources:
- A list of URLs to source code for this project (optional)
dependencies: # A list of the chart requirements (optional)
- name: The name of the chart (nginx)
version: The version of the chart ("1.2.3")
repository: (optional) The repository URL ("https://example.com/charts") or alias ("@repo-name")
condition: (optional) A yaml path that resolves to a boolean, used for enabling/disabling charts (e.g. subchart1.enabled )
tags: # (optional)
- Tags can be used to group charts for enabling/disabling together
import-values: # (optional)
- ImportValues holds the mapping of source values to parent key to be imported. Each item can be a string or pair of child/parent sublist items.
alias: (optional) Alias to be used for the chart. Useful when you have to add the same chart multiple times
maintainers: # (optional)
- name: The maintainers name (required for each maintainer)
email: The maintainers email (optional for each maintainer)
url: A URL for the maintainer (optional for each maintainer)
icon: A URL to an SVG or PNG image to be used as an icon (optional).
appVersion: The version of the app that this contains (optional). Needn't be SemVer. Quotes recommended.
deprecated: Whether this chart is deprecated (optional, boolean)
annotations:
example: A list of annotations keyed by name (optional).