使用Helm简化应用部署

更新时间: 2024-01-16 18:17:36

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

前提条件

  • 已创建Kubernetes托管版集群。具体操作,请参见创建ACS集群

    创建集群时,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部署应用

  1. 登录容器计算服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  3. 在集群管理页左侧导航栏,选择应用 > Helm

  4. Helm页面,单击左上角的创建

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

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

    说明

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

    chart.png

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

  7. 在服务列表中,找到对应的服务,获取HTTP和HTTPS外部端点的地址,然后单击外部端点的访问地址,进入WordPress博客发布页面。

    说明

    访问外部端点前,请确保安全组中已添加外部端点的端口。

通过命令行使用Helm部署应用

通过命令行部署应用时,您可以在本地安装配置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
      说明

      容器计算服务ACS支持使用容器盘动态存储卷,需要先创建一个云盘存储卷。具体操作,请参见使用云盘动态存储卷

      预期输出:

      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/中探索。

阿里云首页 容器计算服务 相关技术圈