Helm 和 Kustomize 之间有什么区别?

2024-02-05

我已经使用 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(使用前将#替换为@)

Helm 和 Kustomize 之间有什么区别? 的相关文章

随机推荐

  • 构建 VITE 应用程序时如何分配自定义 CSS 文件名?

    是否可以在VITE中构建并使用application name css or my site name css VITE 可以选择构建自定义 JS 文件 但不能构建自定义 CSS 或 SCSS 文件 用于导出 https vitejs de
  • 如何在 XCassets 中使用立方体纹理类型

    我正在尝试学习 SceneKit 开发并尝试在后台添加天空盒 为了存储立方体贴图纹理 我发现 XCAssets 有一个类型立方体纹理集 https developer apple com library archive documentat
  • 单向 SSL 是单向加密吗?

    如果使用 SSL 的一种方式 服务器证书身份验证 则从客户端发送的数据将使用服务器证书的公钥进行加密 因此客户端发送的数据可以得到隐私保护 我的问题是 这是否意味着从服务器发送到客户端的一种方式 SSL 数据未加密并以纯文本形式发送 对于服
  • JSF 中的线程?

    我是 JSF 新手 我需要使用 Threads 来处理 google 地图 我正在使用 primefaces 进行谷歌地图 但我需要在后台执行一个线程以从数据库获取纬度和经度 然后在地图中绘制标记 您的问题并非特定于 JSF 而是针对一般的
  • Facebook 页面插件无法正常工作

    我需要一个嵌入式 Facebook 页面插件 但是facebook的代码生成器不起作用 当我给出 facebook 页面的 url 时 生成器不会给出该页面的代码 预览模式下也不会出现该页面 脸书页面是 https www facebook
  • PE格式,IAT目录有什么用

    在 PE 格式中 我们有导入表目录 通过IMAGE DIRECTORY ENTRY IMPORT 和 IAT 目录 通过以下方式访问 IMAGE DIRECTORY ENTRY IAT 两者都是可选标头数据目录的一部分 使用导入表 加载器动
  • memcpy 溢出边界利用? (破坏堆栈)

    我试图弄清楚这是否会以某种方式溢出 void print address char p arp hw int i hw length size p OFFSET1 189 4 193 memcpy hw addr packet OFFSET
  • C++ 成员函数指针

    我正在用 C 做一个小游戏 我正在发现类成员函数指针 我不知道如何让它们以正确的方式工作 但这是我的尝试 A struct where the function pointer will be stored for the call By
  • django数据库同步以供离线使用

    我有一台主 django 服务器 用于存储数据 mysql 数据库 在线 我希望许多用户在他们的笔记本电脑上同步此数据库的副本 仅必须复制增量 sqlLite DB 离线 用户无权访问主服务器 用户可以查看和更新 其本地数据库 返回在线 用
  • 从受密码保护的 Excel 文件到 Python 对象

    我使用的是 Windows 7 Python 2 7 和 Microsoft Excel 2013 我知道从here https stackoverflow com questions 15285068 from password prot
  • Kotlin 中如何将 String 转换为 Int?

    我正在 Kotlin 中开发一个控制台应用程序 我在其中接受多个参数main 功能 fun main args Array
  • Spring Boot FlywayException:无法连接到数据库。配置url、用户和密码

    当我跑步时maven flyway migrate 我收到错误 无法执行目标 org flywaydb flyway maven plugin 6 5 5 migrate default cli 在项目 myProject 上 org fl
  • 何时在 Material UI 中使用“classes”与“className”?

    我对这两个属性有点困惑 如果我有 const useStyles makeStyles gt style width 600 height 400 那么 我可以做的是 const classes useStyles
  • 应用内购买在 Chrome 扩展中不起作用

    应用内购买屏幕正在返回 应用程序内屏幕的屏幕截图 https i stack imgur com E5Qf1 png 错误是 发生意外的错误 请稍后再试 解雇 正如你所看到的 其中一半也是黑色的 Buy js GOOGLE s CODE C
  • 在 PHP 中组合目录和文件名(相当于 .Net 中的 Path.Combine)

    This should be a simple question but I just can t recall the relevant API A search on google with the term doesn t yield
  • 在 Angular 2 打字稿中导入gapi.auth2

    我尝试在打字稿中从 Googlegapi auth2 导入一些类或函数 但即使我在typings目录中正确添加了gapi auth2类型 下面的代码也永远不会工作 import GoogleAuth from gapi auth2 我总是遇
  • 将 Firebase 与 Kotlin 协程结合使用:取消作业时任务不会取消

    在协程内部 借助 kotlinx coroutines play services 库中的await 函数 我使用如下内容 suspend fun uploadFile uri Uri withContext IO Firebase sto
  • 优化 JavaScript 代码以小写 JSON 属性名称

    我正在开发一个 Web 应用程序 该应用程序接收具有大写属性名称的 JSON 数据 我需要这些属性名称为小写 因此我使用一个函数递归地循环遍历 JSON 对象并将它们转换为小写 问题是我的 JSON 回复可能会变得非常大 我希望该函数能够表
  • 区分 tkinter 菜单中两个相同项目的问题

    我创建的程序允许用户在键盘上输入的任何字母都写在海龟图形画布上 在我的程序中 我还创建了一个 Python 菜单 每次用户执行函数 绘制字母时 都会向该菜单写入一个 Point 对象 针对每个字母函数 但是 由于我的程序的性质 用户还可以将
  • Helm 和 Kustomize 之间有什么区别?

    我已经使用 Kubernetes 和 Helm 一段时间了 现在第一次接触 Kustomize 但 Kustomize 和 Helm 之间到底有什么区别呢 两者只是捆绑 K8s 元素 例如服务 部署等 的不同解决方案吗 或者同时使用 Hel