KubeVela 1.1 發布,開啟混合環境應用交付新里程碑


在雲原生理念迅速普及的今天,混合環境部署(混合雲/多雲/分布式雲/邊緣)已經成為了大多數企業應用、SaaS 服務、應用持續交付平台的必然選擇,而雲原生技術的發展趨勢也正在朝着“一致的、跨雲、跨環境的的應用交付”不斷邁進。然而,無論是 Kubernetes 本身還是現有的各類應用交付系統,都沒有在現今混合、分布式的部署環境之上引入一致的上層抽象來為應用交付進行建模。這種缺乏統一上層抽象的應用交付過程,往往同底層基礎設施緊密耦合,導致用戶心智負擔很重並且嚴重依賴於用戶個人的經驗和能力。這不僅會大幅影響用戶體驗、降低生產效率,甚至還會導致錯誤和故障的發生。

而現在,這個問題終於有了一個開源、標准,又不失靈活度的解法。它就是:

1.png

KubeVela 作為一個開箱即用、面向現代微服務架構的應用交付與管理平台,今天正式發布了 1.1 版本,以更加用戶友好和完善的功能集,開啟了“讓混合環境應用交付更加簡單高效”的重要里程碑。

具體來說,1.1 版本的 KubeVela 與現有各類應用交付系統相比,有着顯著的不同和優勢:

  • 完全以應用為中心 - 與各類“搭積木”式的 PaaS 系統或者應用平台不同,KubeVela 項目本身是構建於一套完善的應用交付模型與理論基礎之上的,這就是“開放應用模型(OAM)”技術。OAM 模型能夠通過聲明式的定義來捕獲面向混合環境的微服務應用交付的整個過程,甚至包括雲服務的拉起與綁定、可觀測性、多集群分發策略、流量調配和滾動更新等各種運維行為和特征。通過這樣一個統一的、基礎設施無關的上層模型,KubeVela 天然就能夠做到讓用戶無需關心任何基礎設施細節、只專注於業務價值和交付過程,真正實現了完全 Serverless 化的應用管理與交付體驗。
  • 可編程式交付工作流 - 在 Kubernetes 面向終態的基礎上,KubeVela 還通過“交付流水線(Workflow)“來支持面向過程的應用交付流程,同時通過 Kubernetes 終態能力來保證該流水線執行的正確性與冪等性。在內核中,KubeVela 流水線是通過 CUE 來實現的。CUE 是一種誕生自 Google Borg 系統的數據配置語言(即:borgcfg),它可以將應用交付過程的所有步驟、所需資源、關聯的運維動作以可編程的方式定義成一個 DAG(有向無環圖),並以此作為用戶最終的交付計划。這使得 KubeVela 的交付流水線不僅使用簡單、擴展性極強,也更符合現代 GitOps 應用交付的趨勢與要求。
  • 基礎設施無關 - 在 1.1 版本中,KubeVela 完成了 100% 的“控制平面化”。這意味着它本身成為了一個運行在管控集群中的、完全與應用運行基礎設施無關的交付控制平面。這種“使用 Kubernetes 作為管控平面、面向任何基礎設施進行應用交付與管理”的新架構,使得 KubeVela 可以按照用戶定義的工作流與交付策略,面向任何環境交付和管理任意類型的應用組件,包括:容器、雲函數、數據庫、雲服務、虛擬機實例等等。

KubeVela 1.1 介紹

