从零开始写 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/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。