ð kustomize-basics
Use when customizing Kubernetes configurations without templates using Kustomize overlays and patches.
Overview
Kubernetes configuration customization without templates.
Basic Structure
app/
âââ base/
â âââ kustomization.yaml
â âââ deployment.yaml
â âââ service.yaml
âââ overlays/
âââ development/
â âââ kustomization.yaml
âââ production/
âââ kustomization.yaml
Base Kustomization
# base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
commonLabels:
app: myapp
namePrefix: myapp-
images:
- name: myapp
newTag: v1.0.0
Overlay Kustomization
# overlays/production/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
replicas:
- name: myapp-deployment
count: 5
images:
- name: myapp
newTag: v2.0.0
patches:
- patch: |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
template:
spec:
containers:
- name: myapp
resources:
limits:
memory: "1Gi"
cpu: "1000m"
Common Commands
# Build kustomization
kustomize build base/
# Build overlay
kustomize build overlays/production/
# Apply with kubectl
kubectl apply -k overlays/production/
# Diff before apply
kubectl diff -k overlays/production/
Transformers
Common Labels
commonLabels:
app: myapp
environment: production
Name Prefix/Suffix
namePrefix: prod-
nameSuffix: -v2
Namespace
namespace: production
Config Map Generator
configMapGenerator:
- name: app-config
files:
- config.properties
literals:
- LOG_LEVEL=info
Secret Generator
secretGenerator:
- name: app-secrets
literals:
- password=secret123
Best Practices
Use Bases for Common Configuration
Keep common configuration in base and environment-specific in overlays.
Strategic Merge Patches
patches:
- path: patch-deployment.yaml
JSON Patches
patchesJson6902:
- target:
group: apps
version: v1
kind: Deployment
name: myapp
patch: |-
- op: replace
path: /spec/replicas
value: 3