全部產品
Search
文件中心

Container Service for Kubernetes:使用Helm簡化應用部署

更新時間:Nov 06, 2025

Helm 能將 Kubernetes 應用所需的多種資源(如工作負載、Service、Ingress)打包管理,簡化在 ACK 叢集中部署與升級應用的流程。

建立Helm應用

以通過控制台使用Helm部署Dify應用為例。確保ACK 叢集至少有 2 核 CPU 和 4 GB 記憶體 的可用資源。
  1. 為 Dify 建立其依賴的 CNFS 和 NAS 儲存類。

    1. 登入Container Service管理主控台,選擇叢集列表。在叢集列表頁面,單擊目的地組群名稱,然後選擇儲存 > 儲存類

    2. 儲存類頁面,單擊使用YAML建立資源,將以下YAML內容複寫到模板內,然後單擊建立

      如果系統提示已存在同名資源,說明叢集已自動建立CNFS及NAS儲存類,可直接進行部署應用操作。 建立NAS儲存會產生費用,詳情請參見NAS計費
      apiVersion: storage.alibabacloud.com/v1beta1
      kind: ContainerNetworkFileSystem
      metadata:
        name: cnfs-nas-filesystem
      spec:
        description: "cnfs"
        type: nas
        reclaimPolicy: Retain  # 僅支援Retain,刪除CNFS時不會刪除後端的NAS執行個體。
      ---
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: alibabacloud-cnfs-nas
      mountOptions:
        - nolock,tcp,noresvport
        - vers=3
      parameters:
        volumeAs: subpath # 每個PVC都會在NAS下建立一個獨立的子目錄。
        containerNetworkFileSystem: cnfs-nas-filesystem # 關聯到上面定義的CNFS執行個體。
        path: "/"
      provisioner: nasplugin.csi.alibabacloud.com
      reclaimPolicy: Retain
      allowVolumeExpansion: true # 可選:指定為true則允許對儲存卷的目錄配額進行擴容。
  2. 部署Dify應用。

    在叢集詳情頁面,選擇應用 > Helm。在Helm頁面,單擊建立

    • 基本資料:在Chart中搜尋ack-dify,勾選搜尋結果。

    • 參數配置:Chart版本選擇最新版。

  3. 訪問Dify應用。

    1. 為ack-dify服務開啟公網訪問功能。

      公網訪問便於示範操作,如果在生產環境中部署,為了應用資料安全,建議開啟存取控制功能。

      選擇網路 > 服務,選擇命名空間為dify-system選擇Service名稱為ack-dify,單擊更新操作,配置開啟公網訪問完成後單擊確定

      • 服務類型為負載平衡 (LoadBalancer)。

      • 訪問方式為公網訪問。

      • 虛擬交換器勾選專用網路中對應可用性區域的交換器。

    2. 訪問Dify應用。

      配置完成後,將外部 IP 位址(External IP)輸入瀏覽器地址欄即可訪問Dify服務。

管理Helm應用

在控制台Helm應用列表頁面,可對目標應用執行更新、刪除等管理操作。

操作

說明

查看應用

單擊目標應用程式名稱或詳情,查看該應用的資源、YAML檔案、歷史版本等資訊。

更新應用

單擊更新,在更新發布面板中修改相關參數,然後單擊確定

重要

更新將直接影響關聯應用的運行狀態,導致服務重啟或功能異常。建議在變更前充分評估影響範圍,並在業務低峰期執行操作。

刪除應用

單擊刪除,在刪除應用對話方塊中,選中清除發布記錄,然後單擊確定,刪除應用以及包含的Service、Deployment等資源。

本樣本刪除Dify應用時,不會自動同步刪除NAS資源,需手動刪除NAS檔案系統
重要

如果刪除時未選中清除發布記錄,此時該應用會保留在發布列表中,後續部署同名應用時,會因命名衝突而失敗。

常見問題

如何使用Helm CLI部署第三方庫應用?

如果ACK提供的Chart無法滿足需求,可使用Helm命令列工具部署應用。
  1. 串連叢集。

    雲端

    在Workbench或CloudShell上使用kubectl串連叢集

    阿里雲提供瀏覽器命令列工具已預裝 Helm,無需額外配置。

    本地

    1. 擷取叢集KubeConfig並通過kubectl工具串連叢集

    2. 安裝Helm CLI

      curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  2. 添加Chart倉庫。

    將 <REPO_NAME> 替換為倉庫別名,<REPO_URL> 替換為倉庫地址。
    helm repo add <REPO_NAME> <REPO_URL>
  3. 更新倉庫資訊。

    helm repo update
  4. 第三方庫部署應用。

    將 <APP_NAME> 替換為應用執行個體名,<CHART_NAME> 替換為要安裝的 Chart 名稱。
    helm install <APP_NAME> <REPO_NAME>/<CHART_NAME>

Helm更多命令請參見Helm 官方文檔

為什麼Helm應用無法刪除?

問題現象

  • 在控制台刪除Helm應用時,應用長時間停留在“卸載”狀態。

  • 通過Helm CLI刪除應用時,命令列返回以下錯誤:

    no matches for kind "***" in version "***"
    ensure CRDs are installed first

問題原因

該問題通常發生在叢集升級後舊版本API被廢棄,若Helm應用中包含使用已廢棄API的資源,刪除時會因API版本不存在而失敗。

Kubernetes不同版本的廢棄API列表,請參見Deprecated API Migration Guide

解決方案

  1. 使用 Helm 官方helm-mapkubeapis外掛程式將Release中已廢棄的API版本映射到新版支援的API版本,然後重新刪除。

    <RELEASE_NAME><NAMESPACE> 替換為Helm應用程式名稱及所在的命名空間。
    helm plugin install https://github.com/helm/helm-mapkubeapis
    helm mapkubeapis <RELEASE_NAME> -n <NAMESPACE> 

    預期輸出...completed successfully說明API版本已映射成功。

  2. 完成API版本映射後,即可正常刪除該應用。

    helm uninstall <RELEASE_NAME> -n <NAMESPACE>

    預期輸出release "***" uninstalled,表明Helm應用刪除成功。

相關文檔