Kustomize
Kustomize is a template-free configuration tool for customizing raw, declarative Kubernetes YAML manifests through layered overlays rather than variable substitution.
Definition
Kustomize is a template-free configuration tool for customizing raw, declarative Kubernetes YAML manifests through layered overlays rather than variable substitution.
Overview
Kustomize lets teams manage Kubernetes configuration without templating languages. Instead of parameterizing YAML with variables like Helm does, it works by patching plain manifests: you define a `base` set of resources and then layer `overlays` (e.g. dev, staging, production) that patch, add, or remove fields using strategic merge patches or JSON patches. A `kustomization.yaml` file declares which resources to include and which patches, name prefixes, labels, or config maps to apply on top. Because the base manifests stay valid, unmodified Kubernetes YAML, Kustomize avoids the drift and readability problems that heavy templating can introduce, and diffs between environments stay easy to review in version control. Kustomize was folded directly into `kubectl` starting with Kubernetes 1.14 (invoked via `kubectl apply -k`), which made it a zero-install option for teams already using kubectl. It is commonly used alongside GitOps tools such as Argo CD or Flux, which natively understand kustomization directories as a deployment source, and it is frequently compared to Helm, which takes a templating-first approach instead.
Key Features
- Template-free patching of standard Kubernetes YAML using overlays
- Built into kubectl via the -k flag, requiring no extra installation
- Base and overlay structure for managing dev, staging, and production variants
- Strategic merge and JSON patch support for fine-grained field changes
- Generators for ConfigMaps and Secrets from files or literals
- Native support in GitOps tools like Argo CD and Flux