Why Kustomize
Kustomize customizes Kubernetes YAML without templates — no Go templating, no Helm charts. Overlay base configs with patches for different environments.
Built into kubectl
kubectl apply -k overlays/production/
Base Configuration
# base/kustomization.yaml
resources:
- deployment.yaml
- service.yaml
# base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
template:
spec:
containers:
- name: app
image: myorg/myapp:latest
resources:
limits:
memory: 256Mi
Production Overlay
# overlays/production/kustomization.yaml
bases:
- ../../base
replicas:
- name: myapp
count: 5
images:
- name: myorg/myapp
newTag: v2.0.0
patchesStrategicMerge:
- increase-resources.yaml
namePrefix: prod-
namespace: production
labels:
- pairs:
environment: production
# overlays/production/increase-resources.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: app
resources:
limits:
memory: 1Gi
cpu: "1"
Common Transformers
# kustomization.yaml
configMapGenerator:
- name: app-config
literals:
- DB_HOST=postgres
- DB_PORT=5432
secretGenerator:
- name: app-secrets
literals:
- DB_PASSWORD=secret
commonLabels:
app: myapp
team: backend
Key Features
- No templates — plain YAML, no Go/Jinja syntax
- Overlays — base + patches per environment
- Built into kubectl — no extra tools needed
- Generators — ConfigMaps and Secrets from files/literals
- Transformers — labels, annotations, namespace, prefix
- Composable — combine multiple bases
Resources
Need to extract K8s configs, compare environments, or audit manifests? Check out my Apify tools or email spinov001@gmail.com for custom solutions.
Top comments (0)