Pentru a rula aceeași aplicație în mai multe medii (dezvoltare, staging, producție), dezvoltatorii se confruntau anterior fie cu duplicarea a zeci de fișiere YAML aproape identice, fie cu complexitatea ridicată a șabloanelor text de tip Helm. Kustomize (integrat nativ direct în kubectl prin indicatorul -k) oferă o abordare declarativă fără șabloane: păstrează un nucleu comun (base) și aplică modificări specifice fiecărui mediu prin overlays.
Structura clasică de foldere Kustomize
# Structura proiectului:
# ├── base/
# │ ├── deployment.yaml
# │ ├── service.yaml
# │ └── kustomization.yaml
# └── overlays/
# ├── dev/
# │ └── kustomization.yaml (scalează la 1 replică, folosește resurse mici)
# └── prod/
# ├── kustomization.yaml (scalează la 5 replici, domeniu ssl prod)
# └── patch-replicas.yaml
Fișierul overlays/prod/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
# Adaugă automat prefixul 'prod-' tuturor resurselor:
namePrefix: prod-
namespace: productia
# Suprascrie eticheta de imagine cu versiunea stabilă de producție:
images:
- name: my-api
newTag: v2.1.0
# Patch pentru mărirea numărului de replici:
patches:
- target:
kind: Deployment
name: my-api
patch: |-
- op: replace
path: /spec/replicas
value: 5
Inspectarea și aplicarea manifestelor kustomize
# 1. Vizualizează manifestul YAML combinat final (fără a-l aplica în cluster):
kubectl kustomize overlays/prod
# 2. Aplică modificările direct în cluster dintr-o singură comandă:
kubectl apply -k overlays/prod