開發與維運

KubeVela 成為 CNCF 沙箱項目,讓雲端應用交付更加簡單

作者:KubeVela 社區

頭圖.jpg
2021 年 6 月 22 日,在雲原生計算基金會(CNCF)的 TOC 例會上投票決議通過,KubeVela 正式成為 CNCF 官方沙箱項目。透明、開放、開源中立的 KubeVela,未來將持續致力於打造統一、標準、跨雲的應用管理和交付體驗。

“KubeVela 就是這樣一個面向用戶的上層平臺項目。對於業務開發者來說,KubeVela 簡單、易用,它可以讓開發者以極低的心智負擔和上手成本在 Kubernetes 上定義與部署應用... 但更重要的是,對於平臺團隊來說,KubeVela 可不是一個簡單的 PaaS 或者 Serverless,它是一個能夠以 Kubernetes 原生的方式進行任意擴展的 PaaS 內核,平臺工程師可以基於它構建出任意的垂直業務系統。”

—張磊,CNCF TOC Member

KubeVela 項目地址:
_https://github.com/oam-dev/kubevela

_

項目介紹

雲原生技術正在以 Kubernetes 作為通用抽象層,朝著跨雲追求一致的應用交付邁進。Kubernetes 雖然在底層基礎結構細節抽象方面表現出色,但帶來了額外的複雜性。基於 Kubernetes 打造的各類 PaaS 林立卻又互不相通,導致服務應用開發的平臺團隊,沒有一個合適的框架來構建用戶友好且高度可擴展的抽象。與此同時,混合雲、多雲、分佈式雲這些日益複雜的業務場景中,應用交付也在逐漸變得碎片化。

用 Go 語言開發的應用交付引擎 KubeVela,能幫我們克服以上所有難題。作為 OAM(Open Application Model)在 Kubernetes 上的實現,KubeVela 項目從 oam-kubernetes-runtime 演進至今,發展勢頭非常迅猛,不僅連續登上 GitHub Go 語言趨勢榜首和 HackerNews 首頁,更是迅速收穫了包括 MasterCard、Springer Nature、第四範式、SILOT、Upbound 等來自世界各地、不同行業的終端用戶,甚至還出現了像 Oracle Cloud、Napptive 等基於它構建的商業化產品。就在 2021 年 3 月底,KubeVela 社區宣佈包含所有穩定版 API 的 v1.0版本 發佈,正式開始向企業級生產可用邁進。

1.png
KubeVela 技術架構圖

核心思路

對於平臺開發人員而言,KubeVela 作為框架,通過執行以下操作來減輕構建以開發人員為中心的平臺的煩惱:

  • 以開發人員為中心。KubeVela 通過引入 Application 的概念來抽象基礎架構級別的原語,從而捕獲微服務的完整部署,然後根據應用程序的需求構建操作功能。
  • 本地擴展。Application 由模塊化的構建塊組成,這些構建模塊支持 CUELang【1】 和 Helm 【2】作為模板引擎。這使你能夠以樂高風格抽象 Kubernetes 的功能,並通過簡單的 kubectl apply -f 將它們發佈給最終用戶。對抽象模板所做的更改將在運行時生效,無需重新編譯或重新部署 KubeVela。
  • 簡單而可靠的抽象機制。與大多數 IaC(基礎設施即代碼)解決方案不同,KubeVela 中的抽象是用 Kubernetes Control Loop 【3】構建的,所以它們永遠不會在集群中留下配置漂移。作為 Kubernetes 自定義資源【4】,KubeVela可以與任何 CI/CD 或 GitOps 工具無縫協作,不需要進行集成工作。

有了 KubeVela,平臺構建者終於有了工具支持,可以設計易於使用的抽象,並以高信心和低週轉時間將它們交付給終端用戶。

對於終端用戶(例如應用程序開發人員)來說,這種用 KubeVela 構建的抽象將使他們能夠以最少的努力設計並向 Kubernetes 發佈應用程序 —他們要做的只是定義一個簡單的應用程序,可以輕鬆地與任何 CI/CD 集成,而不需要管理一些基礎設施細節。

