本文档介绍Helm的基本概念和使用方式,演示如何在阿里云的Kubernetes集群上利用Helm来部署示例应用WordPress和Spark。
前提条件
- 通过Helm部署应用之前,利用阿里云容器服务来创建Kubernetes集群。具体操作,请参见创建Kubernetes托管版集群。
在Kubernetes集群创建的同时,Tiller将会被自动部署到集群之中,并且在所有的master节点上自动安装Helm CLI以及配置指向阿里云的Chart存储库。
- 查看您集群中Kubernetes的版本。
仅支持Kubernetes版本1.8.4及以上的集群。对于1.8.1版本的集群,您可以在集群列表中进行集群升级操作。
背景信息
在Kubernetes中,应用管理是需求最多、挑战最大的领域。Helm项目提供了一个统一软件打包方式,支持版本控制,简化Kubernetes应用分发与部署中的复杂性。阿里云容器服务在应用目录管理功能中集成了Helm工具,并进行了功能扩展,支持官方Repository,让您快速部署应用。您可以通过命令行或容器服务控制台界面两种方式进行部署。
Helm基本概念
Helm是由Deis发起的一个开源工具,有助于简化部署和管理Kubernetes应用。
Helm可以理解为Kubernetes的包管理工具,可以方便地发现、共享和使用Kubernetes构建的应用,它包含以下几个基本概念。
- Chart:一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似Homebrew中的formula、APT的dpkg或者Yum的rpm文件。
- Release:在Kubernetes集群上运行的Chart的一个实例。在同一个集群上,一个Chart可以安装很多次。每次安装都会创建一个新的release。例如一个MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个Chart安装两次。每次安装都会生成自己的Release,会有自己的Release名称。
- Repository:用于发布和存储Chart的存储库。
Helm组件
Helm采用客户端/服务器架构,由如下组件组成:
- Helm CLI是Helm客户端,可以在Kubernetes集群的master节点或者本地执行。
- Tiller是服务器端组件,在Kubernetes集群上运行,并管理Kubernetes应用程序的生命周期。
- Repository是Chart存储库,Helm客户端通过HTTP协议来访问存储库中Chart的索引文件和压缩包。
通过控制台界面部署应用
通过命令行部署应用
通过命令行部署应用时,您可以SSH登录Kubernetes集群(Helm CLI已自动安装并已配置Repository)进行操作,请参见通过SSH连接ACK专有版集群的Master节点。您也可以在本地安装配置kubectl和Helm CLI。
本示例以在本地安装配置kubectl和Helm CLI并部署WordPress和Spark应用为例进行说明。
使用第三方的Chart存储库
您除了可以使用预置的阿里云的Chart存储库,也可以使用第三方的Chart存储库(前提是网络是可达的)。使用如下命令格式添加第三方Chart存储库。
helm repo add存储库名 存储库URL
helm repo update
关于Helm相关命令的说明,您可以参见Helm文档。
参考信息
Helm催生了社区的发展壮大,越来越多的软件提供商,如Bitnami等公司,开始提供高质量的Charts。您可以在https://kubeapps.com/
中寻找和发现已有的Charts。