使用Helm简化应用部署

Helm简化了应用程序的定义、安装和升级,使得Kubernetes集群的应用管理更为高效且便捷。容器计算服务 ACS(Container Compute Service)在应用目录管理功能中集成了Helm工具,并进行了功能扩展,提供了Spark、Dify等常见的第三方应用。

Helm介绍

Helm是一个用于在Kubernetes集群中进行应用管理的开源工具,它提供了统一的应用打包方式,同时支持版本控制,降低了应用分发和部署的复杂性。您可参照下方的表格,了解Helm的基本概念,更多信息请参见官方文档

Helm概念

说明

Chart

一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似Homebrew中的formula、APT的dpkg或者Yum的rpm文件。

Release

在Kubernetes集群上运行的Chart的一个实例。在同一个集群上,一个Chart可以安装多次。每次安装都会创建一个新的Release。例如,如果一个MySQL Chart想在服务器上运行两个数据库,可以将此Chart安装两次,并在每次安装中生成自己的Release以及Release名称。

Repository

Chart存储库,Helm客户端通过HTTP协议来访问存储库中Chart的索引文件和压缩包,下文简称Repo。

Helm CLI

Helm命令行工具,Helm CLI的安装方式请参见Installing Helm

说明

通过ACS控制台使用CoudShell以及WorkBench连接集群时,机器已预装Helm CLI,您无需手动进行安装。

前提条件

通过ACS Repo部署应用

容器计算服务ACS提供了一个Repo,其中包含了一些例如Spark、Dify等常见的应用,您可通过控制台或Helm CLI使用ACS提供的Repo。

使用控制台界面

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

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

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

  4. Helm页面,单击创建。参考如下信息完成基础信息配置。

    参数

    说明

    示例值

    应用名

    Release在集群内的名称。

    demo-app

    命名空间

    Release部署的命名空间。

    default

    来源

    Chart的来源:应用目录ACR EE

    应用目录

    Chart

    安装应用所使用的Chart。

    ack-dify

  5. 单击面板左下方的下一步,然后按需选择Chart 版本。调整Chart内容后,单击面板下方的确定

说明

Release安装完成后,您可以通过控制台管理已安装的应用,具体操作请参见使用Helm管理ACS应用