自 Kubevela 1.0 版本發布以來,KubeVela 社區發展非常迅速,截止目前已經有超過 100+ 名開發者參與貢獻,而且就在上個月,KubeVela 和 OAM 項目也已經整體捐贈給了 CNCF 基金會進行托管。在 1.1 版本中,KubeVela 更加聚焦面向混合環境的應用交付流程,帶來了多集群交付、交付流程定義、灰度發布、公有雲資源接入等多個開箱即用的能力和更加友好的用戶體驗。這其中,有兩個核心能力值得特別關注:

  • 天然支持多環境、多集群應用交付:Kubevela 將底層環境的基礎設施進行了面向應用的標准化抽象,涵蓋了交付制品、算力(基礎計算、AI計算、雲邊協同計算)、運維特征(監控、流量治理、日志收集等)等多個維度。用戶能夠非常方便的將應用描述跟不同的待交付環境(集群)進行匹配、定義不同環境下的配置 Patch,從而把應用差異化地交付到不同環境或者集群當中。
  • 天然支持聲明式交付工作流:眾所周知,Kubernetes 的資源模型是以終態來維護的,但是實際的應用交付場景,卻往往是一個面向過程的系列操作(比如:聲明組件 A - 部署組件 A 到測試集群 - 切 50% 流量到組件 A - 運行測試 - 發布到生成集群等等)。所以在社區中,用戶希望簡單、透明的控制應用交付流程的訴求非常強烈,但往往又不希望因此引入一套全新的、完整的 CI/CD 系統。為此,KubeVela 1.1 在應用模型中增加了 Workflow 語義來精細化的描述整個應用交付工作流,並且內置就提供“人工審批”、“回滾”、“數據傳遞”、“Slack/釘釘通知”等多個工作流步驟(Step)。更重要的是,這種實現在應用模型層的聲明式 Workflow 天然具備被集成能力,可以非常自然的同現有 CI/CD 系統或者 GitOps 工具通過擴展的方式做集成,而不需要用戶在取舍間痛苦。

正是通過上述設計,KubeVela 可以幫助你從“靜態配置、模板、膠水代碼”的初級階段,直接升級至“自動化、聲明式、統一模型、天然面向多環境”的下一代以工作流為核心的交付體驗當中。

2.jpg

基於上述能力,用戶現在可以通過 KubeVela 非常輕松的處理以下場景:

多環境、多集群應用交付

面向 Kubernetes 的多環境、多集群交付已是一個標准性需求。您或許是需要環境隔離,開發、預發和生產三套集群;或許是需要交付不同的客戶,每個客戶獨立一套集群;或許是需要交付到不同區域,在北京、廣州多套集群;又或許您業務規模大,單個 Kubernetes 集群無法滿足您的資源需求。從 1.1 版本開始,KubeVela 不僅實現了多集群的應用交付,並且既可以獨立工作直接納管多個集群,也可以集成 OCM、Karmada 等各類多集群管理工具來進行更復雜的交付動作。

3.gif
多集群應用發布Demo(結合Workflow)

在上述例子中,我們就將一個應用差異化的交付到了不同的集群環境中。這種“交付差異”在 KubeVela 中屬於交付策略(Policy)的一種,它可以是環境配置差異、組件數量差異等等。值得一提的是,KubeVela 支持 Kustomize 風格的 Patch 來定義這種差異,但又不需要用戶學習任何 Kustomize 相關的知識。在多集群交付策略的基礎上,用戶還可以通過定義 Workflow 來控制交付到不同集群的順序、條件等工作流步驟。

進一步嘗試多集群應用交付,請參考最佳實踐文檔。

后續版本中,KubeVela 在多集群交付方面會提供全局流量分發、多集群自動調度策略、多集群灰度發布等更多高級特性特性。

定義交付工作流(Workflow)

Workflow 的背景前面已經提到過,而它的具體使用場景則很多,比如:在多環境應用交付場景中,用戶可以定義不同的環境交付的順序和前置條件;再例如最簡單的需求,部署完成后需要通知開發者;再例如我們需要控制灰度發布的進程,流量切換的比例,再例如我們需要應用部署完成后執行E2E測試等。KubeVela 的工作流是面向持續交付(CD)過程的,同時也是聲明式的,所以它既可以作為 CD 系統直接同 CI 系統(比如 Jenkins 等)對接,也可以嵌入到現有 CI/CD 體系中作為增強和補充,落地方式非常靈活。

