Kustomize kustomization.yaml Generator
指导
Kustomize kustomization.yaml Generator
Assemble a valid kustomization.yaml file without memorizing the Kustomize schema. Pick the features you need — resources, name prefixes, labels, image overrides, generators, and patches — and the tool emits clean YAML using the current kustomize.config.k8s.io/v1beta1 API version, steering clear of deprecated fields that commonly slip into hand-written or AI-generated configs.
如何使用
- List your resource files or bases, one path per line.
- Optionally set a namespace, name prefix/suffix, common labels, and annotations.
- Add image overrides as
matchName=newName:newTag, or override replica counts. - Toggle a configMapGenerator or secretGenerator and supply literals or files.
- 复制生成的
kustomization.yamlor download it directly into your overlay directory.
特征
- Current schema – Outputs apiVersion
kustomize.config.k8s.io/v1beta1with the modernlabels且patchesfields, not deprecatedcommonLabels或patchesStrategicMerge. - Resources & bases – Build the
resourceslist from files or directory overlays. - Name transforms – Apply
namespace,namePrefix,并且nameSuffixacross all resources. - Image overrides – Set
newName,newTag, or adigestwith registry-port-safe parsing. - 生成器 – Produce configMapGenerator and secretGenerator blocks, with optional content-hash suffix control.
- 实时验证 – Inline warnings flag invalid RFC 1123 names, duplicate keys, and non-integer replica counts.
常问问题
-
What is Kustomize and how does it differ from Helm?
Kustomize is a template-free way to customize Kubernetes manifests. Instead of using a templating language with placeholders like Helm, it layers declarative overlays on top of plain YAML base resources. It is built directly into kubectl via the -k flag, so no extra tooling is required.
-
Why does Kustomize add a hash suffix to generated ConfigMaps and Secrets?
By default, configMapGenerator and secretGenerator append a content-based hash to the resource name. When the contents change, the name changes, which forces Deployments that reference them to perform a rolling update. This guarantees pods pick up new configuration instead of silently keeping stale values.
-
What is the difference between namePrefix, commonLabels, and the labels field?
namePrefix and nameSuffix modify the metadata.name of every resource. The newer labels field adds key/value labels and can optionally include them in selectors via includeSelectors, whereas the deprecated commonLabels always injected into selectors, which could break existing Deployments whose selectors are immutable.
-
Why are some Kustomize fields like patchesStrategicMerge considered deprecated?
Older Kustomize versions used separate patchesStrategicMerge and patchesJson6902 fields. These were unified into a single patches field that accepts both strategic-merge and JSON 6902 patches with an optional target selector. Using the current schema avoids deprecation warnings and keeps files compatible with recent kubectl releases.
