KubeSphere 3.3.0 發(fā)布:全面擁抱 GitOps

2022 年 6 月 27 日,KubeSphere 開源社區(qū)激動地向大家宣布,KubeSphere 3.3.0 正式發(fā)布!
CNCF 發(fā)布的 2021 年度調(diào)查報告指出,容器和 K8s 的事實地位已經(jīng)趨于穩(wěn)固,并慢慢退居“幕后”,類似于無處不在的 Linux,人們甚至都感覺不到它的存在。這要得益于眾多致力于降低用戶使用門檻的 K8s 管理平臺,KubeSphere 便是這其中的佼佼者,它幫助用戶屏蔽了底層 K8s 集群的復(fù)雜性和差異性,提供了可插拔的開放式架構(gòu),無縫對接第三方應(yīng)用,極大地降低了企業(yè)用戶的使用門檻。
2021 年 KubeSphere 先后推出了 ??v3.1 和 ??v3.2 兩個大版本,帶來了 “邊緣計算”、“計量計費”、“GPU 資源調(diào)度管理” 等眾多令人期待的功能,將 K8s 從云端擴展至邊緣,并進(jìn)一步增強了在云原生 AI 場景的使用體驗。
今天,KubeSphere 3.3.0 帶來了更多令人期待的功能,新增了基于 GitOps 的持續(xù)部署方案,進(jìn)一步優(yōu)化了 DevOps 的使用體驗。同時還增強了 “多集群管理、多租戶管理、可觀測性、應(yīng)用商店、微服務(wù)治理、邊緣計算、存儲” 等特性,更進(jìn)一步完善交互設(shè)計,并全面提升了用戶體驗。
并且,v3.3.0 得到了來自青云科技之外的更多企業(yè)與用戶的貢獻(xiàn)和參與,無論是功能開發(fā)、功能測試、缺陷報告、需求建議、企業(yè)最佳實踐,還是提供 Bug 修復(fù)、國際化翻譯、文檔貢獻(xiàn),這些來自開源社區(qū)的貢獻(xiàn)都為 v3.3.0 的發(fā)布和推廣提供了極大的幫助,我們將在文末予以特別致謝!
解讀 KubeSphere 3.3.0 重大更新
更易用的 DevOps
KubeSphere DevOps 從 3.3.0 開始,后端已支持獨立部署,并提供了基于 GitOps 的持續(xù)部署(Continuous Deployment, CD)方案,引入 Argo CD 作為 CD 的后端,可以實時統(tǒng)計持續(xù)部署的狀態(tài)。
以云原生 FaaS 項目 ??OpenFunction 為例,假設(shè)您的 KubeSphere 集群中已經(jīng)部署了 nginx-ingress 和 knative-serving,可以通過 GitOps 持續(xù)部署 OpenFunction 的其他組件。
<<< 左右滑動見更多 >>>
Jenkins 作為一款用戶基數(shù)極大、生態(tài)豐富的 CI 引擎,我們會讓 Jenkins 真正地“扮演”引擎的角色——退入幕后持續(xù)為大家提供穩(wěn)定的流水線功能。之前 KubeSphere DevOps 通過輪詢的方式來實現(xiàn) Jenkins 流水線的數(shù)據(jù)同步,浪費了很多計算資源,本次新增了一個 Jenkins 插件,只要 Jenkins 端有相應(yīng)的事件發(fā)生,就可以通過 Webhook 的形式立即將事件發(fā)送到 ks-devops[1]。
KubeSphere DevOps 從 3.1.0 開始便內(nèi)置了兩個常用的流水線模板,幫助 DevOps 工程師提升 CI/CD 流水線的創(chuàng)建與運維效率。但內(nèi)置的模板內(nèi)嵌到了前端代碼中,很難被改變。3.3.0 對流水線模板進(jìn)行了重構(gòu),新增多款基于 CRD 的內(nèi)置流水線模板,支持參數(shù)設(shè)置,用戶也可以通過 CR 創(chuàng)建多個自定義的模板。

多集群與多租戶
云原生技術(shù)的爆發(fā)倒逼應(yīng)用的可移植性越來越高,最終會有越來越多的組織選擇跨不同的云廠商或者在不同的基礎(chǔ)設(shè)施上運行和管理多個 K8s 集群,可以說云原生的未來就是面向多集群的應(yīng)用交付。
KubeSphere 為用戶提供了統(tǒng)一的控制平面,可以將應(yīng)用程序及其副本分發(fā)到位于公有云和本地環(huán)境的多個集群。KubeSphere 還擁有跨多個集群的豐富可觀測性,包括集中監(jiān)控、日志系統(tǒng)、事件和審計日志等。
之前 KubeSphere 的管理權(quán)限是針對所有集群分配的,無法針對單獨的集群設(shè)置權(quán)限。從 v3.3.0 開始,KubeSphere 支持分別為每個集群設(shè)置集群成員和集群角色,提供了更細(xì)粒度的權(quán)限管控機制,進(jìn)一步完善了 KubeSphere 的多租戶系統(tǒng)。
<<< 左右滑動見更多 >>>
KubeSphere 通過 CustomResourceDefinition(CRD)來定義集群,并將每個集群的信息保存在 CR 中。但 CR 只會保存在 host 集群中,member 集群中的應(yīng)用無法獲取自身所在集群的信息(比如集群名稱),部分功能實現(xiàn)起來比較麻煩。比如告警管理系統(tǒng)發(fā)送通知時需要在通知中添加集群的標(biāo)簽,以標(biāo)識該通知來自哪個集群,但無法自動獲取,只能手動設(shè)置。
v3.3.0 解決了這個痛點,將集群名稱添加到了 ConfigMap kubesphere-config 中,因為每個集群都會有這個 ConfigMap,所以集群中的應(yīng)用可以通過這個 ConfigMap 獲取到自身所在的集群名稱。

