Helm 是Kubernetes 生态系统中的一个软件包管理工具,类似于类似于Ubuntu 中的apt、CentOS 中的yum 等。它可以被用于自动创建、打包、配置和部署应用程序和服务到Kubernetes 集群。
Kubernetes 为用户提供了自动部署、扩展和管理容器化应用程序的能力,然而用户部署在Kubernetes 集群上的应用可能会非常复杂,一个典型的应用(以SREWorks为例)通常会有一系列对象进行内部交互来使得程序正常运转。
首先我们需要Deployment 用于部署我们想要运行的pods,例如Mysql 数据库;StorageClass 用于动态分配存储卷;Persistent Volume(PV)用于储存数据库;Service 用于指定pod 的访问策略使得外部可以访问pod 的服务;Job 用于执行任务保证指定数量的pods 部署成功……
在Helm出现之前,每个对象都需要一个单独的yaml文件来配置,然后通过kubeclt apply 逐一创建这些对象。如果需要对其中的一些内容进行更改,必须找到对应的yaml 文件并在其中找到对应的属性;而如果想要升级其中的一些组件,也要仔细地编辑多个文件,防止错误和遗漏;当要删除这个应用程序时,也要手动删除其对应的所有组件……
Kubernetes 并不是从“应用程序”的层面来管理集群中的各个组件,它只是将用户提交上去的yaml 保存在集群中并各自运行,实际上它并不知道用户声明的各个对象,例如Job、Service、StorageClass、Deployment 等,是同一个应用程序下不同的组成成分。
当应用较为复杂的时候,要记住变量的位置并人工执行操作是一件冗余且复杂的事,并且会给多人协作开发应用增加难度。
在这样的基础上,Helm应运而生,为开发人员提供了模块化的应用管理工具,降低了Kubernetes 用户的工作量和工作复杂度。
以上内容摘自《SREWorks 云原生数智运维工程实践》电子书,点击https://developer.aliyun.com/ebook/download/7784可下载完整版。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。