Working with Built-in Objects

1. Accessing Release Object (.Release.Name)

FieldValue
.Release.NameRelease name
.Release.NamespaceTarget namespace
.Release.RevisionInteger revision (1 on install)
.Release.ServiceAlways Helm
.Release.IsInstallBoolean
.Release.IsUpgradeBoolean

2. Using Chart Object (.Chart.Name)

FieldSource
.Chart.NameChart.yaml: name
.Chart.VersionChart SemVer
.Chart.AppVersionApplication version
.Chart.Typeapplication / library
.Chart.AnnotationsMap of metadata annotations
.Chart.MaintainersList of maintainer objects

3. Accessing Files Object (.Files.Get)

MethodResult
.Files.Get "conf/app.conf"String contents
.Files.GetBytes "logo.png"Byte slice (use with b64enc)
.Files.Glob "configs/*.yaml"Map of path → bytes
.Files.Lines "list.txt"List of lines
.Files.AsConfig / .Files.AsSecretsRender glob result as ConfigMap/Secret data

4. Using Capabilities Object (.Capabilities.KubeVersion)

FieldUse
.Capabilities.KubeVersion.VersionFull version (v1.29.0)
.Capabilities.KubeVersion.MajorMajor (string)
.Capabilities.KubeVersion.MinorMinor (string)
.Capabilities.HelmVersion.VersionHelm CLI version

5. Working with Template Object (.Template.Name)

FieldValue
.Template.NameCurrent template path (e.g. myapp/templates/deployment.yaml)
.Template.BasePathTemplates root for current chart

6. Accessing Release Service (.Release.Service)

Example: Standard managed-by label

labels:
  app.kubernetes.io/managed-by: {{ .Release.Service }}  # always "Helm"

7. Getting Release Namespace (.Release.Namespace)

SourceResolution
-n / --namespace flagHighest priority
$HELM_NAMESPACEEnv var fallback
kubeconfig contextFinal fallback (default default)

8. Checking Release IsUpgrade (.Release.IsUpgrade)

Example: Upgrade-only hook logic

{{- if .Release.IsUpgrade }}
job: run-migrations
{{- end }}

9. Checking Release IsInstall (.Release.IsInstall)

ConditionUse case
.Release.IsInstallSeed initial data on first install
.Release.IsUpgradeRun migrations on subsequent revisions
Both falseNever (template runs only for install/upgrade)

10. Using Chart Version (.Chart.Version)

Example: Chart version label

labels:
  helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}

11. Accessing Capabilities APIVersions (.Capabilities.APIVersions)

Example: Detect API availability

{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }}
apiVersion: networking.k8s.io/v1
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }}
apiVersion: networking.k8s.io/v1beta1
{{- end }}
kind: Ingress
Warning: When using helm template without a cluster, APIVersions only contains a hardcoded built-in list. Use --api-versions flag to inject additional API versions for offline rendering.