3.7 KiB
kustomize
kustomize lets you customize raw, template-free YAML
files for multiple purposes, leaving the original YAML
untouched and usable as is.
kustomize targets kubernetes; it understands and can
patch kubernetes style API objects. It's like
make, in that what it does is declared in a file,
and it's like sed, in that it emits editted text.
Installation: Download a binary from the release page, or see these installation alternatives.
Be sure to try one of the tested demos.
Usage
Make a base
In some directory containing your YAML resource files (deployments, services, configmaps, etc.), create a kustomization file.
This file should declare those resources, and any common customization to apply to them, e.g. add a common label.
File structure:
~/yourApp └── base ├── deployment.yaml ├── kustomization.yaml └── service.yaml
This is your base. The resources in it could be a fork of someone else's configuration. If so, you can easily rebase from the source material to capture improvements, because you don't modify the resources directly.
Generate customized YAML with:
kustomize build ~/yourApp/base
The YAML can be directly applied to a cluster:
kustomize build ~/yourApp/base | kubectl apply -f -
Create variants of a common base using overlays
Manage traditional variants of a configuration like development, staging and production using overlays.
File structure:
~/yourApp ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays ├── development │ ├── cpu_count.yaml │ ├── kustomization.yaml │ └── replica_count.yaml └── production ├── cpu_count.yaml ├── kustomization.yaml └── replica_count.yaml
Store your overlays in your own repository. On disk, the overlay can reference a base in a sibling directory. This avoids trouble with nesting git repositories.
Generate YAML with
kustomize build ~/yourApp/overlays/production
The YAML can be directly applied to a cluster:
kustomize build ~/yourApp/overlays/production | kubectl apply -f -

