Kubernetes Helm和Kustomize之间有什么区别?
我使用Kubernetes和Helm已经有一段时间了,现在我第一次遇到了Kustomize 但是Kustomize和Helm之间到底有什么区别呢Kubernetes Helm和Kustomize之间有什么区别?,kubernetes,kubernetes-helm,kustomize,Kubernetes,Kubernetes Helm,Kustomize,我使用Kubernetes和Helm已经有一段时间了,现在我第一次遇到了Kustomize 但是Kustomize和Helm之间到底有什么区别呢 两者是否只是捆绑K8s元素(如服务、部署等)的不同解决方案。。。?或者同时使用Helm和Kustomize有意义吗?几乎所有东西。比如问Apache和Nginx之间有什么区别:)他们做的工作大致相似,但量化差异是不可能的 简而言之,Helm是一个基于分散模型的模板驱动系统,用于图表共享。Kustomize基于YAML数据的深度合并和其他结构化转换 在某
两者是否只是捆绑K8s元素(如服务、部署等)的不同解决方案。。。?或者同时使用Helm和Kustomize有意义吗?几乎所有东西。比如问Apache和Nginx之间有什么区别:)他们做的工作大致相似,但量化差异是不可能的 简而言之,Helm是一个基于分散模型的模板驱动系统,用于图表共享。Kustomize基于YAML数据的深度合并和其他结构化转换
在某些情况下,两者的使用都是合理的,例如将helm模板的输出输入到kustomize中以进行覆盖。描述差异的最佳方法是将它们称为不同类型的部署引擎。一个是模板引擎,另一个是覆盖引擎 那么这些是什么呢?当您使用模板引擎时,您会创建一个文件的样板示例。从那里,您可以使用已知的过滤器抽象出内容,并在这些抽象中提供对变量的引用。这些变量通常被抽象到另一个文件中,在该文件中插入特定于环境的信息,然后在运行时,当您执行模板引擎时,模板被加载到内存中,所有变量都与其占位符交换 这在一些细微的方面不同于覆盖引擎。通常关于信息如何进入配置示例。注意到我是如何使用单词示例而不是模板的。这是故意的,因为Kustomize不使用模板。而是创建一个Kustomization.yml文件。这个文件然后指向两个不同的东西。你的基础和覆盖层。在运行时,您的基础被加载到内存中,如果存在任何匹配的覆盖,它们将被合并到基础配置之上 后一种方法允许您更轻松地将配置扩展到大量变体。想象一下,为10000种不同的配置维护10000组不同的变量文件。现在想象一下,维护模块化和小型配置的层次结构,这些配置可以以任何组合或排列方式继承?它将大大减少冗余并大大提高可管理性 另一个需要注意的细微差别是项目的所有权。头盔由第三方操作。Kustomize由Kubernetes团队直接开发。事实上,Kubectl直接支持Kustomize功能。您可以像这样构建和执行Kustomize项目:
kubectl apply-k DIR
。但是,kubectl二进制文件中嵌入的kustomize版本已经过时,并且缺少一些新功能
Kustomize也有一些其他的改进,虽然有些小,但仍然值得一提。它可以参考来自互联网或其他非标准路径的数据库。它支持生成器根据文件和字符串文本自动为您构建配置文件。它支持健壮的细粒度JSON修补。它支持跨配置文件注入元数据
以下评论中添加了以下链接以进行更多比较: