Aller au contenu principal

Variables de contexte

Les templates ont accès à plusieurs variables de contexte intégrées.

Variables disponibles

values

Valeurs de configuration depuis toutes les sources (valeurs par défaut du schema, values.yaml, fichiers -f, flags --set) :

name: {{ values.app.name }}
replicas: {{ values.app.replicas }}
image: {{ values.image.repository }}:{{ values.image.tag }}

release

Informations sur le release actuel :

VariableDescriptionExemple
release.nameNom du release depuis la CLImyapp
release.namespaceNamespace cibleproduction
release.revisionNuméro de révision1
release.isUpgradeVrai si mise à jourfalse
release.isInstallVrai si installationtrue
metadata:
name: {{ release.name }}
namespace: {{ release.namespace }}
labels:
app.kubernetes.io/instance: {{ release.name }}

pack

Métadonnées du pack depuis Pack.yaml :

VariableDescriptionExemple
pack.nameNom du packnginx
pack.versionVersion du pack1.0.0
pack.appVersionVersion de l'application1.25.0
pack.descriptionDescription du packWeb server
labels:
app.kubernetes.io/name: {{ pack.name }}
app.kubernetes.io/version: {{ pack.version }}
helm.sh/chart: {{ pack.name }}-{{ pack.version }}

capabilities

Capacités du cluster Kubernetes :

VariableDescriptionExemple
capabilities.kubeVersionVersion Kubernetes1.28.0
capabilities.apiVersionsVersions API disponibles["v1", "apps/v1", ...]
{% if "networking.k8s.io/v1" in capabilities.apiVersions %}
apiVersion: networking.k8s.io/v1
{% else %}
apiVersion: extensions/v1beta1
{% endif %}
kind: Ingress

Exemples d'utilisation

Bloc de métadonnées complet

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ release.name }}
namespace: {{ release.namespace }}
labels:
app.kubernetes.io/name: {{ pack.name }}
app.kubernetes.io/instance: {{ release.name }}
app.kubernetes.io/version: {{ pack.appVersion | default(pack.version) }}
app.kubernetes.io/managed-by: sherpack
annotations:
meta.helm.sh/release-name: {{ release.name }}
meta.helm.sh/release-namespace: {{ release.namespace }}

Condition basée sur installation/mise à jour

{% if release.isInstall %}
# Première installation
annotations:
sherpack.io/first-deployed: {{ now() }}
{% endif %}

{% if release.isUpgrade %}
# Mise à jour depuis la version précédente
annotations:
sherpack.io/upgraded-at: {{ now() }}
{% endif %}

Sélection d'API basée sur la version

{% set kubeVersion = capabilities.kubeVersion | replace("v", "") %}
{% if kubeVersion >= "1.19" %}
apiVersion: networking.k8s.io/v1
{% else %}
apiVersion: networking.k8s.io/v1beta1
{% endif %}
kind: Ingress