helm 是用来解决什么问题的?我们先看一个使用场景:
我们要部署一个 mysql 服务,需要做以下几件事:
- 创建 service,让外部可以访问 mysql
- 创建 secret,定义密码
- 创建 persistentvolume,申请持久化空间
- 创建 deployment
需要这些对象的配置文件,通过 kubectl apply -f
部署。
这个过程虽然麻烦点,但完全能克服,没啥大问题。如果我们的应用只需要几个这样的服务,还是没什么问题的。
但如果我们的应用比较大,使用了微服务框架,那么服务的数量就很多了,还使用上面的方式的话会不会很头疼。
上面方式的缺点:
- 难管理,每个服务都有若干配置,缺乏更高层次的组织方式。
- 不容易将这些服务作为一个整体发布,部署人员需要理解都包含哪些服务、服务间的逻辑顺序,缺少依赖关系的管理。
- 不能高效的共享和重用。
- 没有应用级别的版本管理,现有的回滚是针对 deployment 的,不支持整个应用。
- 不支持应用状态的验证,kubernetes 的健康检查是针对单个容器的,我们需要应用级别的检查。
所以,helm 就是用来解决这些问题的,它是更高层次的应用打包工具。
网友评论