Organize the output¶
Kubesplit names each generated file after the resource it contains and groups files by namespace. This guide shows how to control that layout. For the exhaustive rules, see File naming and layout.
Default layout: prefixed and grouped by namespace¶
By default every file is named:
Cluster-wide resources (Namespace, ClusterRole, ClusterRoleBinding, …) go to the root of the output directory; namespaced resources go into a subdirectory named after their namespace.
kubesplit --input test-assets/source/all-in-one.yml \
--output out \
--no-quotes-preserved \
--clean-output-dir
out
├── apps-demo
│ └── 05--rolebinding--example-ns-demo-developer-binding.yml
├── apps-integration
│ └── 05--rolebinding--example-ns-integration-developer-binding.yml
├── ingress-controllers
│ ├── 03--serviceaccount--traefik-ingress-controller.yml
│ ├── 11--configmap--traefik-conf.yml
│ ├── 12--persistentvolumeclaim--traefik-acme.yml
│ ├── 20--deployment--traefik-ingress-controller.yml
│ ├── 30--service--traefik-ingress-endpoint.yml
│ ├── 30--service--traefik-web-ui.yml
│ └── 31--ingress--traefik-web-ui.yml
├── 00--namespace--apps-demo.yml
├── 00--namespace--apps-integration.yml
├── 00--namespace--ingress-controllers.yml
├── 01--clusterrole--example-node-viewer.yml
├── 01--clusterrole--example-traefik-ingress-controller.yml
├── 02--clusterrolebinding--example-node-viewer-developer.yml
└── 02--clusterrolebinding--example-traefik-ingress-controller.yml
3 directories, 16 files
The 00, 01, 20, 30… prefixes are apply-order weights derived from the resource kind, so applying the files in lexical order (which is what kubectl apply -f out/ --recursive does) respects the usual dependency order. The full weight table lives in File naming and layout, and the reasoning behind it in How kubesplit works.
Drop the prefixes with --no-resource-prefix¶
If you don't need an apply order (for example when files feed a GitOps tool that resolves ordering itself), use -p/--no-resource-prefix:
kubesplit --input test-assets/source/all-in-one.yml \
--output out \
--no-quotes-preserved \
--no-resource-prefix \
--clean-output-dir
out
├── apps-demo
│ └── rolebinding--example-ns-demo-developer-binding.yml
├── ingress-controllers
│ ├── configmap--traefik-conf.yml
│ ├── deployment--traefik-ingress-controller.yml
│ ├── ingress--traefik-web-ui.yml
│ ├── persistentvolumeclaim--traefik-acme.yml
│ ├── serviceaccount--traefik-ingress-controller.yml
│ ├── service--traefik-ingress-endpoint.yml
│ └── service--traefik-web-ui.yml
├── clusterrole--example-node-viewer.yml
├── clusterrolebinding--example-node-viewer-developer.yml
└── namespace--apps-demo.yml
...
The namespace grouping is unaffected — only the NN-- prefix is removed.
Next steps¶
- See the complete naming rules and prefix table in File naming and layout.
- Understand how kubesplit decides a resource's namespace in How kubesplit works.