部落格
Kubernetes叢集

Rancher:在 K8S 應用商店發布您的應用

Rancher: Publish Your own App in K8S App Store

Rancher 以其管理 Kubernetes 叢集的能力而聞名,無論是在公共平台(如 GKE、EKS、AKS)上,還是 Rancher 提供的 RKE。除了基本的專案概念外,Rancher 還提供了基於角色的存取控制、監控和日誌管理等功能,這些功能可幫助對每個叢集進行具體的管理任務。進一步發展,Rancher 還提供了一個像應用商店一樣的空間——Apps,這裡可以通過管理目錄設置將現成的 K8S 應用添加進來。

Rancher 01

圖片來源:Bigstack CubeCOS

在這裡的操作仍然很簡單,我們只需要尋找一個公開的存儲庫,將應用打包並能夠由我們的叢集使用。將其添加到目錄 URL 後,我們將能在 Apps -> Launch 頁面中找到發布的應用。在這裡,我們可以看到許多日常使用中很方便的熱門 K8S 應用。

Rancher 02

圖片來源:Bigstack CubeCOS

目前為止,這些步驟都很好,但這並不是故事的結尾,因為那些擁抱開源專案(如 Rancher、K8S、Docker 等)的人,最終也會尋求定制的應用,這些應用可以 100% 自主託管和管理。

如何將自己的應用發佈到自託管的 Rancher 系統中?

在 Rancher 應用中,包含了若干檔案,例如描述、圖標圖片、yaml 檔案、配置等,這些檔案共同詳細地定義了應用的部署方式。這個應用包的結構需要符合 Kubernetes 可理解的格式。這樣的包稱為 chart,而 chart 可以被 Kubernetes 的包管理工具 Helm 使用。應用在啟動之前需要存在某個位置,我們可以通過在應用目錄中添加 URL 來訪問。這個位置稱為 chart 存儲庫,它是一個 HTTP 伺服器,具有一定的目錄/檔案結構,這樣 Rancher 用戶端可以查詢 index.html 中的內容並下載對應的 charts。舉例來說,在我們的 Rancher K8S 叢集中運行一個流行的 ChartMuseum 存儲庫。

$ helm repo add chartmuseum https://chartmuseum.github.io/charts
$ helm fetch chartmuseum/chartmuseum --version 3.6.2
$ helm --kubeconfig $KUBECONFIG upgrade --install chartmuseum chartmuseum-*.tgz -n chartmuseum --create-namespace --wait --wait-for-jobs -f chartmuseum-values.yaml
$ helm --kubeconfig $KUBECONFIG upgrade --install chartmuseum chartmuseum-*.tgz -n chartmuseum --create-namespace --wait --wait-for-jobs -f chartmuseum-values.yaml

有了這些,我們便成功運行了 chartmuseum 存儲庫 Pod。根據私有 IP 和端口,我們可以添加 URL,儘管目前還沒有任何 charts。創建自己的 chart 後,我們可以將其推送到空的 chartmuseum 存儲庫。

$ curl --data-binary @${CM_CHART_FILE} ${URL}/api/charts

刷新應用類別後,我們的自製應用就會在 Rancher K8S 應用商店中成功顯示出來。

Rancher 03

圖片來源:Bigstack CubeCOS