4.3 KiB
Getting Started
Adding Repository
The following command allows you to download and install all the charts from our repository:
$ helm repo add hahow oci://cr.grachevko.ru/helm/chart
Adding Dependency
To use the library chart, common
should be listed in dependencies
field in your Chart.yaml
:
dependencies:
- name: common
version: 0.4.1
repository: oci://cr.grachevko.ru/helm/chart
Once you have defined dependencies, you should run the following command to download this chart into your charts/
directory:
$ helm dep build
Using Starter
The best way to get started is to use the create
script to generate a new chart.
You can fetch that script, and then execute it locally:
$ curl https://git.grachevko.ru/helm/common/raw/branch/master/create.sh | bash -s -- mychart
Now, there is a chart in ./mychart
. You can edit it and create your own templates.
Partial Objects
When writing Kubernetes resources, you may find the following helpers useful to construct parts of the spec.
common.chart
The common.chart
helper prints the chart name and version, escaped to be legal in a Kubernetes label field.
Example template:
helm.sh/chart: { { include "common.chart" . } }
For the chart foo
with version 1.2.3-beta.55+1234
, this will render:
helm.sh/chart: foo-1.2.3-beta.55_1234
(Note that +
is an illegal character in label values)
common.fullname
The common.fullname
template generates a name suitable for the name:
field in Kubernetes metadata. It is used like
this:
name: { { include "common.fullname" . } }
This prints the value of {{ .Release.Name }}-{{ .Chart.Name }}
by default, but can be overridden
with .Values. fullnameOverride
:
fullnameOverride: some-name
Example output:
---
# with the values above
name: some-name
---
# the default, for release "release-name" and chart "mychart"
name: release-name-mychart
Output of this function is truncated at 63 characters, which is the maximum length of name.
common.labels
common.selectorLabels
prints the standard set of labels.
Example usage:
{{ include "common.labels" . }}
Example output:
app.kubernetes.io/instance: release-name
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: mychart
app.kubernetes.io/version: 1.16.0
helm.sh/chart: mychart-0.1.0
common.metadata
The common.metadata
helper generates value for the metadata:
section of a Kubernetes resource.
This takes a list of two values:
$top
, the top context- [optional] the template name of the overrides
It generates standard labels and a name field.
Example template:
metadata: { { - include "common.metadata" (list .) | nindent 2 } }
## The following is the same as above:
# metadata:
# {{- include "common.metadata" (list . "mychart.metadata") | nindent 2 }}
# {{- define "mychart.metadata" -}}
# {{- end }}
Example output:
metadata:
labels:
app.kubernetes.io/instance: release-name
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: mychart
app.kubernetes.io/version: 1.16.0
helm.sh/chart: mychart-0.1.0
name: release-name-mychart
Most of the common templates that define a resource type (e.g. common.configMap
or common.cronJob
) use this to
generate the metadata, which means they inherit the same labels
and name
fields.
common.name
The common.name
template generates a name suitable for the app.kubernetes.io/name
label. It is used like this:
app.kubernetes.io/name: { { include "common.name" . } }
This prints the value of {{ .Chart.Name }}
by default, but can be overridden with .Values.nameOverride
:
nameOverride: some-name
Example output:
---
# with the values above
app.kubernetes.io/name: some-name
---
# the default, for chart "mychart"
app.kubernetes.io/name: mychart
Output of this function is truncated at 63 characters, which is the maximum length of name.
common.selectorLabels
common.selectorLabels
prints the standard set of selector labels.
Example usage:
{{ include "common.selectorLabels" . }}
Example output:
app.kubernetes.io/instance: release-name
app.kubernetes.io/name: mychart