Kutomize

Kustomize est un outil intégré à Kubectl permettant de customiser ses fichiers YAML sans utiliser les templates HELM.
Kustomize se base sur :

  • Overlays
  • Transformers
  • Templates
  • Components

Overlays

Pour parler de l’overlays, illustrons par le par la structure des fichiers :

k8s
├── base
│   ├── kustomization.yaml
│   ├── nginx-depl.yaml
│   └── service.yaml
└── overlays
    ├── dev
    │   ├── config-map.yaml
    │   └── kustomization.yaml
    ├── prd
    │   ├── config-map.yaml
    │   └── kustomization.yaml
    └── stg
        ├── config-map.yaml
        └── kustomization.yaml

La base est le dossier ou l’on stocke les fichiers partagés pour tous les environnements.
L’overlays permet de faire des configurations spécifiques par environnements et/ou ajouter des configurations à la config de base.

Kustomize Overlays folders Kustomize Overlays

Fichiers Kustomize

Kustomize File Kustomize File 2 Kustomize File 3

Commandes

# Generate all config without apply/deploy
❯ kustomize build k8s/

# Generate a specific config without apply/deploy
❯ kustomize build k8s/api/

# Generate and apply config
❯ kustomize build k8s/ | kubectl apply -f -

# Generate and apply multiple specific configs
❯ kubectl apply -k k8s/api/ -k k8s/db/ -k k8s/cache/ -k k8s/kafka/

# Generate and apply config
❯ kubectl apply -k k8s/

# Delete config
❯ kustomize build k8s/ | kubectl delete -f -

# Delete config
❯ kubectl delete -k k8s/

Transformers

Permet de créer et modifier des ressources.
Actions commun:

  • commonLabel - ajout de labels à toutes les ressources Kubernetes
  • namePrefix/nameSuffix - ajout de prefix ou suffixe à toutes les ressources Kubernetes
  • Namespace - ajout du namespace à toutes les ressources Kubernetes
  • commonAnnotations - ajout d’une annotation à toutes les ressources Kubernetes

Transformers communs

Kustomize transformers common

Transformers images

Kustomize transformers images newImage Kustomize transformers images newTag Kustomize transformers images newImage & newTag