
Kustomize는 Kubernetes 리소스를 "복붙 없이" 환경별로 오버라이드(override) 할 수 있게 도와주는 도구.
템플릿 언어 없이, 순수 YAML 기반으로 구성되어 있고, kubectl에 기본 포함되어 있어 설치도 필요 없음.
deployment.yaml을 모든 환경(dev, staging, prod)에 맞게 각각 복사해서 수정replicas)만 다르게 설정environments/
├── dev/
│ └── deployment.yaml (replicas: 1)
├── staging/
│ └── deployment.yaml (replicas: 2)
└── prod/
└── deployment.yaml (replicas: 5)
🤦♂️ 새 리소스(service.yaml 등)가 생기면 세 환경 모두에 복붙해서 넣어야 함 → 유지보수 지옥
kustomize-app/
├── base/
│ ├── deployment.yaml
│ └── kustomization.yaml
└── overlays/
├── dev/
│ └── kustomization.yaml
├── staging/
│ └── kustomization.yaml
└── prod/
└── kustomization.yaml
replicas: 1 기본값replicas: 2, prod에서는 replicas: 5만 덮어씀resources:
- deployment.yaml
bases:
- ../../base
patchesStrategicMerge:
- replica-patch.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
kubectl apply -k overlays/staging/→ base + overlay 합쳐서 최종 manifest 생성 및 적용
| Feature | Helm | Kustomize |
|---|---|---|
| 방식 | 템플릿 기반 | 순수 YAML |
| 변수 설정 | values.yaml로 매개변수화 | YAML patch로 오버라이드 |
| 설치 위치 | 별도 설치 필요 | kubectl에 기본 포함 |
| 복잡도 | 복잡한 로직 가능하지만 가독성 낮음 | 단순, 명확, 직관적 |
| 권장 사용처 | 외부 차트 사용 / 패키징 필요 시 | 내부 환경 커스터마이징 시 |
💬 Helm은 패키징 중심, Kustomize는 환경별 커스터마이징 중심이라고 기억하면 좋아
Kustomize는 중복 없이 환경별 설정을 오버라이드하는 도구
Base/Overlay 패턴으로 구성 → 유지보수성과 확장성 향상
템플릿 없이 순수 YAML 사용 → 깔끔하고 학습 난이도 낮음
실무에서는 Helm과 Kustomize를 함께 사용하는 경우도 많음