Kubectl kustomize: Difference between revisions
Line 18: | Line 18: | ||
kustomize has the concept of overlay and base. Both are represented by kustomization files. The base declares the things that all possible output manifest variants (example development, staging and production) share, which include common customizations and resources, and the overlays declare the differences. The kustomization files are maintained in directories named "base", "overlays", in which each overlay has its own sub-directory. | kustomize has the concept of overlay and base. Both are represented by kustomization files. The base declares the things that all possible output manifest variants (example development, staging and production) share, which include common customizations and resources, and the overlays declare the differences. The kustomization files are maintained in directories named "base", "overlays", in which each overlay has its own sub-directory. | ||
A patch is a partial resource declaration that once applied, modifies just a subset of the configuration. | A patch is a partial resource declaration that once applied, modifies just a subset of the configuration. kustomize supports strategic merge patches and [[JSON Patch|JSON patches]]. | ||
=kustomization.yaml Example= | =kustomization.yaml Example= |
Revision as of 18:12, 23 August 2019
External
- https://kubernetes.io/blog/2018/05/29/introducing-kustomize-template-free-configuration-customization-for-kubernetes/
- https://github.com/kubernetes-sigs/kustomize/tree/master/docs
Internal
Overview
The "kustomize" logic reads a series of source API resource manifests, instructions from a kustomization.yaml file and generates syntactically valid and complete API resource manifests at stdout. The generated content may contain multiple resource representations, separated by ---. The output can be further processed by other tools or streamed directly into kubectl for deployment to a cluster.
kubectl kustomize <dirname> > output.yaml
The directory specified as argument must contain kustomization.yaml.
kustomize has the concept of overlay and base. Both are represented by kustomization files. The base declares the things that all possible output manifest variants (example development, staging and production) share, which include common customizations and resources, and the overlays declare the differences. The kustomization files are maintained in directories named "base", "overlays", in which each overlay has its own sub-directory.
A patch is a partial resource declaration that once applied, modifies just a subset of the configuration. kustomize supports strategic merge patches and JSON patches.
kustomization.yaml Example
# add the specified labels to all resources commonLabels: app: hello # add the specified annotations to all resources commonAnnotations: ... # add the specified common prefix to all resource names namePrefix: blue- # ? namespace: ... # ? images: - name: something newTag: some-new-tag # ? patches: - patch-file-1.yaml # ? patchesStrategicMerge: - patch-file-2.yaml resources: - deployment-manifest.yaml - configmap-manifest.yaml - service-manifest.yaml
TODO
It seems to add prefixes to names, update image tags, adds namespace metadata, "yaml-cleans" according to rules that have yet to be elucidated.