更進一步,KubeVela 目前典型的應用場景有很多,比如:

  1. SasS 軟件雲端託管
  2. 面向混合雲/分佈式雲的應用 PaaS
  3. 面向混合環境的 DevOps 平臺,包括多集群/多環境 CD/CD 等

未來展望

為了更好的滿足雲原生下應用交付的更加快速、多變和複雜等業務需求特性,KubeVela 將遵循以下的 Roadmap 進一步演進:

  • 目前 Component 接入需要通過 CUE 來實現對接轉換。接下來,我們打算對已有的體系做更好的支持 -- 這包括已有的 Helm Chart、Kustomize 目錄、Terraform Module 能夠直接接入成為 Component。以 Helm Chart 為例,它的 values.schema.json 將對接成為 properties,輸出的資源等同於 helm template 渲染後的結果。
  • 添加環境初始化 (Initializer) 的能力,為開發團隊提供公共的部署環境,比如集群、系統 Operators & CRDs、公共服務 (Load Balancer, VPC, DB) 等。
  • 添加面相應用發佈過程的 Workflow 能力,讓用戶可以定義面向過程的運維命令。所有內置運維操作也將往 Workflow 方向改造,包括 apply resources、灰度升級、流量管理、多集群等。同時也會新增配置差異化、數據傳遞等新功能。同時 Workflow 能力整體設計是可插拔的,用戶可以實現自己的能力(比方說灰度發佈)來添加或替換。
  • Vela 系統部署上提供 standalone 模式,不需要 K8s 作為運行時底座,可以在單個容器/VM 裡面運行起來,適應一些比較複雜的管控部署環境。
  • 用戶體驗這一側,velacp 項目將去除 mongodb 依賴而轉為直接使用 CRD 做存儲。添加更多的垂直場景,實現端到端一鍵交付能力,產出 App Profile 這種可被分享複用的場景製品解決方案。
  • 跟 CICD 系統做更好的集成,包括 Github Actions、Jenkins 等,能夠讓用戶實現 git push 就將應用發佈出去。

2021 年 5 月 26 日,由阿里雲計算有限公司、中國信息通信研究院等 10 餘家單位聯合發起的《雲計算開放應用架構》標準文件在“雲原生產業大會”現場發佈。該架構以阿里雲、微軟雲聯合發起的開源項目“開放應用架構模型(Open Application Model,以下簡稱 OAM)”為實現基礎,旨在為雲端應用管理者提供統一的應用描述規範及開放應用程序能力管理框架,以期推動簡潔、高效、可控的雲原生應用管理與交付方式在更多行業和企業中的大規模落地。

我們可以看到作為 KubeVela API Specification 的 OAM 正在匯聚行業共識,KubeVela 社區目前也在 GitHub 上獲得 2.2k+ Star 認可,吸引到 3+ Maintainer、85+ Contributor 共建,以及 SheIn、滴普、諧雲和風變科技等眾多用戶開始運用 KubeVela 在生產環境上。

我們歡迎所有對應用交付感興趣的開發者一起加入進來!訪問官網 kubevela.io,加入社區群組,學習使用 KubeVela。如果您已經在使用 KubeVela,歡迎在社區案例登記 issue(https://github.com/oam-dev/kubevela/issues/1662)留下您的信息,讓社區知道您最真實的需求。

KubeVela 將會一如既往地和社區一起前進,讓雲端應用交付更加簡單!

相關鏈接

【1】 CUELang
https://github.com/cuelang/cue
【2】 Helm
https://helm.sh/
【3】 Kubernetes Control Loop
https://kubernetes.io/docs/concepts/architecture/controller/
【4】Kubernetes 自定義資源
https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

如果你想更好的瞭解 KubeVela 項目,歡迎搜索釘釘群號 23310022 或直接釘釘掃碼加入社區交流群:

二維碼.png

Leave a Reply

Your email address will not be published. Required fields are marked *