Helm的简介(优缺点)

2024-05-29 渥太华微生活

images.jpg


简介

Helm 是 Deis(一家容器工具公司,现在是微软的一部分)和谷歌共同努力的结果。这是2016年发布的Kubernetes 1.4的一部分。Helm帮助IT团队通过Helm Chart管理Kubernetes应用程序。这些chart可以让团队定义、安装和升级最复杂的Kubernetes应用程序。

Helm是Kubernetes的一个包管理工具,用于简化应用程序在Kubernetes集群上的安装、升级和管理过程,类似于Ubuntu中的apt、CentOS中的yum,Python中的pip,PHP中的composer,JavaScript中的npm。

它采用chart(一种打包格式)来定义、配置和发布Kubernetes应用及其依赖关系,允许用户快速查找、下载和安装软件包,特别是Kubernetes应用。


是什么让Helm如此受欢迎?

虽然在Kubernetes上管理应用程序的问题可能很复杂,但Helm本身使用起来相当简单。

没有Helm:

团队依赖Kubernetes YAML文件来配置Kubernetes工作负载。这些YAML文件指定了部署容器所需的所有内容。从需要配置每个Pod的方式到Kubernetes集群如何实现负载平衡,所有内容都必须在这些YAML文件中提到。

因此,要设置新的Kubernetes工作负载,需要为该工作负载创建一个YAML文件。

手动操作意味着要编写多个YAML文件——为创建的每个工作负载编写一个。

Helm:

不必为每个应用程序手动编写单独的YAML文件,只需创建一个Helm chart,让Helm为你将应用程序部署到集群。

Helm chart包含组合成应用程序的各种Kubernetes资源的模板。在部署到不同的Kubernetes集群时,可以定制Helm chart。

在创建Helm chart时,可以将特定于环境或部署的配置提取到单独的文件中,以便在部署Helm chart时指定这些值。例如,在开发、登台(staging)和生产环境中部署应用程序不需要单独的chart。

随着时间的推移,随着每次新的升级,Helm已经使Kubernetes上的应用程序管理变得更加简单。

随着最近发布的Helm 3,它带来的好处已经超过了DevOps社区的预期,并且很高兴地将它添加到部署Kubernetes应用程序的必备工具列表中。


Helm 3 - 别了,Tiller

当Helm 2发布时,Kubernetes还没有基于角色的访问控制(Role-Based Access Control,RBAC)。Helm包括一个称为Tiller的组件,负责部署chart。

但是,在Kubernetes的新版本中,RBAC是默认启用的,而Tiller允许用户绕过访问控制。

因此,在Helm 3中,Tiller被移除,最终消除了Helm的安全薄弱环节,使其更加可靠和稳定。


Helm的优点:

  1. 标准化与复用:Helm chart提供了一种标准化的方式来描述Kubernetes资源,使得应用的部署变得可复制且易于共享。

  2. 版本控制:支持对chart进行版本管理和控制,允许团队轻松回滚到之前已知的良好状态。

  3. 依赖管理:类似于软件包管理器,Helm能够处理复杂的应用依赖关系,确保所有相关的Kubernetes资源一并正确安装和更新。

  4. 模板化:通过使用Go模板语言,可以创建灵活的、可以根据环境变量动态生成配置的Kubernetes资源配置文件。

  5. 简化部署流程:只需运行简单的命令即可安装或升级应用,大大降低了部署复杂度。

  6. 社区支持丰富:Helm拥有庞大的开源社区支持,许多流行的Kubernetes应用都有官方或社区维护的chart,便于快速集成和部署。


Helm的缺点:

  1. 学习曲线:虽然提供了强大的功能,但对于初次使用者来说,理解Helm的工作原理以及如何编写chart需要一定的时间和学习成本。

  2. 安全性考虑:由于Helm chart可能包含敏感信息,如密码或密钥,因此需要额外的安全措施来保护这些信息不被泄露,例如使用Secrets或者加密等方法。

  3. 过度封装的风险:过于复杂的chart可能会隐藏底层细节,导致运维人员难以理解和调试实际的Kubernetes资源配置。

  4. 依赖更新问题:随着时间和项目的发展,依赖的chart可能会有更新,而手动跟踪和更新这些依赖有时会成为一项挑战。

  5. helm仓库管理:若组织内部有大量自定义chart时,需建立和维护自己的Helm仓库,这涉及额外的基础设施和管理开销。


Helm的替代品

当涉及到Kubernetes的CI/CD时,如何让工具很好地处理所有场景是一个挑战。Helm试图简化应用程序部署,但有一些限制。如果Helm不能满足你的需求,你可能想要探索几种替代方案。

在所有Helm的替代品中,Kustomize 是最受欢迎的。Kustomize是一种无模板的定制应用程序配置和管理Kubernetes工作负载的方法。在一些实例中,使用Helm的模板可能会很复杂。这就是Kustomize来拯救你的时候。开发人员倾向于同时使用Helm和Kustomize,这取决于他们的需求。至于这两个中哪一个更好,还没有定论。


总结

此外,在开始部署容器时还要记住一件事——不要忽略全局。

DevOps用户需要根据自己的需求灵活地选择合适的工具。但是确保你了解这些工具的局限性也是很重要的,这样你的项目才不会被拖延或延迟。

在打包应用程序时,Helm绝对是一个流行的工具,它也是容器管理平台(如Nirmata)最广泛支持的工具。

编者注:新闻取自各大新闻媒体,新闻内容并不代表本网立场!文字和图片来自网络,版权归原作者所有。如有侵权,请速联系小编,立即删除。

411
全部评论 (0)
展开快速发表评论
二维码 | 渥太华微生活
<广而告之>
缩略图

看新闻?

渥太华微生活

- 新闻|活动|优惠|房屋|汽车|留学|移民|工作|理财|旅游|美食|健康|宠物|种植|文化|时尚|科技|历史|体育|黄页


缩略图

刷视频?

传奇视频

- 电影 | 电视剧 | 综艺 | 小品 | 动漫 | 戏曲 | 短视频


缩略图

听音频?

传奇音频

- 音乐 | 有声小说 | 评书 | 相声


缩略图

找乐趣?

传奇活动

- 渥太华 | 多伦多 | 温哥华 | 蒙特利尔 | 卡尔加里


缩略图

想省钱?

传奇打折

- Amazon打折专区 | Temu打折专区 | 打折资讯


缩略图

租房子?

传奇租房

- 渥太华 | 多伦多 | 温哥华 | 蒙特利尔 | 卡尔加里

科技专栏