天天看點

今年最火的 Golang 雲原生開源項目,可能就是它了!

就在剛剛結束的、雲原生領域最權威的 KubeCon 北美峰會 2020 上,由 Open Application Model (OAM)社群釋出的 KubeVela 開源項目,着實讓人眼前一亮。更令人咋舌的是,僅僅在宣布開源的第四天,KubeVela 就直接登上了 GitHub 趨勢榜 Go 語言區榜首的位置,其發展潛力可見一斑!

來源 | 阿裡巴巴雲原生公衆号

在網際網路與雲計算技術發展的日新月異過去五年中,應用研發人員對效率與靈活的極緻追求,終于把業界帶進了一個嶄新的雲原生時代。而雲原生理念的迅速普及,火了 Docker,紅了 Kubernetes ,也間接讓一個程式設計語言成為了如今服務端的“當家花旦”。不消多講,這位在雲原生領域裡正紅的發紫的“角兒”,就是 Golang。

不過,正如同 “PHP 不一定是最好的程式設計語言”一樣,Go 語言本身也不是“萬能鑰匙”。Go 語言之是以能夠乘上雲原生這趟高速列車,究其原因,更多是與它如下幾個特質密切相關:

  • 文法簡單,容易上手。雲原生社群是一個對開源和貢獻者非常看重的生态,這就使得很少需要糾結于文法細節的 Go 語言迅速成為了這個社群的“不二之選”。否則的話,雲原生 CNCF 社群裡大量項目都得忙着讨論這個指針那個引用,什麼 Kubernetes CRD 之類的創新設計估計都得涼。
  • golang.org 庫非常豐富。咱們現代軟體開發行業,講究的就是“面向 library” 程式設計,誰沒事兒都不會手撸一個 HTTP 架構或者并發庫。開箱即用的庫越多,咱研發效率就越高。在這一點上,Go 語言不僅有先天優勢,而且雪球越滾越大,已然是雲原生一霸了。
  • 部署簡單。Go 語言項目開發完了,一個靜态檔案就可以運作了,特别适合直接扔在 Docker 裡跑。大家可以想象一下如果 Kubernetes 是 Python 或者 Ruby 開發的,這玩意兒線上部署得多頭疼。
  • 性能還不錯,優化也相對簡單。Go 語言不能說是性能之王,但它很好的平衡了性能和程式員的心智負擔。對于 Docker、Kubernetes 這幾個項目的定位來說,這個平衡點恰到好處。

是以到了 2020 年,Go 語言已經成為了”雲原生“這個圈子最重要的一枚“入場券”:Linux 核心不懂,咱還有機會慢慢學;Go 語言不會?您可就真要寸步難行了。

而俗話說得好:要想語言學得好,動手練習不能少!咱們雲原生社群最大的一個好處,就是 Go 語言開源項目多,優質的 Go 語言開源項目更多!從最底層的 containerd,到編排層的 Kubernetes,再到如今正紅的發紫的 Istio,随便拿出一個來,那就足夠咱們好好鑽研一陣子了。

不過,這些知名項目現在大多已經比較成熟,基本上很少接受大顆粒的 feature 進去。而且即使提 Pull Request(PR)上去了,它的合并速度也是慢的令人發指。是以大家都在問,在雲原生領域中,還有哪些比較早期的、熱門的 Go 語言項目還能讓咱們廣大的 YAML 工程師們”一展宏圖“呢?

這不,就在剛剛結束的、雲原生領域最權威的 KubeCon 北美峰會 2020 上,由 Open Application Model (OAM)社群釋出的 KubeVela 開源項目,着實讓人眼前一亮。

  • KubeVela 項目官網:http://kubevela.io/
  • GitHub 項目位址:https://github.com/oam-dev/kubevela/

更令人咋舌的是,僅僅在宣布開源的第四天,KubeVela 就直接登上了 GitHub 趨勢榜 Go 語言區榜首的位置,其發展潛力可見一斑!

今年最火的 Golang 雲原生開源項目,可能就是它了!

而在 KubeCon 上的三場 KubeVela/OAM 相關的技術演講中,KubeVela 項目更是受到了 “360 度”的關注與好評。比如,在 CNCF 應用傳遞領域小組對 KubeVela 項目進行介紹的過程中,來自 Airbnb 的“網紅” 雲原生工程師 Melanie 全程直播了這個演講,最後給 KubeVela 項目點了個大大的贊!

“如果我想要一個 K8s 上的 Heroku,該怎麼辦?”  

“那就用 KubeVela 吧!”

今年最火的 Golang 雲原生開源項目,可能就是它了!

看到這,相信你已經對這個項目充滿了好奇。GitHub 趨勢榜 Go 語言第一,這個項目到底是什麼來頭?

KubeVela 是什麼?

一言以蔽之,KubeVela** 是一個簡單易用且高度可擴充的應用管理平台與核心引擎**。KubeVela 是基于 Kubernetes 與 Open Application Model(OAM) 技術建構的。

詳細地講,KubeVela 是一個非常低心智負擔的雲原生應用管理平台,核心功能是讓開發人員友善快捷地在 Kubernetes 上定義與傳遞現代微服務應用,無需了解任何 Kubernetes 本身相關的細節。在這一點上,KubeVela 可以被認為是雲原生社群的 Heroku。

再通俗點說,如果你是一個應用開發人員,想要在 K8s 上部署應用,再也不需要去學習複雜的 K8s 知識啦,隻需要使用 KubeVela 就可以簡單的上手各種 K8s 的功能。

