客座文章之前由Spruha Pandya在Nirmata博客上发表
https://nirmata.com/2020/06/04/why-do-devops-engineers-love-helm/
微服务架构的采用已经彻底改变了今天开发应用程序的方式。随着微服务架构取代了单体架构,容器取代了VM。然而,通过这种转换,应用程序部署不再是一项简单的任务。容器编排是一个新的挑战,Kubernetes解决了这个问题。就像任何新技术一样,容器和Kubernetes带来了新的复杂性。
在所有的挑战中,在Kubernetes上部署和管理应用程序已被证明是IT团队最困难的一个。但是,由于Kubernetes的巨大成功,有越来越多的工具集中在解决应用程序部署的复杂性上。这些工具中的大多数作为开源项目存在,由开发人员社区维护。Helm就是这样一个开源项目,自2016年以来,它成功地简化了Kubernetes用户的生活。
Helm是Deis(一家容器工具公司,现在是微软的一部分)和谷歌共同努力的结果。这是2016年发布的Kubernetes 1.4的一部分。Helm帮助IT团队通过Helm Chart管理Kubernetes应用程序。这些chart可以让团队定义、安装和升级最复杂的Kubernetes应用程序。
是什么让Helm如此受欢迎?
虽然在Kubernetes上管理应用程序的问题可能很复杂,但Helm本身使用起来相当简单。下面是一个典型的视图,说明在没有helm的情况下部署是如何发生的,以及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的好处:
即使有了这些好处,Helm3也不全是彩虹和阳光……
Helm的替代品
当涉及到Kubernetes的CI/CD时,如何让工具很好地处理所有场景是一个挑战。Helm试图简化应用程序部署,但有一些限制。如果Helm不能满足你的需求,你可能想要探索几种替代方案。
在所有Helm的替代品中,Kustomize是最受欢迎的。Kustomize是一种无模板的定制应用程序配置和管理Kubernetes工作负载的方法。在一些实例中,使用Helm的模板可能会很复杂。这就是Kustomize来拯救你的时候。开发人员倾向于同时使用Helm和Kustomize,这取决于他们的需求。至于这两个中哪一个更好,还没有定论。
总结
此外,在开始部署容器时还要记住一件事——不要忽略全局。DevOps用户需要根据自己的需求灵活地选择合适的工具。但是确保你了解这些工具的局限性也是很重要的,这样你的项目才不会被拖延或延迟。在打包应用程序时,Helm绝对是一个流行的工具,它也是容器管理平台(如Nirmata)最广泛支持的工具。
Kubernetes在应用程序生命周期的第0和第1阶段提供了许多优势。然而,大多数组织发现它缺乏关键的第2天功能,如可靠性、安全性和风险管理。下载第2天Kubernetes白皮书,了解这些挑战,以及如何最大化你的成功与Kubernetes。
https://info.nirmata.com/day-2-kubernetes