Kustomize
| Fiche express | |
|---|---|
| Type | Personnalisation déclarative de manifestes Kubernetes, sans templating |
| Intégration | Native dans kubectl (kubectl apply -k) depuis 1.14
|
| Modèle | Base + overlays, patches |
| Voir aussi | Helm · Kompose |
Kustomize personnalise des manifestes Kubernetes sans templating : contrairement à Helm, qui injecte des valeurs dans des templates via un moteur de rendu dédié, Kustomize part de fichiers YAML valides tels quels (une base) et les fait varier par surcouches (overlays) qui appliquent des correctifs (patches) déclaratifs — changer une image, un nombre de réplicas, ajouter un label — sans jamais dupliquer ni réécrire le manifeste d'origine. L'outil a été présenté par l'équipe Kubernetes comme une configuration « template-free » : chaque fichier reste du YAML brut, directement lisible et applicable, à l'inverse d'un template dont la syntaxe de substitution rend la lecture directe impossible.
Kustomize est intégré nativement à kubectl depuis la version 1.14 (kubectl apply -k <répertoire>), ce qui en fait l'outil de personnalisation « zéro dépendance » le plus immédiat sur un cluster Kubernetes standard, sans binaire ni gestionnaire de paquets supplémentaire à installer.
Modèle base + overlays
Le cas d'usage typique : une base commune (les manifestes génériques d'une application), et un overlay par environnement (dev, staging, prod) qui ne redéfinit que ce qui diffère réellement.
base/
deployment.yaml
service.yaml
kustomization.yaml
overlays/
dev/
kustomization.yaml # référence base/, patch : 1 réplica, image :dev
prod/
kustomization.yaml # référence base/, patch : 5 réplicas, limites de ressources
# base/kustomization.yaml
resources:
- deployment.yaml
- service.yaml
# overlays/prod/kustomization.yaml
resources:
- ../../base
patches:
- target:
kind: Deployment
name: mon-app
patch: |-
- op: replace
path: /spec/replicas
value: 5
images:
- name: mon-app
newTag: v1.4.2
# Prévisualiser le rendu final sans rien appliquer
kubectl kustomize overlays/prod
# Appliquer directement
kubectl apply -k overlays/prod
Patches et générateurs
Deux syntaxes de patch coexistent : le strategic merge patch (fusion YAML naturelle, la plus lisible pour de petites modifications) et le patch JSON 6902 (op: replace/add/remove, plus précis pour cibler un champ exact). Kustomize propose aussi des générateurs — configMapGenerator et secretGenerator — qui produisent des ConfigMaps/Secrets à partir de fichiers ou de paires clé/valeur, en calculant automatiquement un suffixe de hash sur leur contenu : toute modification de la source génère un nouveau nom d'objet, ce qui déclenche naturellement un redéploiement des pods qui la référencent (contournement du problème classique où changer une ConfigMap ne redémarre pas les pods qui la consomment déjà).