使用Helm简化应用部署
容器服务ACK在应用目录管理功能中集成了Helm工具,并进行了功能扩展,支持官方Repository,让您可以通过命令行或容器服务控制台界面两种方式进行应用的快速部署。本文介绍Helm的基本概念以及如何使用Helm部署应用。
索引
前提条件
已创建Kubernetes托管版集群。具体操作,请参见创建Kubernetes托管版集群。
创建集群时,Tiller将被自动部署到集群,并在所有的Master节点上自动安装Helm CLI以及配置指向阿里云的Chart存储库。
确认集群Kubernetes版本为1.8.4及以上。否则,请升级集群。具体操作,请参见升级ACK集群。
Helm介绍
在Kubernetes中,应用管理是需求最多、挑战最大的领域。Helm项目提供了一个统一软件打包方式,支持版本控制,降低Kubernetes应用分发和部署的复杂性。Helm是由Deis发起的一个开源工具,有助于简化部署和管理Kubernetes应用。Helm为Kubernetes的包管理工具,可以方便地发现、共享和使用Kubernetes构建的应用,基本概念如下。
类别 | 名称 | 说明 |
Helm概念 | Chart | 一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似Homebrew中的formula、APT的dpkg或者Yum的rpm文件。 |
Release | 在Kubernetes集群上运行的Chart的一个实例。在同一个集群上,一个Chart可以安装多次。每次安装都会创建一个新的Release。例如,如果一个MySQL Chart想在服务器上运行两个数据库,可以将这个Chart安装两次,并在每次安装中生成自己的Release以及Release名称。 | |
Helm组件(采用客户端/服务端架构) | Helm CLI | Helm客户端,可以在Kubernetes集群的Master节点或者本地执行。 |
Tiller | 服务器端组件,在Kubernetes集群上运行,并管理Kubernetes应用程序的生命周期。 | |
Repository | Chart存储库,Helm客户端通过HTTP协议来访问存储库中Chart的索引文件和压缩包。 |
通过控制台界面使用Helm部署应用
登录容器服务管理控制台。
在左侧导航栏,选择 。
在应用目录页签,选择一个Chart(本示例选择ack-wordpress-sample),单击该Chart,进入Chart详情页面。
单击右上角的一键部署,在创建面板中,选择集群和命名空间,然后单击下一步。
在参数配置页面,修改配置信息,然后单击确定。
在左侧导航栏,选择 。
在服务列表中,找到对应的服务,获取HTTP和HTTPS外部端点的地址,然后单击外部端点的访问地址,进入WordPress博客发布页面。
说明访问外部端点前,请确保安全组中已添加外部端点的端口。
通过命令行使用Helm部署应用
通过命令行部署应用时,您可以通过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。
在本地计算机上安装和配置kubectl。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
通过
kubectl cluster-info
命令,查看Kubernetes目标集群的信息。在本地计算机上安装Helm。具体操作,请参见Install Helm。
通过Helm部署WordPress博客网站。
执行以下命令,部署WordPress。
helm install --name wordpress-test stable/wordpress
说明容器服务ACK支持使用云盘动态存储卷,需要先创建一个云盘存储卷。具体操作,请参见使用云盘动态存储卷。
预期输出:
NAME: wordpress-test LAST DEPLOYED: Mon Nov 20 19:01:55 2017 NAMESPACE: default STATUS: DEPLOYED ...
执行以下命令,查看WordPress的发布版本和Service。
helm list kubectl get svc
执行以下命令,查看WordPress相关的Pod,并等待其状态变为Running。
kubectl get pod
执行以下命令,获得WordPress的访问地址。
echo http://$(kubectl get svc wordpress-test-wordpress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
通过以上URL,可在浏览器上看到WordPress站点。
根据Charts的说明,执行以下命令,获得WordPress站点的管理员用户名和密码。
echo Username: user echo Password: $(kubectl get secret --namespace default wordpress-test-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
可选:执行以下命令,删除WordPress应用。
helm delete --purge wordpress-test
使用第三方的Chart存储库
您不仅可以使用预置的阿里云的Chart存储库,若网络允许,也可以使用第三方的Chart存储库。
使用如下命令格式,添加第三方Chart存储库。关于Helm相关命令的更多说明,请参见Helm文档。
helm repo add 存储库名 存储库URL
helm repo update
参考信息
随着Helm的应用越发广泛,越来越多的软件提供商开始提供高质量的Chart。如您有其他Chart需求,可在https://kubeapps.com/
中探索。