除了以上這些改進(jìn)之外,還優(yōu)化了多集群的管理體驗,比如可以直接在 Console 界面更新每個集群的 kubeconfig 內(nèi)容。

而且當(dāng) member 集群 kubeconfig 中的證書即將過期時會即時提醒用戶,用戶收到提示后可以盡快通過上述方法更新集群的 kubeconfig 內(nèi)容。

邊緣節(jié)點納管
KubeSphere 通過與 KubeEdge 集成,解決了邊緣節(jié)點納管、邊緣工作負(fù)載調(diào)度和邊緣可觀測性等難題,結(jié)合 KubeEdge 的邊緣自治功能和 KubeSphere 的多云與多集群管理功能,可以實現(xiàn)云-邊-端一體化管控。
v3.3.0 優(yōu)化了邊緣節(jié)點的管控能力,可以直接在 Console 界面登錄邊緣節(jié)點的終端,以便直接在邊緣端進(jìn)行操作,比如:
下載鏡像,更新邊緣端應(yīng)用; 在邊緣端更新 EdgeCore 和 Docker; 修改邊緣節(jié)點的機器配置; ...
當(dāng)然,Console 界面不僅可以登錄邊緣節(jié)點,也可以登錄普通的節(jié)點。
<<< 左右滑動見更多 >>>
我們還將 KubeEdge 從 v1.7.2 升級到了 v1.9.2,同時移除了 EdgeWatcher 組件,因為 KubeEdge 已經(jīng)提供了類似的功能。
增強可觀測性
KubeSphere 提供了豐富的可視化功能,支持從基礎(chǔ)設(shè)施到應(yīng)用的多維度指標(biāo)監(jiān)控。此外,KubeSphere 還集成了許多常用的工具,包括多租戶日志查詢和收集、告警和通知等功能。
v3.3.0 新增了很多監(jiān)控新特性,支持在租戶級自定義監(jiān)控中導(dǎo)入 Grafana 模板,添加了容器進(jìn)程/線程指標(biāo),同時還優(yōu)化了磁盤使用率指標(biāo),支持顯示每個磁盤的使用情況。

現(xiàn)在用戶也可以分別設(shè)置審計、事件、日志及 Istio 日志信息的保留時間。

除此之外,還對已有的監(jiān)控、日志、告警等組件進(jìn)行了升級:
Alertmanager: v0.21.0 --> v0.23.0 Grafana: 7.4.3 --> 8.3.3 kube-state-metrics: v1.9.7 --> v2.3.0 node-exporter: v0.18.1 --> v1.3.1 Prometheus: v2.26.0 --> v2.34.0 prometheus-operator: v0.43.2 --> v0.55.1 kube-rbac-proxy: v0.8.0 --> v0.11.0 configmap-reload: v0.3.0 --> v0.5.0 thanos: v0.18.0 --> v0.25.2 kube-events: v0.3.0 --> v0.4.0 fluentbit-operator: v0.11.0 --> v0.13.0 fluent-bit: v1.8.3 --> v1.8.11
運維友好的存儲管理
持久化存儲是 K8s 系統(tǒng)中提供數(shù)據(jù)持久化的基礎(chǔ)組件,是實現(xiàn)有狀態(tài)服務(wù)的重要保證。KubeSphere 從 v3.2.0 開始便在 Console 界面新增了存儲管理功能,支持很多管理員級別的運維操作。v3.3.0 進(jìn)一步優(yōu)化了存儲管理功能,管理員可以根據(jù)需要為存儲類型(StorageClass)設(shè)置 PVC 自動擴展策略,當(dāng)用戶的 PVC 剩余容量不足時,就會按照預(yù)設(shè)的策略進(jìn)行擴展。
為了進(jìn)一步控制存儲的操作權(quán)限,v3.3.0 支持了租戶級別的存儲權(quán)限管理,可以為存儲類型(StorageClass)設(shè)置授權(quán)規(guī)則,限制用戶只能在特定項目和企業(yè)空間使用存儲類。
此前 KubeSphere Console 界面不支持對卷快照內(nèi)容(VolumeSnapshotContent)和卷快照類型(VolumeSnapshotClass)進(jìn)行管理,這個功能在 KubeSphere 3.3.0 得以實現(xiàn),現(xiàn)在用戶可以在 Console 界面查看上述兩類資源,并對其進(jìn)行編輯和刪除操作。
服務(wù)暴露優(yōu)化
目前社區(qū)有大量用戶選擇在物理機安裝部署 K8s,并且還有大量客戶是在離線的數(shù)據(jù)中心或邊緣設(shè)備安裝和使用 K8s 或 K3s,導(dǎo)致用戶在私有環(huán)境對外暴露 LoadBalancer 服務(wù)比較困難。為了解決這個問題,KubeSphere 社區(qū)開源了 OpenELB[2],為私有化環(huán)境的用戶提供了易用的 EIP 與 IP Pool 管理能力。
v3.3.0 Console 界面默認(rèn)集成了對 OpenELB的支持,即使是在非公有云環(huán)境的 K8s 集群下,也可以對外暴露 LoadBalancer 服務(wù)。

