Filters
Les filters transforment les valeurs dans les templates. Utilisez-les avec l'opérateur pipe |.
Sérialisation
toyaml
Convertir un objet en chaîne YAML :
config: |
{{ values.config | toyaml | indent(2) }}
tojson
Convertir un objet en JSON compact :
annotations:
config: {{ values.config | tojson | quote }}
tojson_pretty
Convertir un objet en JSON formaté :
data:
config.json: |
{{ values.config | tojson_pretty | indent(4) }}
Encodage
b64encode
Encoder en Base64 :
apiVersion: v1
kind: Secret
data:
password: {{ values.password | b64encode }}
b64decode
Décoder du Base64 :
decoded: {{ values.encoded | b64decode }}
sha256
Hash SHA256 d'une chaîne :
annotations:
checksum/config: {{ values.config | tojson | sha256 }}
Manipulation de chaînes
quote / squote
Encadrer avec des guillemets :
name: {{ values.name | quote }} # "myapp"
name: {{ values.name | squote }} # 'myapp'
upper / lower
Changer la casse :
env: {{ values.env | upper }} # PRODUCTION
name: {{ values.name | lower }} # myapp
title
Casse titre :
title: {{ values.name | title }} # My App
snakecase / kebabcase / camelcase
Conversion de casse :
snake: {{ "myAppName" | snakecase }} # my_app_name
kebab: {{ "myAppName" | kebabcase }} # my-app-name
camel: {{ "my_app_name" | camelcase }} # myAppName
trunc
Tronquer à n caractères :
short: {{ values.hash | trunc(8) }}
trimprefix / trimsuffix
Supprimer un préfixe/suffixe :
path: {{ "/api/v1" | trimprefix("/") }} # api/v1
name: {{ "app.yaml" | trimsuffix(".yaml") }} # app
replace
Remplacer une sous-chaîne :
safe: {{ values.name | replace("_", "-") }}
trim
Supprimer les espaces au début/fin :
clean: {{ values.input | trim }}
Indentation
indent
Ajouter des espaces à chaque ligne :
data: |
{{ values.config | toyaml | indent(2) }}
nindent
Nouvelle ligne + indentation (le plus courant pour du YAML imbriqué) :
spec:
containers:
- name: app
resources:
{{ values.resources | toyaml | nindent(8) }}
Collections
keys
Obtenir les clés d'un objet sous forme de tableau :
{% for key in values.env | keys %}
- {{ key }}
{% endfor %}
haskey
Vérifier si une clé existe :
{% if values.config | haskey("tls") %}
tls:
enabled: true
{% endif %}
merge
Fusionner deux objets (le droit écrase le gauche) :
{% set merged = defaults | merge(overrides) %}
dictsort
Trier un objet pour l'itération :
{% for key, value in values.labels | dictsort %}
{{ key }}: {{ value | quote }}
{% endfor %}
first / last
Obtenir le premier/dernier élément :
primary: {{ values.hosts | first }}
final: {{ values.hosts | last }}
default
Valeur par défaut si indéfinie :
replicas: {{ values.replicas | default(1) }}
tag: {{ values.image.tag | default("latest") }}
join
Joindre un tableau avec un séparateur :
hosts: {{ values.hosts | join(",") }}
length
Obtenir la longueur :
count: {{ values.items | length }}
Validation
required
Échouer si indéfini ou vide :
name: {{ values.name | required }}
Avec un message personnalisé :
name: {{ values.name | required("name is required") }}
empty
Vérifier si vide :
{% if values.items | empty %}
# Aucun élément configuré
{% endif %}
Conversion de types
int
Convertir en entier :
port: {{ values.port | int }}
replicas: {{ "5" | int }}
Fonctionne avec les chaînes, flottants et booléens :
{{ "42" | int }} # 42
{{ 3.14 | int }} # 3
{{ true | int }} # 1
{{ false | int }} # 0
float
Convertir en flottant :
ratio: {{ values.ratio | float }}
threshold: {{ "0.95" | float }}
string
Convertir en chaîne :
port: {{ values.port | string }}
env:
COUNT: {{ values.count | string | quote }}
Chaînage de filters
Les filters peuvent être chaînés :
# Convertir en YAML, indenter et ajouter un préfixe de nouvelle ligne
resources:
{{ values.resources | toyaml | nindent(2) }}
# Hasher la config pour la détection de changements
checksum: {{ values.config | tojson | sha256 | trunc(16) }}
# Valeur par défaut sûre avec transformation
name: {{ values.name | default("app") | kebabcase | trunc(63) }}