Kustomize
Kustomize is a Kubernetes configuration tool that produces environment-specific manifests from reusable YAML resources. It changes structured objects with overlays, patches, generators, and built-in transformations without introducing template expressions.
itVirtualization, containers, and orchestration | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Kustomize
Kustomize is the part of Kubernetes configuration work that takes a pile of ordinary YAML and makes it less likely that three environments become three incompatible folk religions. It reads a directory, follows its kustomization.yaml, gathers resources, changes them by declared rules, and emits plain Kubernetes objects. There is no Kustomize creature waiting in the cluster to interpret them later.
The useful trick is the base and overlay pair. A base holds the shared shape. An overlay includes it and supplies the target-specific delta, such as a production image or label. This is less mystical than copying the whole application into a production directory and hoping future edits remember all three copies. The base does not know who uses it, which is a pleasantly firm boundary for a file system.
Most changes have a named tool before they need a general patch. Transformations handle common cross-cutting work such as labels, annotations, namespaces, names, and images. A patch changes a selected structure when those fields do not fit. A replacement copies one resource value into another. Choose the narrowest one, because patches run in order and overlapping patches make configuration into a small detective novel.
Generators add another useful wrinkle. A ConfigMap or Secret generator creates an object from files or literals, usually with a name suffix derived from its content. When the content changes, Kustomize can update recognized references to the new name. This helps a workload point at changed configuration. It does not encrypt a Secret, clean up old objects, or negotiate with reality on your behalf.
The important boundary is rendering. kustomize build and kubectl kustomize produce YAML. kubectl apply -k produces YAML and submits it. Neither result says the API server will admit it or that the workload will become healthy. Pin the renderer version, build every overlay, and inspect the rendered diff. The Cheatsheet names the fields and commands; the slides map the flow; the practice task turns that flow into a local test. After that, Kustomize is mostly visible configuration with a strict refusal to do the invisible bits for you.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://kustomize.io/
Supports
- Template-free declarative customization and plain YAML output
- Standalone and kubectl execution paths
- Kustomize product landscape entry
- https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/
Supports
- Resources, generators, patches, images, replacements, bases, and overlays
- Generated name suffixes and name-reference rewriting
- kubectl apply, diff, view, and delete integration
- https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/
Supports
- Kustomization field syntax and purpose
- https://kubernetes.io/docs/reference/kubectl/generated/kubectl_kustomize/
Supports
- kubectl kustomize synopsis, target forms, and plugin flags
- https://github.com/kubernetes-sigs/kustomize/tree/master/examples
Supports
- Project-maintained composition and transformation examples
- https://www.kubernetes.dev/resources/keps/993/
Supports
- Generator and transformer execution model
- Plugin behavior and trust boundary
- https://github.com/kubernetes-sigs/kustomize/releases
Supports
- Timeline applicability research and release-history review
- https://github.com/sindresorhus/awesome
Supports
- Starting index for required awesome-list discovery
- https://github.com/DevOpsHiveHQ/awesome-kustomize
Supports
- Discovery of KSOPS, Secretize, Kubeconform validation, Argo CD integration, and Flux integration
- https://github.com/viaduct-ai/kustomize-sops
Supports
- SOPS-backed Kustomize secret generation
- https://github.com/alexkli/secretize
Supports
- Multi-source Kubernetes Secret generator plugin
- https://github.com/yannh/kubeconform
Supports
- Kubernetes manifest schema validation
- https://argo-cd.readthedocs.io/en/stable/user-guide/kustomize/
Supports
- Argo CD detection and rendering of Kustomize applications
- https://fluxcd.io/flux/components/kustomize/kustomizations/
Supports
- Flux reconciliation of manifests generated from a kustomization
- https://helm.sh/
Supports
- Helm charts, Kubernetes application packaging, and releases
- Helm product landscape entry
- https://cuelang.org/
Supports
- CUE configuration, constraints, validation, and data generation
- CUE product landscape entry
- https://jsonnet.org/
Supports
- Jsonnet functions, object composition, and configuration generation
- Jsonnet product landscape entry
- https://tanka.dev/
Supports
- Tanka Kubernetes environments and Jsonnet workflow
- Tanka product landscape entry
- https://carvel.dev/ytt/
Supports
- ytt YAML overlays, Starlark logic, and schema validation
- ytt product landscape entry
- https://timoni.sh/
Supports
- Timoni CUE modules and Kubernetes application packaging
- Timoni product landscape entry
- https://github.com/kubernetes-sigs/kustomize/issues/5547
Supports
- A practitioner report that a migration from bases to resources with a duplicate resources key dropped previously listed resources and led to unintended deletions
- Field Notes guidance on reviewing migration diffs and using kustomize edit fix in a reversible working tree
