Anyone is welcome to review pull requests. Besides our technical requirements and best practices, here's an overview of review guidelines.
Chart releases must be immutable. Any change to a chart warrants a chart version bump even if it is only changes to the documentation.
The Chart.yaml
should be as complete as possible. The following fields are mandatory:
- name (same as chart's directory)
- home
- version
- appVersion
- description
- maintainers (name should be Github username)
Stable charts should not depend on charts in incubator.
Resources and labels should follow some conventions. The standard resource metadata should be this:
name: {{ template "myapp.fullname" . }}
labels:
app: {{ template "myapp.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
Note that templates have to be namespaced. With Helm 2.7+, helm create
does this out-of-the-box. The app
label should use the name
template, not fullname
as is still the case with older charts.
Label selectors for services must have both app
and release
labels.
selector:
app: {{ template "myapp.name" . }}
release: {{ .Release.Name }}
If a chart has multiple components, a component
label should be added (e. g. component: server
). The resource name should get the component as suffix (e. g. name: {{ template "myapp.fullname" . }}-server
). The component
label must be added to label selectors as well.
- Yaml file should be indented with two spaces.
- List indentation style should be consistent.
- There should be a single space after
{{
and before}}
.
Docker images should be configurable.
image:
name: myapp
tag: 1.2.3
pullPolicy: IfNotPresent
Image tags should use stable versions.
README.md
and NOTES.txt
are mandatory. README.md
should contain a table listing all configuration options. NOTES.txt
should provide accurate and useful information how the chart can be used/accessed.