Files
kustomize/README.md
Jeffrey Regan 5a54c96203 update readmes
2018-05-24 14:13:10 -07:00

134 lines
3.7 KiB
Markdown

[KEP]: https://github.com/kubernetes/community/blob/master/keps/sig-cli/0008-kustomize.md
[`make`]: https://www.gnu.org/software/make
[`sed`]: https://www.gnu.org/software/sed
[applied]: docs/glossary.md#apply
[base]: docs/glossary.md#base
[declarative configuration]: docs/glossary.md#declarative-application-management
[demo]: demos/README.md
[demos]: demos/README.md
[imageBase]: docs/base.jpg
[imageOverlay]: docs/overlay.jpg
[installation]: INSTALL.md
[kubernetes style]: docs/glossary.md#kubernetes-style-object
[kustomization]: docs/glossary.md#kustomization
[overlay]: docs/glossary.md#overlay
[overlays]: docs/glossary.md#overlay
[release page]: https://github.com/kubernetes-sigs/kustomize/releases
[resource]: docs/glossary.md#resource
[resources]: docs/glossary.md#resource
[sig-cli]: https://github.com/kubernetes/community/blob/master/sig-cli/README.md
[variant]: docs/glossary.md#variant
[variants]: docs/glossary.md#variant
[workflows]: docs/workflows.md
# 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.
[![Build Status](https://travis-ci.org/kubernetes-sigs/kustomize.svg?branch=master)](https://travis-ci.org/kubernetes-sigs/kustomize)
[![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes-sigs/kustomize)](https://goreportcard.com/report/github.com/kubernetes-sigs/kustomize)
**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_.
![base image][imageBase]
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].
![overlay image][imageOverlay]
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 -
> ```
## About
This tool is sponsored by [sig-cli] ([KEP]).