这是 K8S 的原生配置管理,以无模板方式来定制应用的配置,以 Base+Overlay 的方式生成应用最终部署时所需的描述文件。
简介
其思想来源于 Declarative application management in Kubernetes 这篇文章,那么 kustomize 主要是为了解决什么问题?
一般应用都会存在多套部署环境:开发环境、测试环境、生产环境,这也就意味着有多套 K8S 资源配置 YAML 文件,而且可能只存在微小差异,例如镜像版本、Label 等,而使用复制+修改的方式很容易出现误操作,而 kustomize 就是为了解决该问题。
相比其它 (例如Helm) 管理工具来说,kustomize 使用的都是 K8S 原生 YAML 文件,不需要学习额外的 DSL 语法,而且,从 K8S v1.14 之后已经是 kubectl 的内置命令了,可以通过 kubectl -k
或者 kubectl --kustmoize
来使用。
如果是进行一些测试验证,可以安装对应二进制文件,直接从 Github Release 下载对应的包。
基本原理
简单来说,通过如下几种方式适配:
- 通过 Base + Overlays 方式来维护不同应用环境的配置。
- 使用 patch 方式复用 Base 配置,并在 Overlay 描述与 Base 应用配置的差异部分来实现资源复用。
示例
在官方的 Github Examples 中包含了多个示例可供参考。