Managementul Declarativ al Manifestelor Multi-Mediu cu Kustomize în Kubernetes (kubectl)

Creare și actualizare Integrat nativ în kubectl

Ghid practic pentru Kustomize în Kubernetes: gestionarea curată a mediilor dev, staging și production fără șabloane complexe (template-free), prin overlay-uri, patch-uri JSON/YAML și hash-uri automate pentru ConfigMaps.

Sintaxă comandă
kubectl kustomize overlays/production | kubectl apply -k overlays/production

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