我已经使用 Kubernetes 和 Helm 一段时间了,现在第一次接触 Kustomize。
但 Kustomize 和 Helm 之间到底有什么区别呢?
两者只是捆绑 K8s 元素(例如服务、部署等)的不同解决方案吗?或者同时使用 Helm 和 Kustomize 是否有意义?
描述差异的最佳方式是将它们称为不同类型的部署引擎。头盔是一个模板引擎Kustomize 是一个叠加引擎.
那么这些是什么?当您使用模板引擎时,您会创建文件的样板示例。从那里,您可以使用已知的过滤器抽象出内容,并在这些抽象中提供对变量的引用。这些变量通常被抽象到另一个文件中,您可以在其中插入特定于您的环境的信息。然后,在运行时,当您执行模板引擎时,模板将加载到内存中,并且所有变量都与其占位符进行交换。
这与覆盖引擎在一些细微的方面有所不同。通常是关于信息如何进入配置示例。注意到我如何使用这个词examples那里而不是模板。这是故意的,因为 Kustomize 不使用模板。相反,您创建一个自定义.yml文件。然后这个文件指向两个不同的东西。你的Base和你的Overlays。在运行时,您的 Base 被加载到内存中,如果存在任何匹配的 Overlays,它们将合并到您的 Base 配置之上。
后一种方法允许您更轻松地将配置扩展到大量变体。想象一下为 10,000 种不同的配置维护 10,000 组不同的变量文件。现在想象一下维护一个可以以任何组合或排列继承的模块化和小型配置的层次结构?它将大大减少冗余并大大提高可管理性。
另一个需要注意的细微差别是项目的所有权。 Helm 由第三方运营。 Kustomize 由 Kubernetes 团队直接开发。虽然两者都是 CNCF 项目。事实上,Kubectl 直接支持 Kustomize 功能。您可以像这样构建并执行 Kustomize 项目:kubectl apply -k DIR
。但是,kubectl 二进制文件中嵌入的 kustomize 版本已经过时,并且缺少一些新功能。
Kustomize 中还有一些其他改进,虽然虽然较小,但仍然值得一提。它可以从互联网或其他非标准路径引用基础。它支持生成器根据文件和字符串文字自动为您构建配置文件。它支持强大且精细的 JSON 修补。它支持跨配置文件注入元数据。
在下面的评论中添加了以下链接以进行更多比较:
- https://medium.com/@alexander.hungenberg/helm-vs-kustomize-how-to-deploy-your-applications-in-2020-67f4d104da69 https://medium.com/@alexander.hungenberg/helm-vs-kustomize-how-to-deploy-your-applications-in-2020-67f4d104da69
- https://codeengineered.com/blog/2018/helm-kustomize-complexity/ https://codeengineered.com/blog/2018/helm-kustomize-complexity/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)