Helm 是什么?应用场景是什么?
Helm 是 Kubernetes 生态系统中的一个软件包管理工具,主要用来管理Charts,类似于CentOS中的YUM。下图是一个是简单的用k8s搭建的三层应用。
从上图可以看到,在进行 Kubernetes 软件部署时,我们面临下述几个问题:
- 如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件。
- 如何把一套相关的配置文件作为一个应用进行管理。
- 如何分发和重用 Kubernetes 的应用配置。
Helm工作原理
Helm(客户端)、Tiller(服务器)、Repository(Chart 软件仓库)、Chart(软件包)之间的关系。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
image.png如何应用helm
个人感觉应用的场景在于dev和ops之间,在cloud native圈中也是需要的。容器化和容器编排,我们编写了大量的deployment、service等yaml文件,定义了许许多多的依赖关系,那么如何有效地管理这些依赖/定义,就像我们的jar包,别人download下来,就可以直接扔到jvm使用。那么对于使用者来说,学习成本降低,对code的要求能力也相应的减少。
设想以下场景:
-
application依赖的中间件比较多,tomcat、db server、rabbitmq等。由于我们已经将相应的服务层容器化,那么在集群里,针对应用需要的服务,可以按需enable对应的server。\
helm install local/mychart --name testhelm --set="tomcat.enabled=true,rabbitmq.enabled=true"
-
服务启动之间有强依赖关系,比如我的backend service必须要在mysql启动后才能run起来,不然会报错。那么我们这种关系可以定义在helm中的requirements.yaml中。当然个人感觉可以针对不同的服务用helm编不同的chart,也可以在一个chart中定义好他们之间的关系(类似于docker-compose那种)。
-
DevOps,开发和ops都可以应用同样的chart,按需起对应的各种服务,更加灵活。chart还支持upgrade,rollback。
-
替换vagrant,不依赖vritualbox。
怎样编写helm template
可以参考以下这个链接:编写helm template
网友评论