在模型上,Workflow 是由一系列 Step 組成的,而在實現上,每一個 Step 則是一個獨立的能力模塊,由其具體的類型和參數來決定其具體步驟的能力。在 1.1 版本中,KubeVela 內置的 Step 已經比較豐富,歡迎大家試用、反饋。並且,Step 非常容易擴展,也能夠讓大家去對接已有的平台能力,做到無縫遷移。

連接 service mesh 提供灰度發布等高級運維操作

通過統一的應用模型集成各種不同的底層能力,依然是 KubeVela 最大的亮點之一。具體來說,KubeVela 通過 OAM 模型可以使得用戶不需要任何“臟亂差”的膠水代碼或者腳本就可以同任何雲原生技術或工具(比如 Service Mesh)實現集成,從而為交付過程帶來更多的雲原生應用運維能力。在 1.1 版本中,KubeVela 已經內置了與 Istio 集成的案例。系統管理員可以通過 KubeVela 的插件管理機制便捷的啟用 Istio 插件 。KubeVela 則負責將 Istio 的能力進行封裝和抽象后交付給用戶使用,使得用戶無需成為 Istio 專家就可以直接使用這個金絲雀發布的場景(KubeVela 會為用戶提供一個封裝好的 Rollout 運維特征)。這種體驗開發者來說是相當友好的,他既無需花費大量的時間去學習和掌握Istio的使用和配置,也無需關注 Istio 體系和各種雲上托管版 Service Mesh 的差異,徹底解耦廠商鎖定。

4.gif
應用漸進式發布Demo(結合Workflow)

您可以參考 Rollout Demo 實現圖示效果,或參考最佳實踐 基於 Istio 的漸進式發布,體驗完整的微服務漸進式發布和回滾。

以應用為中心的雲資源交付

雲廠商資源已經成為大多數應用開發者生產業務會采用的計算資源,它包括了基礎設施、SaaS 服務、中間件服務、托管服務等。對此,KubeVela 的設計是從“以應用為中心”的視角出發,幫助開發者以完全 Serverless 的方式更好、更方便的管理雲資源,而不是疲於應付各種不同的雲產品和控制台。在實現上,KubeVela 內置集成了 Terraform 來作為雲資源的編排工具,並且能夠以統一的應用模型支持各個雲廠商上百種不同類型雲服務的部署、綁定和管理。

在使用上,我們目前將雲資源分為以下三類:

• 作為組件:比如數據庫、中間件、SaaS 服務等。比如 KubeVela 中的 Alibaba-RDS服務就屬於這種。
• 作為運維特征:比如日志分析、監控可視化、監控報警等服務。
• 作為應用運行基礎設施:比如 Kubernetes 托管集群、SLB 負載均衡、NAS文件存儲服務等。

在后續的版本,KubeVela 會進一步增加更加豐富的雲服務使用場景,對各個雲廠商分散的資源和計算能力進行有效整合,降低開發者的使用門檻和服務觸達路徑,實現資源的復用和有效、安全的回收機制,降低用戶費用。KubeVela 的 Terraform 雲服務管理是目前社區中非常火熱的一個組件,有大量來自北美、歐洲的貢獻者參與其中,非常歡迎大家試用、貢獻和提出需求。

更容易落地的 GitOps 持續交付實踐

KubeVela 作為一個聲明式的應用交付控制平面,天然就可以以 GitOps 的方式進行使用(可單獨使用,也可配合 ArgoCD 等工具),並且能夠為 GitOps 場景提供更多端到端的能力和增強、幫助 GitOps 理念以更加親民和解決實際問題的方式在企業中落地。這些能力包括:

• 定義應用交付工作流(CD 流水線)
• 即:KubeVela 支持在 GitOps 模式中描述過程式的應用交付流程,而不只是簡單的聲明終態;
• 處理部署過程中的各種依賴關系和拓撲結構;
• 在現有各種 GitOps 工具的語義之上提供統一的上層抽象,簡化應用交付與管理過程;
• 統一進行雲服務的聲明、部署和服務綁定;
• 提供開箱即用的交付策略(金絲雀、藍綠發布等);
• 提供開箱即用的混合環境/多集群部署策略(放置規則、集群過濾規則、跨環境 Promotion 等);
• 在多環境交付中提供 Kustomize 風格的 Patch 來描述部署差異,而用戶無需學習任何 Kustomize 本身的細節;
• …… 等等。

