KubeSphere 做爲雲原生家族 後起之秀,開源近兩年的時間以來收穫了諸多用戶與開發者的承認。本文經過大白話從零詮釋 KubeSphere 的定位與價值,以及不一樣團隊爲何會選擇 KubeSphere。網絡
KubeSphere 是在 Kubernetes 之上構建的 多租戶 容器平臺,以應用爲中心,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工做流。使用 KubeSphere 不只可以幫助企業在公有云或私有化數據中心快速搭建 Kubernetes 集羣,還提供了一套功能豐富的嚮導式操做界面。多線程
KubeSphere 可以幫助企業快速構建一個功能豐富的容器雲平臺,讓企業在享受 Kubernetes 的彈性伸縮與敏捷部署的同時,還能夠在容器平臺擁有 IaaS 平臺的存儲與網絡能力,得到與 IaaS 同樣穩定的用戶體驗。好比在 KubeSphere 2.1.1 新增了對阿里雲與騰訊雲塊存儲插件的集成,支持爲 Pod 掛載公有云的存儲,爲有狀態應用提供更穩定的持久化存儲的能力。架構
在平常的運維開發中,咱們可能須要使用與管理大量的開源工具,頻繁地在不一樣工具的 GUI 和 CLI 窗口操做,每個工具的單獨安裝、使用與運維都會帶來必定的學習成本,而 KubeSphere 容器平臺可以統一納管與對接這些工具,提供一致性的用戶體驗。這意味着,咱們不須要再去多線程頻繁地在各類開源組件的控制面板窗口和命令行終端切換,極大賦能企業中的開發和運維團隊,提升生產效率。併發
有不少用戶習慣把 KubeSphere 定義爲 「雲原生全家桶」。不難理解,KubeSphere 就像是一個一攬子解決方案,咱們設計了一套完整的管理界面,開發與運維在一個統一的平臺中,能夠很是方便地安裝與管理用戶最經常使用的雲原生工具,從業務視角提供了一致的用戶體驗來下降複雜性。爲了避免影響底層 Kubernetes 自己的靈活性,也爲了讓用戶可以按需安裝,KubeSphere 全部功能組件都是可插拔的。運維
KubeSphere 基於 OpenPitrix 和 Helm 提供了應用商店,對內可做爲團隊間共享企業內部的中間件、大數據、APM 和業務應用等,方便開發者一鍵部署應用至 Kubernetes 中;對外可做爲根據行業特性構建行業交付標準、交付流程和應用生命週期管理的基礎,做爲行業通用的應用商店,可根據不一樣需求應對不一樣的業務場景。在 3.0 版本還將支持計量 (Metering),方便企業對應用與集羣資源消耗的成本進行管理。微服務
可觀察性是容器雲平臺很是關鍵的一環,狹義上主要包含監控、日誌和追蹤等,廣義上還包括告警、事件、審計等。對於 Kubernetes 運維人員來講,一般須要搭建和運維一整套可觀察性的技術架構,例如 Prometheus + Grafana + AlertManager、EFK 等等。而且,企業一般還須要對不一樣租戶可以看到的監控、日誌、事件、審計等信息,實現按不一樣租戶隔離,這些需求的引入無疑會增大企業的運維成本與複雜性。工具
KubeSphere 可以幫助運維人員基於 Kubernetes 快速搭建一套知足雲原生可觀察性標準的技術架構,支持在一個統一的平臺納管這些組件,或對接外部已有的組件。KubeSphere 可以在一套管理界面中,實現從基礎設施層級到容器微服務層級的多維度日誌與監控,支持逐級下鑽定位異常資源,而且可以知足多租戶隔離的需求。在 3.0 版本還將持續加強可觀察性,近一步豐富事件與審計的可視化管理能力。單元測試
對於 DevOps 團隊而言,平常工做除了開發一些自動化的工具以外,還須要運維與管理衆多開源工具鏈。DevOps 自己做爲一個很廣義的方法論,也能夠被認爲是一種文化,不少 DevOps 團隊在落地過程當中,也會遇到各類各樣問題,例如 CI/CD 工具繁多、涉及人員和環境較多、流程相對複雜等等。學習
咱們選擇以工具型產品的形式,將 DevOps 在 KubeSphere 中落地。KubeSphere DevOps 系統選擇 Jenkins 做爲其 CI/CD 引擎,藉助 Jenkins 豐富的插件體系和易於進行擴展開發的特性,幫助 DevOps 團隊在一個統一的平臺中,打通開發、測試、構建、部署、監控、日誌與通知等流程。KubeSphere 爲 DevOps 團隊打造了以容器爲載體的端到端的應用交付平臺,實現從項目管理、應用開發、持續集成、單元測試、製品構建到應用的生產交付,全部的流程都是一個完整的閉環。測試
基於 Kubernetes,KubeSphere DevOps 充分利用和釋放 Kubernetes 動態擴展的能力。例如,咱們在內置的 DevOps 系統使用了 Jenkins Kubernetes 的動態 Agent,即默認所有使用動態的 Kubernetes Slave,這樣的方案相較於傳統虛擬機上的 Jenkins 要更加靈活敏捷。同時,在 KubeSphere DevOps 中內置了用戶經常使用的 Agent 類型,例如 Maven、Node.js、Go 等,而且還支持用戶自定義與擴展的 Agent 類型。
咱們將內置的 Jenkins 與 KubeSphere 帳戶打通,知足企業對 CI/CD 流水線多租戶隔離與統一認證的需求。另外,KubeSphere DevOps 支持建立 InSCM 與 OutOfSCM 兩種形式的流水線。這樣能很好地兼容項目已有的 Jenkinsfile,或使用圖形化編輯流水線。
業務開發者即便尚未深刻了解 Docker 與 Kubernetes 的機制,也能夠藉助 KubeSphere 內置的自動化 CD 工具,如 Binary to Image 和 Source to Image。用戶只須要提交一個倉庫地址,或上傳 JAR/WAR/Binary 等二進制文件,便可快速將製品打包成 Docker 鏡像併發布到鏡像倉庫,最終將服務自動發佈至 Kubernetes 中,無需編寫一行 Dockerfile。而且,在自動構建的過程當中,可以生成動態日誌,幫助開發者快速定位服務構建與發佈的問題。
在產品新版本發佈前,運營團隊一般須要引入一部分流量對新版本灰度測試。灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠對新版本進行測試,方便及時發現和調整問題,以驗證產品的可行性和收集用戶反饋。
KubeSphere 基於 Istio 提供了藍綠部署、金絲雀發佈、流量鏡像等三種灰度策略,無需修改應用的服務代碼,便可實現灰度、流量治理、Tracing、流量監控、調用鏈等服務治理功能,即讓產品的迭代可以按照不一樣的灰度策略對新版本進行線上環境的測試,而且可以在服務拓撲與 Tracing 中發現微服務間互相請求的網絡問題。
KubeSphere 支持部署和運行在包括 公有云、私有云、虛機、物理機 和 Kubernetes 等任何基礎設施之上,並支持在線與離線安裝,可參考 KubeSphere 官方文檔 進行安裝。
本文由博客一文多發平臺 OpenWrite 發佈!