从零开始写 k8s 发布工具 - 2.4. 使用 kustomize 管理所有 k8s 文件
2.4. 使用 kustomize 管理所有 k8s 文件

前面已经简单的封装了 Deployment, Service, Ingress, 完成了零部件的创建。
今天就通过 Kustomization 进行组装, 实现流水线。
Kustomize
开始之前, 先来安装 kustomize 库。
| |
这里补充一下, 访问 Github https://github.com/kubernetes-sigs/kustomize/ 。
kustomize () 首页 README.md 并没有提到 go get 的包名。 通常 k8s 的代码在 github 上都是镜像。 这时候只需要进到 go.mod , 包名就一目了然。
| |
编码
先来看看 kustomization.yml 的定义, 非常的简单。
| |
今天的代码及其简单, 只需要 20 行搞定。
在 import 的时候, 可能自动补全不会自己带上 v3。 需要手工调整一下。
| |
这里已经定了 kustomization 三个外部资源名字。
其它
kustomize 还是很贴心的, 在 types 把 version 和 kind 已经通过常量定义好了。
在 https://github.com/kubernetes-sigs/kustomize/blob/v3.3.1/pkg/types/kustomization.go
| |
另外我们可以看到, 虽然 TypeMeta 定义相同, 但是直接从 apimachinery/pkg/apis/meta/v1.TypeMeta 复制过来的, 而不是通过引用。
| |
之前看到一句话,
简单的拷贝比引用可能更节约资源, 因为引用是初始化一整个包
测试
执行命令, 检查结果是不是和自己期待的一样。
| |
如果不是, 就回去检查代码吧。
- 原文链接:https://typonotes.com/posts/books/kustz/chapter02/04-kustomize/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。