使用 KubeVela 踐行 GitOps 理念,請參考 GitOps 最佳實踐。

Kubevela 社區與生態

KubeVela 是一個從第一天就誕生在雲原生社區的開源項目。截止目前,KubeVela 現已被 Salesforce、字節跳動、騰訊、網易游戲等 35+ 家不同行業的領先企業應用在實際生產環境,幫助他們在不同場景下實現更高效的雲原生應用的交付和管理。而 KubeVela 在社區用戶中的大規模實踐,也正在促進 OAM 成為混合雲/多雲/分布式雲領域應用交付的事實標准,並在微軟、Oracle Cloud 等多家國際廠商中被采用。近日,以 OAM 模型為核心的《雲計算開放應用架構》標准文件也已經由阿里雲計算有限公司、中國信息通信研究院等 10 余家單位聯合發起並在“雲原生產業大會”現場發布。

在未來,在雲原生社區和 CNCF 應用交付領域工作組(TAG App Delivery)的共同推動下,KubeVela 將繼續在交付定義標准化、運維能力多樣化、管理體系生態化三個方面發展,真正實現讓混合環境下的應用交付就像我們今天使用 App Store 一樣簡單。我們看到開源社區正在圍繞 KubeVela 的交付模型提出更多標准化組件、運維特征、插件、交付 Step 等能力,也非常歡迎新老社區用戶前往:https://github.com/oam-dev/kubevela/issues/1662 進行登記、讓社區聽到每一位參與者的聲音。

后續版本規划

打造天然面向混合環境的企業應用操作系統、讓開發者享受交付應用的過程,這是 Kubevela 項目的目標和願景:

  • 1.0 版本,KubeVela 實現了基礎的應用交付核心模型,解決了”交付一切“的關鍵能力問題,打造了可編程的應用交付和管理引擎。
  • 1.1 版本,KubeVela 進一步完善了面向多環境應用交付的能力集和工作流,並且讓用戶可以通過命令行進行完整體驗,並且上線了完整的中文文檔。

而在接下來的 1.2 版本,KubeVela 將帶來以應用為中心的控制面板 UI,實現便捷的企業應用組裝、分發、交付流程,提供給開發者更簡單的應用交付體驗,同時覆蓋邊緣應用交付等更多的使用場景。

5.png

更多項目 Roadmap 信息,詳見 Kubevela RoadMap

參考信息

立即安裝使用,請參考文內相關鏈接中的【安裝指南】
您可以通過如下材料了解更多關於 KubeVela 以及 OAM 項目的細節:

  • 項目代碼庫:https://github.com/oam-dev/kubevela 歡迎 Star/Watch/Fork!
  • 項目官方主頁與文檔:https://kubevela.io ,從 1.1 版本開始,已提供中文、英文文檔,更多語言文檔歡迎開發者進行翻譯。
  • 項目釘釘群:23310022;Slack:CNCF #kubevela Channel
  • 加入微信群:請先添加以下 maintainer 微信號,表明進入KubeVela用戶群:
     
    6.png

*文內相關鏈接:
1)最佳實踐文檔:
https://kubevela.io/docs/case-studies/multi-cluster/
2)Rollout Demo:
https://github.com/oamdev/kubevela/tree/master/docs/examples/workflow/canary-rollout
3)基於 Istio 的漸進式發布:
https://kubevela.io/docs/case-studies/canary-blue-green/
4)GitOps 最佳實踐:
https://kubevela.io/docs/case-studies/gitops/
5)Kubevela RoadMap:
https://kubevela.io/docs/roadmap/README/
6)安裝指南:
https://kubevela.io/docs/install/

戳鏈接(https://kubevela.io),查看 KubeVela 項目官方主頁與文檔!!*


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM