云原生時代的DevOps平臺設計之道( 三 )


在這方面 KubeSphere 做的更加全面 , 通過集成 Jenkins 實現了基于圖形化的流水線配置 , 這種方式對于以前就在使用 Jenkins 的團隊很友好 。并且這種實現繼承了 Jenkins 生態原有的高自由度,可以更好的將其他第三方CI工具納入流程之中 。
Rainbond 通過在構建流程中加入自制的自動觸發能力,也可以完成部分流水線工作 。這種配置相對編寫 Jenkinsfile 來說更簡單一些,能夠滿足一些基本場景 。然而其擴展性和自由度不足,能夠接納的第三方CI工具不夠豐富 。
Rancher 并沒有在產品中集成 CI 方面的能力,在 CD 方面通過集成 fleet 項目來實現 GitOps ,使用的門檻較高 。

云原生時代的DevOps平臺設計之道

文章插圖
這樣的使用體驗還有一個優點 , 從始至終都不需要開發人員去編寫格式嚴苛的 Kubernetes 聲明式配置文件 。這對開發人員而言無疑是一個極大的利好 , Kubernetes 雖好,但學習曲線非常陡峭 。Kubernetes 默認通過 yaml 格式的聲明式配置文件來部署業務系統,其中絕大多數的字段定義都是運維特征的體現,換句話說,絕大多數的字段定義,都不應該是開發人員關注的事情 。
DevOps 工程師應該抓住開發人員使用 Kubernetes 的痛點,避免其接觸復雜運維事務 。云原生平臺理應提供這種使用體驗,讓開發人員對 Kubernetes 完全無感知的情況下,完成業務系統的部署工作 。換句話說,讓 Kubernetes 變得對開發人員“透明” 。
【云原生時代的DevOps平臺設計之道】從這個方面來說 , 通過對三款開源云原生平臺的體驗 , 發現 Rancher 和 KubeSphere 雖說均可以基于圖形化界面來部署自己的業務組件 , 然而這些圖形化配置只是 yaml 聲明式配置文件的 “翻譯” , 對于 Kubernetes 不夠熟悉的用戶想要順利使用 , 還是有一定的門檻 。Rainbond 這一點則做的非常不錯 , 部署業務時完全感受不到 Kubernetes 的存在 , 對于不熟悉 Kubernetes 的用戶而言非常友好 。然而產品化定制的程度越高 , 跟隨 Kubernetes 前進的腳步就越難 , 上游 Kubernetes 不斷在推出新的功能特性 , 如何將新特性抽象成為用戶易于理解的功能將會是個挑戰 。最新版本的 Rainbond 推出了 Kubernetes 屬性這一功能特性,允許用戶以 yaml 形式編輯 workload ,也是為打破自設的“天花板” 。
降低操作基礎設施的難度既然要設計一款平臺級的軟件產品,那么就需要將復雜且不易被掌握的技術,抽象成為用戶易于理解的功能 。DevOps 工程師設計的云原生平臺產品,首要任務之一,是能夠降低開發人員使用基礎設施的門檻 。這個章節主要討論的,是開發人員自行管理自己業務系統的運維特征 。
就拿存儲這件事來說,開發人員到底關注什么呢?
圍繞存儲這個概念,我們可以說出一堆名詞,塊設備、文件系統、對象存儲、本地磁盤、磁盤陣列、NFS、Ceph等等 。這些名詞毋庸置疑都與存儲相關,也的確會被各種業務系統所使用,但我相信,絕大多數的開發人員對這些名詞并不關心 。
作為用戶,開發人員只關心一件事情,我所負責的業務系統,指定目錄中的數據需要被持久化的保存下來 。
大多數情況下,業務系統涉及到的存儲場景都應該是簡單的 。在云原生時代,我們甚至呼吁開發人員在開發業務系統的時候,應該盡量做到“無狀態化”,即在業務系統中,不存在限制實例橫向擴容的狀態數據,至少做到不同實例之間,數據可以共享 。根據這一點,DevOps 工程師們完全可以為開發人員提供一個能夠適應大多數場景的默認存儲類型,各個云廠商提供的 NAS 類型存儲是個很好的選擇 。
使用復雜存儲的場景更多見于業務系統所調用的各種中間件中,比如數據庫需要高速穩定的塊設備類型存儲,再比如大數據領域的“存算分離”場景下對接對象存儲等等 。然而在大多數場景下,這些復雜中間件的維護并不是開發人員應該關心的事情 。它們由專門的運維人員進行維護,開發人員只需要得到訪問它們的地址即可 。
所以在這種簡單存儲場景下,開發人員最好可以僅僅填寫一下自己需要被持久化的目錄地址,由云原生平臺來實現底層存儲的配置 。對存儲基礎設施的操作,開發人員并不需要關心 。
云原生時代的DevOps平臺設計之道

文章插圖
從使用體驗上來說,Rancher 和 KubeSphere 可選擇的存儲類型很多,這是因為它們的產品生態優于 Rainbond,比如 Rancher Lab 直接推出了輕量級的存儲解決方案 Longhorn,對于各大公有云廠商提供的存儲產品驅動也都有集成 。Rainbond 依然在易用性方面做的夠好,實現了上文中僅關注業務系統持久化目錄的使用體驗 。然而僅對 NFS 類型的存儲支持比較完善,對于其他類型的存儲支持,需要在底層基礎設施中自建驅動,安裝起來不如前二者方便 。

推薦閱讀