KubeGems: 一款超強(qiáng)大面向云原生的通用開源 PaaS 管理平臺,支持 Argo CD、Istio 等 30+ 開源服務(wù)
經(jīng)過近一年的持續(xù)迭代,當(dāng)前 KubeGems 的核心功能已經(jīng)初步具備多云多租戶場景下的統(tǒng)一管理。并通過插件化的方式,在用戶界面中靈活控制包括監(jiān)控系統(tǒng)、日志系統(tǒng)、微服務(wù)治理等眾多插件的啟用和關(guān)閉。
作為一個面向云原生的通用型云平臺,KubeGems 從立項開始就把支持多集群、多租戶場景下的資源隔離作為其主要實現(xiàn)設(shè)計目標(biāo)。用戶可以對接入平臺的 Kubernetes 集群做 租戶級 的自定義資源規(guī)劃。除此之外,我們提供了比原生 Dashboard 功能更加豐富且人性化操作的 UI 界面,讓用戶/企業(yè)根據(jù)自身場景規(guī)劃平臺元數(shù)據(jù),而不用擔(dān)心自己的業(yè)務(wù)和數(shù)據(jù)出現(xiàn)錯亂。
同時 KubeGems 也提供過了眾多豐富的功能模塊來為個人或企業(yè)用戶帶來更好的使用體驗,例如 訪問控制、資源規(guī)劃、網(wǎng)絡(luò)隔離、租戶網(wǎng)關(guān)、存儲卷、可觀察性、用戶審計、證書管理、金絲雀發(fā)布、istio治理 等功能。
介紹
KubeGems 廣泛的使用來自包括 云原生基金會(CNCF) 和 Istio社區(qū) 開源的產(chǎn)品,并在此基礎(chǔ)上做了二次開發(fā)和適配。針對產(chǎn)品內(nèi)部比較通用的需求,KubeGems也會及時將代碼以PR的方式回饋社區(qū),以保證產(chǎn)品能夠與社區(qū)進(jìn)行同步更新。
為更好地降低用戶對云原生生態(tài)內(nèi)的熟悉門檻,KubeGems 提供了專門的安裝控制器對集成的三方插件進(jìn)行集中管理,并以此保證我們的產(chǎn)品能始終如一的部署在不同方式構(gòu)建的 Kubernetes 集群之上,使用戶能更完整能夠體驗到 KubeGems 的功能。
在 v1.20.0 版本中,KubeGems 內(nèi)部集成了近 30 來個服務(wù),您可以自由選擇是否啟用它們。
安裝
KubeGems Installer Operator 是一個通過 Operator SDK 構(gòu)建的 Ansible Kubernetes 控制器。通過 CRD 中的定義的字段對 Ansible 進(jìn)行變量傳遞。Installer Operator 的運行需要具備集群管理員的 RBAC 權(quán)限,所以在部署前需要聯(lián)系您的集群管理員,以保證有足夠的授權(quán)執(zhí)行以下操作。
首先使用如下所示命令安裝 KubeGems Installer 控制器:
KUBEGEMS_VERSION=v1.20.0-beta.1
kubectl apply -n kubegems-installer -f \
https://github.com/kubegems/installer-operator/releases/download/${KUBEGEMS_VERSION}/centrol.yaml
CRD 與控制器部署完成后就可以開始創(chuàng)建 installer 對象進(jìn)行安裝:
kubectl apply -f https://github.com/kubegems/installer-operator/releases/download/${KUBEGEMS_VERSION}/centrol.installer.yaml
KubeGems 部署完成后,正常會有如下所示的 Pod 列表:
當(dāng)部署成功后,可以在 gemcloud-gateway-system 命名空間下找到一個名叫 deftault-gateway 的網(wǎng)關(guān),它由 KubeGems 自動創(chuàng)建。
kubectl get pod -n gemcloud-gateway-system
NAME READY STATUS RESTARTS AGE
default-gateway-5bcb8bc59c-2fcq4 1/1 Running 0 7d7h
nginx-ingress-operator-controller-manager-56bcddd997-kbjqw 2/2 Running 0 7d7h
kubectl get svc -n gemcloud-gateway-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default-gateway NodePort 10.102.206.7 <none> 80:32717/TCP,443:30557/TCP 7d7h
nginx-ingress-operator-controller-manager-metrics-service ClusterIP 10.96.47.121 <none> 8443/TCP 7d8h
nginx-ingress-operator-metrics ClusterIP 10.111.159.25 <none> 9113/TCP 7d8h
可以再創(chuàng)建一條 ingress 規(guī)則將 kubegems dashboard 服務(wù)暴露出來,如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gems-dashboard
namespace: gemcloud-system
annotations:
nginx.org/proxy-buffering: "false"
nginx.org/websocket-services: gems-dashboard
spec:
rules:
- host: console.kubegems.io
http:
paths:
- backend:
serviceName: gems-dashboard
servicePort: 8000
path: /
pathType: ImplementationSpecific
此時,您需要將域名 console.kubegems.io 解析到 Kubernetes 集群內(nèi)任意節(jié)點后,即可通過 http://console.kubegems.io:<NodePort> 訪問頁面。
使用
導(dǎo)入集群
- 使用 admin 賬號登錄 KubeGems 管理后臺,點擊右下角 【工具箱】 圖標(biāo),進(jìn)入 【系統(tǒng)管理】
- 點擊 【創(chuàng)建集群】,將集群的 kubeconfig 文件粘貼至文本框。
輸入集群名稱和集群容器運行時類型,勾選上 控制集群。
信息
控制集群不會注入 gem-insatller-manager 服務(wù)。
- 集群導(dǎo)入成功,并且狀態(tài)正常后,點擊 【詳情】進(jìn)入集群信息管理頁面
集群詳情頁包含了集群的基本狀態(tài)、證書信息、監(jiān)控指標(biāo)、物理資源、資源類型以及使用統(tǒng)計等信息。
租戶管理
- 使用 admin 賬號登錄 KubeGems 管理后臺,點擊左上角【集群資源】卡片,進(jìn)入【平臺管理】圖片
- 點擊租戶列表右上角的 創(chuàng)建租戶 按鈕,創(chuàng)建一個名為 demo 的租戶
- 點擊 demo,進(jìn)入租戶詳情頁,里面可以管理租戶成員以及集群的資源配額管理
點擊 添加集群資源,選擇cluster-demo集群,為 demo 租戶分配 8Core 16G 內(nèi)存和 100G 硬盤
租戶空間
- 點擊 KubeGems 頂部欄中的【工作臺】進(jìn)入租戶空間,并點擊【用戶頭像】可以自由切換租戶空間圖片
- 點擊 【創(chuàng)建項目】 為租戶創(chuàng)建一個名為 demo 項目空間,并選擇可以按照角色添加成員至該項目空間
- 進(jìn)入 demo 項目空間,點擊右上角的【創(chuàng)建環(huán)境】創(chuàng)建一個名為 demo-env 的環(huán)境空間
注意:環(huán)境空間的刪除策略為 僅刪除關(guān)聯(lián) 和 刪除整個命名空間,它們之間的主要區(qū)別控制刪除環(huán)境時,控制器的行為。
創(chuàng)建工作負(fù)載
- 創(chuàng)建 Deployment
- 進(jìn)入環(huán)境空間,點擊左部側(cè)邊欄,選擇【運行時】 - 【工作負(fù)載】,進(jìn)入工作負(fù)載管理頁面
- 點擊右上角 【創(chuàng)建工作負(fù)載】,根據(jù)頁面引導(dǎo)創(chuàng)建 deployment 資源
當(dāng) deployment 資源創(chuàng)建成功后可以【工作負(fù)載】和【容器組】頁面內(nèi)查看創(chuàng)建的容器資源信息。您也可以點擊相關(guān)資源進(jìn)入詳情頁瀏覽資源細(xì)節(jié)。
詳情頁提供的資源包含不限于:
- 工作負(fù)載基本信息
- 元數(shù)據(jù)
- 容器狀態(tài)
- 事件
- 監(jiān)控
- 創(chuàng)建 Service
- 進(jìn)入環(huán)境空間,點擊左部側(cè)邊欄,選擇【運行時】 - 【服務(wù)】,進(jìn)入服務(wù)管理頁面,根據(jù)頁面引導(dǎo)創(chuàng)建 Serivce
- 創(chuàng)建 Ingress
- 進(jìn)入環(huán)境空間,點擊左部側(cè)邊欄,選擇【運行時】 - 【路由】,進(jìn)入服務(wù)路由管理界面,根據(jù)頁面引導(dǎo)創(chuàng)建 Ingress
- 創(chuàng)建完成后點擊 demo-http ,進(jìn)入 ingress 詳情頁,在路由【路由規(guī)則】處,點擊【訪問】可以直接訪問服務(wù) Web 頁面