云原生 DevOps,模型化应用交付能力的重要性
撰稿:溪洋
審核校對:天元、海珠
編輯&排版:雯燕
云原生正在成為企業(yè)業(yè)務(wù)創(chuàng)新和解決規(guī)模化挑戰(zhàn)的加速器。
云原生帶來的變革絕不限于基礎(chǔ)設(shè)施和應(yīng)用架構(gòu)等技術(shù)層面,更是對于研發(fā)理念、交付流程和 IT 組織方式的變革,也在推進(jìn)企業(yè) IT 組織、流程和文化的變革。在云原生架構(gòu)漸為普及的背后, DevOps 文化及其支撐其落地實(shí)踐的自動化工具與平臺能力,發(fā)揮了關(guān)鍵的價(jià)值。
云原生帶來的研發(fā)與運(yùn)維協(xié)作界面
相較于云原生,DevOps 并不是什么新鮮的事情,其實(shí)踐早已深入企業(yè)現(xiàn)代應(yīng)用程序架構(gòu)。DevOps 強(qiáng)調(diào)團(tuán)隊(duì)間的溝通和快速反饋,通過構(gòu)建自動化的持續(xù)交付(Continuous Delivery)及流水線的應(yīng)用發(fā)布方式,達(dá)到快速響應(yīng)業(yè)務(wù)需求、交付產(chǎn)品和提高交付質(zhì)量的目的。隨著容器技術(shù)在企業(yè)的規(guī)模化應(yīng)用,云計(jì)算可編程基礎(chǔ)設(shè)施和 Kubernetes 聲明式的 API 等能力加速了開發(fā)和運(yùn)維角色的融合。
云原生的大勢所趨使上云成為企業(yè)標(biāo)配,圍繞云原生去定義下一代研發(fā)平臺成為必然,也倒逼著 IT 組織方式進(jìn)一步發(fā)生變化——新的平臺工程團(tuán)隊(duì)開始浮現(xiàn)。在這樣的背景下,如何在云原生的環(huán)境下更高效地實(shí)踐 DevOps 成為一個新的課題和訴求。
下一代 DevOps 平臺演進(jìn)趨勢
伴隨著 Kubernetes 生態(tài)從底層到應(yīng)用層能力的逐步完善,平臺工程團(tuán)隊(duì)可以更方便地基于業(yè)務(wù)場景和終端用戶實(shí)際需求來構(gòu)建不同的應(yīng)用平臺,卻也為上層應(yīng)用開發(fā)者帶來了挑戰(zhàn)和困擾。
Kubernetes 生態(tài)本身的能力池固然豐富,但是社區(qū)里卻并沒有一個可擴(kuò)展的、方便快捷的方式,為云原生架構(gòu)下混合、分布式的部署環(huán)境引入一致的上層抽象來為應(yīng)用交付進(jìn)行建模。應(yīng)用交付過程上層抽象能力的缺失,使 Kubernetes 的復(fù)雜性無法做到向應(yīng)用開發(fā)人員屏蔽。
下圖展示了一個云原生下的 DevOps 流水線的典型流程。首先是代碼的開發(fā),代碼托管到 Github,再接入單元測試的工具 Jenkins,此時基本研發(fā)已完成。再接著到鏡像的構(gòu)建,涉及到配置、編排等。云原生中可以用 HELM 打包應(yīng)用。打包好的應(yīng)用部署到各個環(huán)境中。但整個過程中會面臨很多挑戰(zhàn)。
首先,在不同的環(huán)境需要不同的運(yùn)維能力。其次,配置的過程中要創(chuàng)建云上數(shù)據(jù)庫,需要另外打開一個控制臺來創(chuàng)建數(shù)據(jù)庫。還需要配置負(fù)載均衡。在應(yīng)用啟動以后還需要配置額外的功能,包括日志、策略、安全防護(hù)等等。可以發(fā)現(xiàn),云資源和 DevOps 平臺體驗(yàn)是割裂的,里面充斥著借助外部平臺創(chuàng)建的過程。這對新手來說是非常痛苦的。
在容器出現(xiàn)之前的傳統(tǒng)的 DevOps 模式需要不同的流程和工作流。容器技術(shù)是以 DevOps 的視角構(gòu)建的。抽象的容器所提供的功能會影響我們?nèi)绾慰创?DevOps,因?yàn)殡S著微服務(wù)的出現(xiàn),傳統(tǒng)的架構(gòu)開發(fā)將發(fā)生變化。這意味著要遵循在 Kubernetes 上運(yùn)行容器的最佳實(shí)踐,并將 DevOps 的理念向 GitOps、DevSecOps 擴(kuò)展,使云原生下的 DevOps 更加高效、安全、穩(wěn)定、可靠。
OAM(Open Application Model) 試圖提供一種云原生應(yīng)用的建模語言,以實(shí)現(xiàn)研發(fā)和運(yùn)維的視角分離,使 Kubernetes 的復(fù)雜性無需透傳至研發(fā),運(yùn)維通過提供模塊化、可移植、可擴(kuò)展的特性組件,支撐各種復(fù)雜的應(yīng)用交付場景,從而實(shí)現(xiàn)云原生應(yīng)用交付的敏捷性和平臺無關(guān)性。其在 Kubernetes 上的完整實(shí)現(xiàn) KubeVela,已經(jīng)被業(yè)界認(rèn)為是構(gòu)建下一代持續(xù)交付方式及 DevOps 實(shí)踐的核心工具。
最近,阿里云在 2021 云棲大會上發(fā)布了云效應(yīng)用交付平臺 AppStack ,旨在進(jìn)一步加速企業(yè)云原生 DevOps 規(guī)模化落地。據(jù)云效應(yīng)用交付平臺 AppStack 研發(fā)團(tuán)隊(duì)介紹,其在設(shè)計(jì)之初就全面支持原生 Kubernetes 和 OAM/KubeVela ,以實(shí)現(xiàn)對應(yīng)用部署架構(gòu)無綁定、無侵入,使企業(yè)不用擔(dān)心遷移以及技術(shù)改造成本。這也標(biāo)志著 KubeVela 正在成為云原生時代應(yīng)用交付領(lǐng)域的重要基石。
基于 KubeVela,構(gòu)建以應(yīng)用為中心的交付系統(tǒng)
在云原生理念迅速普及的今天,混合環(huán)境部署(混合云/多云/分布式云/邊緣)已經(jīng)成為了大多數(shù)企業(yè)應(yīng)用、SaaS 服務(wù)、應(yīng)用持續(xù)交付平臺的必然選擇,而云原生技術(shù)的發(fā)展趨勢也正在朝著“一致的、跨云、跨環(huán)境的的應(yīng)用交付”不斷邁進(jìn)。
KubeVela 作為一個開箱即用、面向現(xiàn)代微服務(wù)架構(gòu)的應(yīng)用交付與管理平臺,已經(jīng)正式發(fā)布 1.1 版本。在此版本中,KubeVela 更加聚焦面向混合環(huán)境的應(yīng)用交付流程,帶來了多集群交付、交付流程定義、灰度發(fā)布、公有云資源接入等多個開箱即用的能力和更加友好的用戶體驗(yàn),幫助開發(fā)者從“靜態(tài)配置、模板、膠水代碼”的初級階段,直接升級至“自動化、聲明式、統(tǒng)一模型、天然面向多環(huán)境”的下一代以工作流為核心的交付體驗(yàn)當(dāng)中。
基于 KubeVela,用戶可以非常輕松地處理以下場景:
多環(huán)境、多集群應(yīng)用交付
面向 Kubernetes 的多環(huán)境、多集群交付已是一個標(biāo)準(zhǔn)性需求。從 1.1 版本開始,KubeVela 不僅實(shí)現(xiàn)了多集群的應(yīng)用交付,并且既可以獨(dú)立工作直接納管多個集群,也可以集成 OCM、Karmada 等各類多集群管理工具來進(jìn)行更復(fù)雜的交付動作。在多集群交付策略的基礎(chǔ)上,用戶還可以通過定義 Workflow 來控制交付到不同集群的順序、條件等工作流步驟。
定義交付工作流(Workflow)
Workflow 的具體使用場景則很多,比如在多環(huán)境應(yīng)用交付場景中,用戶可以定義不同的環(huán)境交付的順序和前置條件等 。KubeVela 的工作流是面向 CD 過程的,同時也是聲明式的,所以它既可以作為 CD 系統(tǒng)直接同 CI 系統(tǒng)(比如 Jenkins 等)對接,也可以嵌入到現(xiàn)有 CI/CD 體系中作為增強(qiáng)和補(bǔ)充,落地方式非常靈活。
在模型上,Workflow 是由一系列 Step 組成的,而在實(shí)現(xiàn)上,每一個 Step 則是一個獨(dú)立的能力模塊,由其具體的類型和參數(shù)來決定其具體步驟的能力。在 1.1 版本中,KubeVela 內(nèi)置的 Step 已經(jīng)比較豐富,也非常容易擴(kuò)展,幫助用戶輕松對接已有的平臺能力,做到無縫遷移。
以應(yīng)用為中心的云資源交付
KubeVela 的設(shè)計(jì)是從“以應(yīng)用為中心”的視角出發(fā),因此可以幫助開發(fā)者以完全 Serverless 的方式更好、更方便的管理云資源,而不是疲于應(yīng)付各種不同的云產(chǎn)品和控制臺。在實(shí)現(xiàn)上,KubeVela 內(nèi)置集成了 Terraform 來作為云資源的編排工具,并且能夠以統(tǒng)一的應(yīng)用模型支持各個云廠商上百種不同類型云服務(wù)的部署、綁定和管理。
在使用上,目前 KubeVela 將云資源分為以下三類:
- 作為組件:比如數(shù)據(jù)庫、中間件、SaaS 服務(wù)等。比如 KubeVela 中的 Alibaba-RDS 服務(wù)就屬于這種
- 作為運(yùn)維特征:比如日志分析、監(jiān)控可視化、監(jiān)控報(bào)警等服務(wù)
- 作為應(yīng)用運(yùn)行基礎(chǔ)設(shè)施:比如 Kubernetes 托管集群、SLB 負(fù)載均衡、NAS文件存儲服務(wù)等
更容易落地的 GitOps 持續(xù)交付實(shí)踐
KubeVela 作為一個聲明式的應(yīng)用交付控制平面,天然就可以以 GitOps 的方式進(jìn)行使用(可單獨(dú)使用,也可配合 ArgoCD 等工具),并且能夠?yàn)?GitOps 場景提供更多端到端的能力和增強(qiáng)、幫助 GitOps 理念以更加親民和解決實(shí)際問題的方式在企業(yè)中落地。這些能力包括:
- 定義應(yīng)用交付工作流(CD 流水線)
- 處理部署過程中的各種依賴關(guān)系和拓?fù)浣Y(jié)構(gòu)
- 在現(xiàn)有各種 GitOps 工具的語義之上提供統(tǒng)一的上層抽象,簡化應(yīng)用交付與管理過程
- 統(tǒng)一進(jìn)行云服務(wù)的聲明、部署和服務(wù)綁定
- 提供開箱即用的交付策略(金絲雀、藍(lán)綠發(fā)布等)
- 提供開箱即用的混合環(huán)境/多集群部署策略(放置規(guī)則、集群過濾規(guī)則、跨環(huán)境Promotion 等)
- 在多環(huán)境交付中提供 Kustomize 風(fēng)格的 Patch 來描述部署差異,而用戶無需學(xué)習(xí)任何 Kustomize 本身的細(xì)節(jié)
- ……
KubeVela 1.2 版本即將重磅發(fā)布
持續(xù)打造天然面向混合環(huán)境的企業(yè)應(yīng)用操作系統(tǒng)、讓開發(fā)者享受交付應(yīng)用的過程,這是 Kubevela 項(xiàng)目的目標(biāo)和愿景。在接下來的 1.2 版本,KubeVela 將帶來以應(yīng)用為中心的控制面板 UI,實(shí)現(xiàn)便捷的企業(yè)應(yīng)用組裝、分發(fā)、交付流程,提供給開發(fā)者更簡單的應(yīng)用交付體驗(yàn),同時覆蓋邊緣應(yīng)用交付等更多的使用場景。
KubeVela 1.2 版本將在 2021 年 12 月舉辦的 KubeCon China 上重磅發(fā)布,敬請持續(xù)關(guān)注 KubVela 社區(qū)以及阿里巴巴云原生動態(tài)!
您可以通過如下方式了解更多關(guān)于 KubeVela 以及 OAM 項(xiàng)目的細(xì)節(jié):
1)項(xiàng)目代碼庫:
github.com/oam-dev/kubevela
歡迎 Star/Watch/Fork!
2)項(xiàng)目官方主頁與文檔:
kubevela.io/
從 1.1 版本開始,已提供中文、英文文檔,更多語言文檔歡迎開發(fā)者進(jìn)行翻譯。
3)項(xiàng)目釘釘群:23310022;Slack:CNCF #kubevela Channel
4)加入微信群:請先掃碼添加以下 maintainer 微信號,表明進(jìn)入 KubeVela 用戶群:
總結(jié)
以上是生活随笔為你收集整理的云原生 DevOps,模型化应用交付能力的重要性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字原生,创新生长|企业如何打造数字创新
- 下一篇: 今年双 11,阿里业务 100% 上云,