另一方面,對于 PaaS 平台團隊來講,KubeVela 是一個強大并且高可擴充的雲原生應用平台核心引擎。基于這樣一個引擎,平台團隊可以快速、高效地以 Kubernetes 原生的方式在 KubeVela 中植入任何來自雲原生社群的應用管理能力,進而基于 KubeVela 打造出自己需要的雲原生平台,比如:雲原生資料庫 PaaS、雲原生 AI 平台、甚至 Serverless 服務。在這一點上,KubeVela 可以被認為是一個“以應用為中心”的 Kubernetes 發行版,以 OAM 為核心,讓平台團隊可以基于 KubeVela 快速打造出屬于自己的 PaaS、Serverless 乃至任何面向使用者的雲原生平台項目。

為什麼能這麼火?

在不久前 KubeVela 項目負責人接受國内某技術媒體的專訪中提到:“目前,很多業務使用者對‘雲原生’、Kubernetes 的價值其實普遍缺乏體感,這個情況在整個社群裡都是個讓人頭疼的問題。這裡最根本的原因,在于 Kubernetes 與使用者之間,還存在着一層名叫“應用層”抽象亟待填補”。

誠然,Kubernetes 和雲原生技術的各種核心概念,距離業務使用者其實很遙遠。通過這些技術實際的落地過程也不難看出,僅僅有基礎設施層抽象,離雲原生“絲般順滑”的雲端應用管理與傳遞體驗,還是存在着巨大的鴻溝。

而 Open Application Model(OAM)開放應用模型,以及它的 Kubernetes 實作 KubeVela 項目,正是阿裡雲聯合微軟等雲原生社群中堅力量,共同推出的“以解決使用者側訴求”為核心的雲原生應用層項目。其中,OAM 的設計思想是為包括 Kubernetes 在内的任何雲端基礎設施提供一個統一、面向最終使用者的應用定義模型;而 KubeVela,則是這個統一模型在 Kubernetes 上的完整實作。

“隻有當業務研發接觸到的是‘代碼’、‘應用’,而不是 'Pod'、'StatefulSet' 時,讓研發專注于寫代碼’這個美好、樸素的雲原生願望,才能夠真正得以實作”,張磊這樣表示。

我能成為 KubeVela 項目的貢獻者嗎?

當然!

而成為 KubeVela 貢獻者的主要基礎,自然是 Go 語言啦。詳細的說, KubeVela 對如下幾個 Golang 生态工具有依賴:

  • Golang 開發環境:1.13+;
  • Ginkgo 1.14.0+ ,Ginkgo 是 KubeVela 運作 E2E 測試的依賴;
  • Golangci-lint 1.31.0+,Golangci-lint 是 KubeVela 檢查你的代碼風格和規範是的依賴。

除此之外,KubeVela 會希望你對 Kubernetes 有一些基本的了解。當然了,成為 Kubernetes 專家大可不必:有了 Go 語言這枚”入場券“,你還有啥可擔心的。

另外,貢獻 KubeVela 之前,請你一定要詳細閱讀它的貢獻者文檔,這個文檔裡還連結了 KubeVela 的詳細設計文檔,這個應該說是貢獻者必讀的一篇參考資料。

那麼 KubeVela 項目中,又有哪些技術點可以貢獻呢?

作為一個”高可擴充“的雲原生應用平台,KubeVela 是一個幾乎每一個特性都是可擴充、可插拔,有着很高可玩度的一個項目。

這不,就在 KubeVela 開源的第二天,來自社群的貢獻者就已經為 KubeVela 加上了Contour Ingress 控制器的支援。而且這個 PR 已經被合并,這也意味着下個 Release 裡,KubeVela 就會原生支援基于 Envoy 的應用通路路由。類似的,KubeVela 裡的其他特性比如 Autoscaler 等,都以 Kubernetes 原生的方式提供了大量的可擴充的空間。

另一方面,整個 KubeVela 平台的設計是由 Workload Type (工作負載類型)和 Trait (應用特征)組成的。是以,你可以自由地為 KubeVela 裡添加各種各樣的 Workload Type 和 Trait,比如 StatefulSet 工作負載,CloneSet 工作負載,藍綠釋出 Trait,流量管理 Trait 等等。對于這部分應用管理能力,隻有你想不到,沒有你做不到,未來的 KubeVela 具備什麼能力,抽象怎麼設計,你說了算!

然後是使用者接口與模型層。即 KubeVela 的 Appfile 與它背後的 OAM 模型引擎。這部分是 KubeVela 中最核心的部分,但是一般來說比較穩定,比較适合對 KubeVela 和 OAM 有一定了解的中級開發者。尤其是已經在内部場景中進行過 OAM 落地的同學,大可以在這個領域繼續一展身手。

最後,也是最重要的,是任何 KubeVela 相關的分享與案例文章。是的,貢獻 KubeVela 項目大可不必從代碼開始,任何一篇對 KubeVela 使用、內建甚至吐槽的分享,都是對整個社群價值巨大的貢獻,我們對此無比期待!

KubeVela 遵循 CNCF 貢獻者階梯,設計了兩級 Maintainer 級别。具備一定貢獻量的項目貢獻者,将被現有 Maintainer 提名為 Reviewer,獲得一定的項目維護權限并成為 KubeVela 項目 Member. 而 Reviwer 中表現突出的成員,将會被提名為 Approver,成為項目核心維護者。

KubeVela 即是現今阿裡自身多個網際網路級應用平台産品(比如阿裡雲 EDAS 服務)背後的核心引擎,也是一個誕生自雲原生社群的開源項目。KubeVela 項目将在穩定之後,即整體捐贈給雲原生社群中立基金會。

如果你有任何疑問,歡迎搜尋釘釘群号:23310022 進群交流!