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