使用Helm CLI

  1. 将ACS Repo以aliyunhub为名称添加到Helm的Repo列表中。

    helm repo add aliyunhub https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/

    预期输出:

    "aliyunhub" has been added to your repositories
  2. 更新aliyunhub信息。

    helm repo update aliyunhub

    预期输出:

    Hang tight while we grab the latest from your chart repositories...
    ...Successfully got an update from the "aliyunhub" chart repository
    Update Complete. ⎈Happy Helming!⎈
  3. 查看repo中的Chart。

    helm search repo aliyunhub

    预期输出:

    NAME                                                    CHART VERSION   APP VERSION             DESCRIPTION                                       
    aliyunhub/ack-acr-acceleration-p2p                      0.3.6           0.3.6                   Speed Up Container Startup on ACK                 
    aliyunhub/ack-acr-acceleration-suite                    0.2.8           0.2.8                   Speed Up Container Startup on ACK                 
    aliyunhub/ack-advanced-audit                            0.5.0           0.5.0                   Kubernetes advanced audit                         
    aliyunhub/ack-advanced-horizontal-pod-autoscaler        0.1.0           1.0                     A Helm chart for Kubernetes                       
    aliyunhub/ack-aegis-installer                           0.1.1                                   Install Aegis in Alibaba Cloud Kubernetes cluster.
    aliyunhub/ack-agones                                    1.23.0          1.23.0                  a library for hosting, running and scaling dedi...
    aliyunhub/ack-ags-wdl                                   1.1.0           1.16.0                  A Helm chart for AGS to support WDL language.     
    aliyunhub/ack-ahas-pilot                                1.17.2          1.17.2                  A cloud service that aims to improve the high a...
    aliyunhub/ack-ahas-sentinel-pilot                       0.3.0           0.3.0                   AHAS Sentinel Pilot - Webhook Admission Controller
    aliyunhub/ack-ahas-springcloud-gateway                  0.1.1           0.1.1                   Spring Cloud Gateway with AHAS Sentinel integra...
    aliyunhub/ack-ai-dashboard                              1.0.15          1.0.0                   ai-dashboard for Kube-AI                          
    aliyunhub/ack-ai-dev-console                            1.2.1           1.2.1                   ack-ai-dev-console of KubeAI                      
    aliyunhub/ack-ai-installer                              1.9.15          1.9.15                  a toolkit for scheduling computing resources in...
    aliyunhub/ack-ai-pipeline                               1.0.4           1.0.4                   ack-ai-pipeline of KubeAI                         
    aliyunhub/ack-alibaba-cloud-metrics-adapter             1.3.4           0.1.5                   An implementation of the Kubernetes Custom Metr...
    aliyunhub/ack-amd-device-plugin                         1.0.0           1.0.0                   A Helm chart for deploying ack-amd-device-plugin  
    aliyunhub/ack-amd-smi-exporter                          1.0.0           1.0.0                   A Helm chart for deploying ack-amd-smi-exporter   
    aliyunhub/ack-application-acceleration                  1.1.0           1.1.0                   Reduce application startup time on ACK            
    aliyunhub/ack-arena                                     0.9.16          0.9.16                  Running Deep Learning Containers on ACK           
    aliyunhub/ack-arena-exporter                            0.5.0           0.5.0                   A Helm chart for deploying arena-exporter         
    aliyunhub/ack-arms-cmonitor                             4.1.2           4.1.2                   ARMS Container Monitor                            
    aliyunhub/ack-arms-pilot                                1.52.4          1.52.4                  ARMS Pilot - deprecated                           
    aliyunhub/ack-arms-prometheus                           1.1.25          4.2.0                   ARMS Prometheus Operator                          
    aliyunhub/ack-arms-vector                               1.0.2           1.0.0                   ARMS Prometheus Vector                            
    aliyunhub/ack-autoscaling-placeholder                   1.1.0           1.1                     Installs the a deployment that overprovisions t...
    aliyunhub/ack-blazing-dns                               2.0.0           2.0.0                   BlazingDNS speeds up DNS.                         
    aliyunhub/ack-celeborn                                  0.1.0                                   Apache Celeborn is an intermediate data service...
    aliyunhub/ack-cgpu                                      1.5.2           1.5.2                   A GPU sharing and isolation solution on Kuberne...
    aliyunhub/ack-coredns-dnstap-analyser                   0.1.0           v0.4.0.0                A dnstap receiver and analyser for CoreDNS dnst...
    aliyunhub/ack-cost-exporter                             1.0.17          0.1                     export cost metrics of cloud resources            
    aliyunhub/ack-descheduler                               0.27.1          0.27.1                  ACK descheduler for Kubernetes is used to rebal...
    aliyunhub/ack-dify                                      0.1.7           0.8.3                   Helm chart for deploying dify resources.          
    aliyunhub/ack-edge-acr-acceleration-p2p                 0.2.2           0.2.2                   Speed Up Container Startup on ACK                 
    aliyunhub/ack-edge-arms-prometheus                      0.1.5           1.0.5                   ARMS Prometheus Operator                          
    aliyunhub/ack-edge-nas-csiplugin                        1.1.0           v1                      this chart provides nas csi driver for ack@edge.  
    aliyunhub/ack-edge-node-problem-detector                1.2.0           0.8.0                   this chart  aims to make various node problems ...
    ...
  4. 以Spark 3.0为示例进行部署。

    重要

    下方的命令仅为示例,在您实际部署时,可能需要考虑地域等因素并调整内容。

    helm install spark aliyunhub/ack-spark-operator3.0 \
        --namespace spark-operator \
        --create-namespace \
        --set image.repository=registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/spark-operator

    预期输出:

    NAME: spark
    LAST DEPLOYED: * * ****** 2024
    NAMESPACE: spark-operator
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None

通过Helm CLI使用第三方库部署应用

如果ACS提供的Chart无法满足您的需求,您可参照以下示例,使用第三方库部署应用。

helm repo add <REPO_NAME> <REPO_URL> # 添加Chart存储库,REPO_NAME替换为Chart存储库的名称,REPO_URL替换为存储库的地址
helm repo update # 更新存储库信息
helm install <APP_NAME> <REPO_NAME>/<CHART_NAME> # 安装应用,APP_NAME替换为一个应用的名称,CHART_NAME替换为Chart的名称

相关文档