本文档介绍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的索引文件和压缩包。
通过控制台界面部署应用
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,选择 。
- 在应用目录页签,选择一个Chart(本示例选择ack-wordpress-sample),单击该Chart,进入Chart详情页面。
- 单击右上角的一键部署,在创建面板中,选择集群和命名空间,然后单击下一步。
- 在参数配置页面,对配置进行修改,然后单击确定。
- 在集群管理页左侧导航栏中,选择 。
- 在服务列表中,找到对应的服务,获取HTTP和HTTPS外部端点的地址,然后单击外部端点的访问地址,进入WordPress博客发布页面。
说明 访问外部端点前,请确保您已在安全组中添加外部端点的端口。
通过命令行部署应用
通过命令行部署应用时,您可以通过SSH登录Kubernetes集群。具体操作,请参见通过SSH连接ACK专有版集群的Master节点。您也可以在本地安装配置kubectl和Helm CLI,Helm CLI将自动安装并已配置Repository,Repository安装命令如下。
helm repo add aliyunhub https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
本示例以在本地安装配置kubectl和Helm CLI并部署WordPress和Spark应用为例进行介绍。
- 安装配置kubectl和Helm CLI。
- 部署WordPress。
下面我们将利用Helm,来部署一个WordPress博客网站。
使用第三方的Chart存储库
您除了可以使用预置的阿里云的Chart存储库,也可以使用第三方的Chart存储库(前提是网络是可达的)。使用如下命令格式添加第三方Chart存储库。
helm repo add 存储库名 存储库URL
helm repo update
关于Helm相关命令的说明,您可以参见Helm文档。
参考信息
Helm催生了社区的发展壮大,越来越多的软件提供商,如Bitnami等公司,开始提供高质量的Charts。您可以在https://kubeapps.com/
中寻找和发现已有的Charts。