云原生社区 > 容器服务 > 正文

Why Helm? - 每天5分钟玩转 Docker 容器技术(160)

简介: 本章我们将学习 Helm,Kubernetes 的包管理器。
+关注继续查看

本章我们将学习 Helm,Kubernetes 的包管理器。

每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。

本章我们将讨论为什么需要 Helm,它的架构和组件,以及如何使用 Helm。

Why Helm

Helm 到底解决了什么问题?为什么 Kubernetes 需要 Helm?

答案是:Kubernetes 能够很好地组织和编排容器,但它缺少一个更高层次的应用打包工具,而 Helm 就是来干这件事的。

先来看个例子。
比如对于一个 MySQL 服务, Kubernetes 需要部署下面这些对象:

  1. Service,让外界能够访问到 MySQL。

  2. Secret,定义 MySQL 的密码。

  3. PersistentVolumeClaim,为 MySQL 申请持久化存储空间。

  4. Deployment,部署 MySQL Pod,并使用上面的这些支持对象。

我们可以将上面这些配置保存到对象各自的文件中,或者集中写进一个配置文件,然后通过 kubectl apply -f 部署。

到目前为止,Kubernetes 对服务的部署支持得都挺好,如果应用只由一个或几个这样的服务组成,上面的部署方式完全足够了。

但是,如果我们开发的是微服务架构的应用,组成应用的服务可能多达十个甚至几十上百个,这种组织和管理应用的方式就不好使了:

  1. 很难管理、编辑和维护如此多的服务。每个服务都有若干配置,缺乏一个更高层次的工具将这些配置组织起来。

  2. 不容易将这些服务作为一个整体统一发布。部署人员需要首先理解应用都包含哪些服务,然后按照逻辑顺序依次执行 kubectl apply。即缺少一种工具来定义应用与服务,以及服务与服务之间的依赖关系。

  3. 不能高效地共享和重用服务。比如两个应用都要用到 MySQL 服务,但配置的参数不一样,这两个应用只能分别拷贝一套标准的 MySQL 配置文件,修改后通过 kubectl apply 部署。也就是说不支持参数化配置和多环境部署。

  4. 不支持应用级别的版本管理。虽然可以通过 kubectl rollout undo 进行回滚,但这只能针对单个 Deployment,不支持整个应用的回滚。

  5. 不支持对部署的应用状态进行验证。比如是否能通过预定义的账号访问 MySQL。虽然 Kubernetes 有健康检查,但那是针对单个容器,我们需要应用(服务)级别的健康检查。

Helm 能够解决上面这些问题,Helm 帮助 Kubernetes 成为微服务架构应用理想的部署平台。

下一节我们讨论 Helm 的架构。

书籍:

1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
容器技术-Docker的优点
当产品运行在内部的虚拟化平台中,如openstack,也就是KVM虚拟化,创建虚拟机,但是不断增加的云端应用,增加了对硬件资源的消耗,不断的创建虚拟机,消耗了大量的硬件资源。 那么如何高效的利用硬件资源实现云服务呢
55 0
为什么Docker 在创建容器时会通过文件系统的联合挂载技术来创建一个分层的文件系统?底层原理是什么?
为什么Docker 在创建容器时会通过文件系统的联合挂载技术来创建一个分层的文件系统?底层原理是什么?
56 0
Docker 的分层文件系统技术是干什么的?底层原理是什么?
Docker 的分层文件系统技术是干什么的?底层原理是什么?
55 0
Docker容器相关技术一共有哪些?底层原理是什么?
Docker容器相关技术一共有哪些?底层原理是什么?
65 0
《应用Docker进行持续交付:用技术改变交付路程》电子版地址
应用Docker进行持续交付:用技术改变交付路程
30 0
《云计算技术》实验-Docker部署
安装Docker(Linux) 部署一个简单的Python应用 部署c++应用
88 0
浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid
“世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的.....”,这是电影《卡萨布拉卡》中的一句著名独白,投射到现实生活中,与之类似的情况不胜枚举,这世界上有那么多的系统,系统中有那么多的浏览器,在只有一台测试机的前提下,难道我们只能排队一个一个地做兼容性测试吗?有没有效率更高的方法呢?为此我们提出一个更高效的解决方案:使用Docker+Selenium Grid。
126 0
《小团队web技术搭建》(八)Docker+持续部署
《小团队web技术搭建》(八)Docker+持续部署
133 0
【译文】Docker+Wasm技术预览
【译文】Docker+Wasm技术预览
124 0
技术:Docker基础知识(一)
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker官网:https://www.docker.com/
116 0
容器服务
+关注
国内唯一 Forrester 公共云容器平台领导者象限。
+关注
cloudman6
云计算深度实践者。《每天5分钟玩转OpenStack》《每天5分钟玩转Docker容器技术》作者。
文章
问答
视频
相关课程
更多
相关电子书
更多
Docker@Alibaba——超大规模Docker化的实战经验
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像