Working with Built-in Objects
1. Accessing Release Object (.Release.Name)
| Field | Value |
|---|---|
.Release.Name | Release name |
.Release.Namespace | Target namespace |
.Release.Revision | Integer revision (1 on install) |
.Release.Service | Always Helm |
.Release.IsInstall | Boolean |
.Release.IsUpgrade | Boolean |
2. Using Chart Object (.Chart.Name)
| Field | Source |
|---|---|
.Chart.Name | Chart.yaml: name |
.Chart.Version | Chart SemVer |
.Chart.AppVersion | Application version |
.Chart.Type | application / library |
.Chart.Annotations | Map of metadata annotations |
.Chart.Maintainers | List of maintainer objects |
3. Accessing Files Object (.Files.Get)
| Method | Result |
|---|---|
.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.AsSecrets | Render glob result as ConfigMap/Secret data |
4. Using Capabilities Object (.Capabilities.KubeVersion)
| Field | Use |
|---|---|
.Capabilities.KubeVersion.Version | Full version (v1.29.0) |
.Capabilities.KubeVersion.Major | Major (string) |
.Capabilities.KubeVersion.Minor | Minor (string) |
.Capabilities.HelmVersion.Version | Helm CLI version |
5. Working with Template Object (.Template.Name)
| Field | Value |
|---|---|
.Template.Name | Current template path (e.g. myapp/templates/deployment.yaml) |
.Template.BasePath | Templates 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)
| Source | Resolution |
|---|---|
-n / --namespace flag | Highest priority |
$HELM_NAMESPACE | Env var fallback |
| kubeconfig context | Final fallback (default default) |
8. Checking Release IsUpgrade (.Release.IsUpgrade)
9. Checking Release IsInstall (.Release.IsInstall)
| Condition | Use case |
|---|---|
.Release.IsInstall | Seed initial data on first install |
.Release.IsUpgrade | Run migrations on subsequent revisions |
| Both false | Never (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.