文档

使用Helm简化应用部署

更新时间:

容器服务ACK在应用目录管理功能中集成了Helm工具,并进行了功能扩展,支持官方Repository,让您可以通过命令行或容器服务管理控制台两种方式进行应用的快速部署。本文介绍Helm的基本概念以及如何使用Helm部署应用。

前提条件

已创建Kubernetes托管版集群(版本不低于1.8.4)。具体操作,请参见创建Kubernetes托管版集群

创建集群时,Tiller将被自动部署到集群,并在所有的Master节点上自动安装Helm CLI以及配置指向阿里云的Chart存储库。

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部署应用

通过控制台使用Helm部署应用

  1. 登录容器服务管理控制台

  2. 在左侧导航栏,选择市场 > 应用市场

  3. 应用目录页签,选择一个Chart(本示例选择ack-wordpress-sample),单击该Chart,进入Chart详情页面。

  4. 单击右上角的一键部署,在创建面板中,选择集群和命名空间,然后单击下一步

  5. 参数配置页面,修改配置信息,然后单击确定

    本示例使用云盘动态数据卷绑定一个PVC。具体操作,请参见使用云盘动态存储卷

    说明

    需要先创建一个云盘存储卷(PV),并且存储卷的容量不能小于PVC定义的数值。

    chart.png

  6. 在左侧导航栏,选择网络 > 服务

  7. 在服务列表中,找到对应的服务,获取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应用为例,介绍如何部署应用。

  1. 安装配置kubectl和Helm CLI。

    1. 在本地计算机上安装和配置kubectl。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群

      通过kubectl cluster-info命令,查看Kubernetes目标集群的信息。

    2. 在本地计算机上安装Helm。具体操作,请参见Install Helm

  2. 通过Helm部署WordPress博客网站。

    1. 执行以下命令,部署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
      ...
    2. 执行以下命令,查看WordPress的发布版本和Service。

      helm list
      kubectl get svc
    3. 执行以下命令,查看WordPress相关的Pod,并等待其状态变为Running。

      kubectl get pod
    4. 执行以下命令,获得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)
    5. 可选:执行以下命令,删除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/中探索。

相关文档

  • 本页导读 (1)
文档反馈