skip to content
Alvin Lucillo

Basic kustomize files structure

/ 2 min read

Without base and overlays, structuring your k8s with kustomize just needs a single kustomization.yaml.

tree
.
├── README.md
└── k8s
    ├── db
   ├── db-config.yaml
   ├── db-depl.yaml
   └── db-service.yaml
    ├── kustomization.yaml
    ├── message-broker
   ├── rabbitmq-config.yaml
   ├── rabbitmq-depl.yaml
   └── rabbitmq-service.yaml
    └── nginx
        ├── nginx-depl.yaml
        └── nginx-service.yaml

4 directories, 10 files

With the structure above, the configuration looks like the file below. All files are defined.

kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - db/db-config.yaml
  - db/db-depl.yaml
  - db/db-service.yaml
  - message-broker/rabbitmq-config.yaml
  - message-broker/rabbitmq-depl.yaml
  - message-broker/rabbitmq-service.yaml
  - nginx/nginx-depl.yaml
  - nginx/nginx-service.yaml

However, you can make it simplify it by just referring to the folders in the main config file:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - db
  - message-broker/
  - nginx/
tree
.
├── README.md
└── k8s
    ├── kustomization.yaml
    ├── db
   ├── db-config.yaml
   ├── db-depl.yaml
   ├── db-service.yaml
   └── kustomization.yaml
    ├── message-broker
   ├── kustomization.yaml
   ├── rabbitmq-config.yaml
   ├── rabbitmq-depl.yaml
   └── rabbitmq-service.yaml
    └── nginx
        ├── kustomization.yaml
        ├── nginx-depl.yaml
        └── nginx-service.yaml

4 directories, 13 files

Each folder keeps its own kustomization.yaml so you can compose resources cleanly:

k8s/kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - db
  - message-broker
  - nginx

k8s/db/kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - db-config.yaml
  - db-depl.yaml
  - db-service.yaml

k8s/message-broker/kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - rabbitmq-config.yaml
  - rabbitmq-depl.yaml
  - rabbitmq-service.yaml

k8s/nginx/kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - nginx-depl.yaml
  - nginx-service.yaml