helm-templates
Use when working with Helm templates and template functions for generating Kubernetes manifests dynamically.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Helm Templates
Working with Helm templates and template functions.
Basic Templating
Values Access
apiVersion: v1
kind: Pod
metadata:
name: {{ .Values.name }}
namespace: {{ .Release.Namespace }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
Built-in Objects
-
.Values: Values from values.yaml and overrides -
.Release: Release information (Name, Namespace, IsUpgrade, IsInstall) -
.Chart: Chart metadata from Chart.yaml -
.Files: Access non-template files in chart -
.Capabilities: Kubernetes cluster capabilities -
.Template: Current template information
Template Functions
String Functions
# upper, lower, title
name: {{ .Values.name | upper }}
# quote
value: {{ .Values.password | quote }}
# trimSuffix, trimPrefix
image: {{ .Values.image | trimSuffix ":latest" }}
# replace
url: {{ .Values.url | replace "http" "https" }}
Default Values
# default function
port: {{ .Values.port | default 8080 }}
tag: {{ .Values.image.tag | default .Chart.AppVersion }}
# required function
database: {{ required "database.host is required" .Values.database.host }}
Type Conversion
# toString, toJson, toYaml
replicas: {{ .Values.replicas | toString }}
annotations:
{{ toYaml .Values.annotations | indent 2 }}
config: |
{{ toJson .Values.config | indent 2 }}
Conditionals
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}
spec:
# ...
{{- end }}
{{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
# Use existing claim
{{- else if .Values.persistence.enabled }}
# Create new claim
{{- end }}
Loops
{{- range .Values.environments }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end }}
{{- range $key, $value := .Values.config }}
{{ $key }}: {{ $value | quote }}
{{- end }}
Named Templates (_helpers.tpl)
Define Templates
{{/*
Common labels
*/}}
{{- define "mychart.labels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
Use Templates
metadata:
labels:
{{- include "mychart.labels" . | nindent 4 }}
spec:
selector:
matchLabels:
{{- include "mychart.selectorLabels" . | nindent 6 }}
Flow Control
With
{{- with .Values.service }}
apiVersion: v1
kind: Service
metadata:
name: {{ .name }}
spec:
type: {{ .type }}
ports:
- port: {{ .port }}
{{- end }}
Range with Index
{{- range $index, $value := .Values.items }}
item-{{ $index }}: {{ $value }}
{{- end }}
Whitespace Control
# Remove leading whitespace
{{- .Values.name }}
# Remove trailing whitespace
{{ .Values.name -}}
# Remove both
{{- .Values.name -}}
Files Access
Read Files
config: |
{{ .Files.Get "config/app.conf" | indent 2 }}
Glob Files
{{- range $path, $content := .Files.Glob "config/*.yaml" }}
{{ $path }}: |
{{ $content | indent 2 }}
{{- end }}
Advanced Functions
Ternary
environment: {{ ternary "production" "development" .Values.production }}
Coalesce
# Returns first non-empty value
port: {{ coalesce .Values.service.port .Values.port 8080 }}
List Functions
# list, append, prepend, concat
args:
{{- range list "arg1" "arg2" "arg3" }}
- {{ . }}
{{- end }}
Dict Functions
# dict, set, unset, hasKey
{{- $config := dict "key1" "value1" "key2" "value2" }}
{{- if hasKey $config "key1" }}
found: true
{{- end }}
Debugging
# Print debug info
{{ printf "%#v" .Values | indent 2 }}
# Fail on purpose to see values
{{ fail (printf "Debug: %#v" .Values) }}
Best Practices
Use Helpers for Repeated Logic
{{- define "mychart.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
Validate Input
{{- if not (has .Values.service.type (list "ClusterIP" "NodePort" "LoadBalancer")) }}
{{- fail "service.type must be ClusterIP, NodePort, or LoadBalancer" }}
{{- end }}
Quote String Values
# Always quote strings
value: {{ .Values.string | quote }}
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-02-05
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!