Helm 能將 Kubernetes 應用所需的多種資源(如工作負載、Service、Ingress)打包管理,簡化在 ACK 叢集中部署與升級應用的流程。
建立Helm應用
以通過控制台使用Helm部署Dify應用為例。確保ACK 叢集至少有 2 核 CPU 和 4 GB 記憶體 的可用資源。
為 Dify 建立其依賴的 CNFS 和 NAS 儲存類。
登入Container Service管理主控台,選擇叢集列表。在叢集列表頁面,單擊目的地組群名稱,然後選擇。
在儲存類頁面,單擊使用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則允許對儲存卷的目錄配額進行擴容。
部署Dify應用。
在叢集詳情頁面,選擇。在Helm頁面,單擊建立。
基本資料:在Chart中搜尋ack-dify,勾選搜尋結果。
參數配置:Chart版本選擇最新版。
訪問Dify應用。
為ack-dify服務開啟公網訪問功能。
公網訪問便於示範操作,如果在生產環境中部署,為了應用資料安全,建議開啟存取控制功能。
選擇,選擇命名空間為
dify-system。選擇Service名稱為ack-dify,單擊更新操作,配置開啟公網訪問完成後單擊確定。服務類型為負載平衡 (LoadBalancer)。
訪問方式為公網訪問。
虛擬交換器勾選專用網路中對應可用性區域的交換器。
訪問Dify應用。
配置完成後,將外部 IP 位址(External IP)輸入瀏覽器地址欄即可訪問Dify服務。
管理Helm應用
在控制台Helm應用列表頁面,可對目標應用執行更新、刪除等管理操作。
操作 | 說明 |
查看應用 | 單擊目標應用程式名稱或詳情,查看該應用的資源、YAML檔案、歷史版本等資訊。 |
更新應用 | 單擊更新,在更新發布面板中修改相關參數,然後單擊確定。 重要 更新將直接影響關聯應用的運行狀態,導致服務重啟或功能異常。建議在變更前充分評估影響範圍,並在業務低峰期執行操作。 |
刪除應用 | 單擊刪除,在刪除應用對話方塊中,選中清除發布記錄,然後單擊確定,刪除應用以及包含的Service、Deployment等資源。 本樣本刪除Dify應用時,不會自動同步刪除NAS資源,需手動刪除NAS檔案系統。 重要 如果刪除時未選中清除發布記錄,此時該應用會保留在發布列表中,後續部署同名應用時,會因命名衝突而失敗。 |
常見問題
如何使用Helm CLI部署第三方庫應用?
如果ACK提供的Chart無法滿足需求,可使用Helm命令列工具部署應用。
串連叢集。
雲端
在Workbench或CloudShell上使用kubectl串連叢集。
阿里雲提供瀏覽器命令列工具已預裝 Helm,無需額外配置。
本地
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
添加Chart倉庫。
將
<REPO_NAME>替換為倉庫別名,<REPO_URL>替換為倉庫地址。helm repo add <REPO_NAME> <REPO_URL>更新倉庫資訊。
helm repo update第三方庫部署應用。
將
<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。
解決方案
使用 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版本已映射成功。完成API版本映射後,即可正常刪除該應用。
helm uninstall <RELEASE_NAME> -n <NAMESPACE>預期輸出
release "***" uninstalled,表明Helm應用刪除成功。
相關文檔
為確保叢集安全並使用更完善的功能,建議將Helm V2升級遷移至Helm V3。
Container Registry企業版的Helm Chart功能支援推送和拉取Helm Chart。