Kustomize

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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érateursconfigMapGenerator 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à).

Voir aussi

  • Helm — approche par packaging et templating, avec gestion de releases versionnées
  • Kompose — génération de manifestes de base à partir d'un docker-compose.yml, à structurer ensuite en base/overlays