Container ServiceACK在應用目錄管理功能中整合了Helm工具,並進行了功能擴充,支援官方Repository,讓您可以通過命令列或Container Service管理主控台兩種方式進行應用的快速部署。本文介紹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部署應用
在左側導覽列,選擇 。
在應用目錄頁簽,選擇一個Chart(本樣本選擇ack-wordpress-sample),單擊該Chart,進入Chart詳情頁面。
單擊右上方的一鍵部署,在建立面板中,選擇叢集和命名空間,然後單擊下一步。
在參數配置頁面,修改配置資訊,然後單擊確定。
本樣本使用雲端硬碟動態資料卷綁定一個PVC。具體操作,請參見使用雲端硬碟動態儲存裝置卷。
說明需要先建立一個雲端硬碟儲存卷(PV),並且儲存卷的容量不能小於PVC定義的數值。
在左側導覽列,選擇 。
在服務列表中,找到對應的服務,擷取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應用為例,介紹如何部署應用。
安裝配置kubectl和Helm CLI。
在本機電腦上安裝和配置kubectl。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
通過
kubectl cluster-info
命令,查看Kubernetes目的地組群的資訊。在本機電腦上安裝Helm。具體操作,請參見Install Helm。
通過Helm部署WordPress部落格網站。
執行以下命令,部署WordPress。
helm install --name wordpress-test stable/wordpress
說明Container ServiceACK支援使用雲端硬碟動態儲存裝置卷,需要先建立一個雲端硬碟儲存卷。具體操作,請參見使用雲端硬碟動態儲存裝置卷。
預期輸出:
NAME: wordpress-test LAST DEPLOYED: Mon Nov 20 19:01:55 2017 NAMESPACE: default STATUS: DEPLOYED ...
執行以下命令,查看WordPress的發布版本和Service。
helm list kubectl get svc
執行以下命令,查看WordPress相關的Pod,並等待其狀態變為Running。
kubectl get pod
執行以下命令,獲得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)
可選:執行以下命令,刪除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/
中探索。
相關文檔
如遇到helm不相容的問題,請將Helm V2升級遷移至Helm V3。
關於Helm發布的更多資訊,請參見基於Helm的發行管理。
如需替換到期或已移除的K8s API,請參見通過helm-mapkubeapis外掛程式原地升級apiVersion。