其他更新
支持通過 ClusterConfiguration 對 Istio 進(jìn)行更豐富的配置; 新增 K8s 審計日志開啟提示; 支持應(yīng)用整個配置字典; 支持容器生命周期 hook 設(shè)置; 支持流量監(jiān)控統(tǒng)計時間配置; 優(yōu)化部分頁面文案描述; 優(yōu)化了服務(wù)拓?fù)鋱D詳情展示窗口優(yōu)化; 修復(fù)了刪除項目后項目網(wǎng)關(guān)遺留的問題; 優(yōu)化了 ClusterConfiguration 更新機制,無需重啟 ks-apiserver、ks-controller-manager; 由于政策要求暫時屏蔽了自動生成的 nip.io 路由,下一個版本中將會提供后臺開關(guān)。
持續(xù)開源開放
借助于開源社區(qū)的力量,KubeSphere 迅速走向全球,目前 KubeSphere 的用戶遍布全球,覆蓋超過了 100 個國家和地區(qū),下載量近百萬,擁有貢獻(xiàn)者近 300 人,主倉庫在 GitHub 上 Star 數(shù)超過 10000,F(xiàn)ork 數(shù)超 1500。v3.3.0 Console 除了支持中、英、繁中和西班牙語之外,還支持了更多的語種,進(jìn)一步拓展了海外市場。
未來 KubeSphere 團隊將繼續(xù)保持開源、開放的理念,v3.3.0 帶來的眾多優(yōu)化也早已在 GitHub 開源,例如 Console[3]、OpenELB[4]、Fluent Operator[5]、 KubeKey[6]、KubeEye[7]、Notification Manager[8]、Kube-Events[9]、ks-devops[10],相關(guān)的代碼與設(shè)計文檔在 GitHub 相關(guān)倉庫都可以找到,歡迎大家在 GitHub 給我們 Star + Fork + PR 三連。
安裝升級
KubeSphere 已將 v3.3.0 所有鏡像在國內(nèi)鏡像倉庫進(jìn)行了同步與備份,國內(nèi)用戶下載鏡像的安裝體驗會更加友好。關(guān)于最新的 v3.3.0 安裝與升級指南,可參考 KubeSphere 官方文檔[11]。
致謝
以下是參與 KubeSphere 3.3.0 代碼、文檔等貢獻(xiàn)的貢獻(xiàn)者 GitHub ID,若此名單有遺漏請您與我們聯(lián)系,排名不分先后。

相較于上個版本,v3.3.0 的貢獻(xiàn)者數(shù)量增長了 50%,這也說明參與 KubeSphere 開源貢獻(xiàn)的人越來越多了。新的貢獻(xiàn)者,都將獲得社區(qū)的專屬證書,后續(xù)我們會在社區(qū)統(tǒng)一發(fā)放。
社區(qū)十分感謝各位貢獻(xiàn)者的參與,也歡迎有越來越多的小伙伴加入此行列,不管是代碼開發(fā)、文檔優(yōu)化,還是網(wǎng)站優(yōu)化、社區(qū)宣傳和技術(shù)布道,KubeSphere 社區(qū)的大門永遠(yuǎn)向您敞開!
引用鏈接
ks-devops: https://github.com/kubesphere/ks-devops
[2]OpenELB: https://github.com/openelb/openelb
[3]Console: https://github.com/kubesphere/console/
[4]OpenELB: https://github.com/kubesphere/openelb/
[5]Fluent Operator: https://github.com/fluent/fluent-operator
[6]KubeKey: https://github.com/kubesphere/kubekey/
[7]KubeEye: https://github.com/kubesphere/kubeeye/
[8]Notification Manager: https://github.com/kubesphere/notification-manager/
[9]Kube-Events: https://github.com/kubesphere/kube-events/
[10]ks-devops: https://github.com/kubesphere/ks-devops/
[11]KubeSphere 官方文檔: https://kubesphere.io/zh/docs/v3.3/







