近十年來,信息技術(shù)領(lǐng)域在經(jīng)歷一場技術(shù)大變革,這場變革正將我們由傳統(tǒng)IT架構(gòu)及其所支撐的臃腫應(yīng)用系統(tǒng)時(shí)代,遷移至云原生架構(gòu)及其所支撐的敏捷應(yīng)用系統(tǒng)時(shí)代。在這場變革中,新技術(shù)的出現(xiàn)、更新和淘汰之迅速,以及新技術(shù)的架構(gòu)集成度、復(fù)雜度之高,都是前所未有的。
從虛擬化到云計(jì)算,從虛擬機(jī)到容器,從微服務(wù)到無服務(wù)器計(jì)算,技術(shù)的持續(xù)演進(jìn)和推陳出新在不斷重構(gòu)企業(yè)的組織文化和商業(yè)邏輯的同時(shí),也在推動(dòng)企業(yè)朝著數(shù)字化、智能化時(shí)代邁進(jìn)。
但是,頻繁更新的技術(shù)及其復(fù)雜程度給IT從業(yè)者,尤其是企業(yè)開發(fā)人員,也帶來了空前的挑戰(zhàn),如何在保證業(yè)務(wù)高速發(fā)展的前提下,仍然保持持續(xù)創(chuàng)新的能力和對(duì)眾多新技術(shù)的學(xué)習(xí)研究、掌握應(yīng)用的能力,是每位IT從業(yè)者都在思考和權(quán)衡的問題。此外,如何從復(fù)雜多變的軟件技術(shù)體系中把握住未來的技術(shù)趨勢,并將之提前布局應(yīng)用到業(yè)務(wù)創(chuàng)新領(lǐng)域,以便掌握競爭先機(jī),這是每個(gè)企業(yè)的技術(shù)負(fù)責(zé)人必須考慮的問題。平臺(tái)技術(shù)和開源社區(qū)為我們提供了解決問題的途徑,而這也正是我們選擇OpenShift開源PaaS平臺(tái)的原因之一。
OpenShift及其發(fā)展簡史
OpenShift是由RedHat推出的企業(yè)級(jí)Kubernetes平臺(tái),其主要目標(biāo)是構(gòu)建以O(shè)CI(Open Container Initiative)容器封裝和Kubernetes容器集群管理為核心,對(duì)應(yīng)用生命周期進(jìn)行管理并實(shí)現(xiàn)DevOps工具鏈等完整功能的開源容器PaaS平臺(tái)。OpenShift對(duì)應(yīng)用的持續(xù)開發(fā)、多租戶部署和安全管控等進(jìn)行了優(yōu)化,并在Kubernetes的基礎(chǔ)上增加了以開發(fā)人員和操作管理為中心的工具集,以便實(shí)現(xiàn)應(yīng)用程序的快速開發(fā)、輕松部署、簡單擴(kuò)展和全生命周期的維護(hù)。OpenShift在上游開源社區(qū)的版本名稱是OKD(最初叫Origin),OKD版本與Kubernetes發(fā)行版本相對(duì)應(yīng),如OKD 1.10對(duì)應(yīng)Kubernetes 1.10。
需要指出的是,OpenShift并非在誕生之初就是以Docker和Kubernetes為核心的PaaS平臺(tái)。OpenShift誕生于2011年,主要依賴于Linux容器來部署和運(yùn)行用戶應(yīng)用程序,在OpenShift的v1和v2版本中,使用的一直是RedHat自己特定于專有平臺(tái)的容器運(yùn)行時(shí)和容器編排引擎。早期的OpenShift使用一種稱為“Gear”的專有容器技術(shù),并通過一種稱為“Cartridge”的技術(shù)來制作容器模板。隨著2013年Docker容器技術(shù)的問世和流行,RedHat開始與Docker公司合作,并在2014年8月宣布將在OpenShift v3版本中采用Docker容器。隨著Docker容器技術(shù)的普及,以Mesos、Docker Swarm和Kubernetes為主的大規(guī)模容器集群編排調(diào)度引擎開始出現(xiàn),RedHat也逐漸意識(shí)到容器編排引擎在OpenShift中的重要性,并在進(jìn)行了一系列調(diào)研之后選擇了Kubernetes作為OpenShift v3版本的調(diào)度引擎。
2015年,對(duì)于RedHat來說具有劃時(shí)代意義的OpenShift v3版本誕生,由OpenShift v1和v2版本中基于“Gear”和“Cartridge”的技術(shù),完全重構(gòu)為v3版本中基于Docker和Kubernetes的技術(shù),OpenShift v3開始以標(biāo)準(zhǔn)和開放的姿態(tài)領(lǐng)跑PaaS。在Kubernetes之上,OpenShift v3又引入了強(qiáng)大的用戶界面,通過源代碼到鏡像(Source-to-Image,S2I)和管道(Pipeline)技術(shù)快速創(chuàng)建和部署應(yīng)用程序,OpenShift v3版本迅速獲得了大量開發(fā)者,并成為PaaS當(dāng)仁不讓的王者。然而,OpenShift的發(fā)展并未停止,在2018年完成對(duì)CoreOS的收購,對(duì)Service Mesh(Istio)和Serverless(Knative)等技術(shù)的集成,并使用Kubernetes Operator來實(shí)現(xiàn)應(yīng)用程序管理的自動(dòng)化之后,RedHat在2019年發(fā)布了OpenShift v4版本(如圖1-11所示)。OpenShift v4版本的問世,意味著全棧融合PaaS時(shí)代的到來,向上通過Operator實(shí)現(xiàn)應(yīng)用全生命周期的自動(dòng)化管理,向下通過CoreOS實(shí)現(xiàn)基礎(chǔ)設(shè)施的自動(dòng)化管理。也許未來,裸機(jī)以上都將在OpenShift的統(tǒng)管之下!
OpenShift發(fā)展簡史
OpenShift與云原生架構(gòu)
在云原生架構(gòu)時(shí)代,我們?cè)谡剶?shù)字化轉(zhuǎn)型的時(shí)候,實(shí)質(zhì)上就是在談組織架構(gòu)、應(yīng)用流程和基礎(chǔ)架構(gòu)設(shè)施的轉(zhuǎn)型。近十年來,我們的開發(fā)流程從瀑布到敏捷再到DevOps,應(yīng)用架構(gòu)從單體到多層再到微服務(wù)架構(gòu),軟件交付與封裝經(jīng)歷了物理機(jī)、虛擬機(jī)再到容器,應(yīng)用運(yùn)行的基礎(chǔ)設(shè)施也從傳統(tǒng)數(shù)據(jù)中心到主機(jī)托管再到云計(jì)算(如圖1-12所示),技術(shù)的變革在多個(gè)維度同時(shí)進(jìn)行,云計(jì)算、DevOps、容器、微服務(wù)架構(gòu)等技術(shù)的成熟與普及,事實(shí)上也預(yù)示著云原生時(shí)代的到來。
在云原生時(shí)代,企業(yè)應(yīng)該如何構(gòu)建自己的云原生平臺(tái),以支撐其數(shù)字化轉(zhuǎn)型過程中的應(yīng)用云化遷移呢?企業(yè)若要從下至上地構(gòu)建自己專屬的云原生平臺(tái),其過程將是極其復(fù)雜的。我們以完全采用開源技術(shù)棧構(gòu)建云原生平臺(tái)為例,首先需要通過Linux、OpenStack、Ceph等開源系統(tǒng)和集群軟件構(gòu)建IaaS層,然后再基于Kubernetes和Docker技術(shù)來構(gòu)建PaaS層。事實(shí)上難度是在PaaS層的構(gòu)建上,因?yàn)樵赑aaS層,基于Kubernetes的功能,我們還需要自己實(shí)現(xiàn)對(duì)多語言運(yùn)行環(huán)境、各類中間件、數(shù)據(jù)庫等服務(wù)編目的支持,實(shí)現(xiàn)應(yīng)用的自動(dòng)構(gòu)建與部署、基于CI/CD和DevOps的應(yīng)用全生命周期管理,實(shí)現(xiàn)鏡像倉庫、日志、監(jiān)控、服務(wù)追蹤、安全和多租戶等集群管理功能,實(shí)現(xiàn)基于Web的集群管理和自助服務(wù)的極好用戶體驗(yàn),實(shí)現(xiàn)對(duì)諸如Istio等微服務(wù)架構(gòu)和Knative等Serverless應(yīng)用架構(gòu)的支持。而這一切的實(shí)現(xiàn),對(duì)于很多企業(yè)而言,將會(huì)是個(gè)極大的挑戰(zhàn)。因?yàn)檫@需要集成來自眾多開源社區(qū)的軟件,而每一個(gè)開源軟件的應(yīng)用都意味著極大的學(xué)習(xí)成本、時(shí)間成本以及不確定性風(fēng)險(xiǎn)。然而,驅(qū)動(dòng)開源社區(qū)、集成開源技術(shù)正是OpenShift的價(jià)值所在。如圖1-13所示,RedHat以O(shè)penShift為中心,以其多年在開源社區(qū)的耕耘為基礎(chǔ),以開源方式集成了用戶所能想到和用到的各種開源軟件。從這個(gè)層面上來講,我們可以認(rèn)為OpenShift本身就是個(gè)集成創(chuàng)新引擎。
信息技術(shù)的變革
OpenShift生態(tài)圈集成創(chuàng)新引擎
因此,借助OpenShift構(gòu)建企業(yè)級(jí)云原生平臺(tái)將會(huì)事半功倍。因?yàn)樵谧钚碌腛penShift v4版本中,借助不可變?nèi)萜鞑僮飨到y(tǒng)CoreOS,裸機(jī)以上部分,OpenShift已完全實(shí)現(xiàn)自動(dòng)化接管。當(dāng)然,OpenShift也支持在公有云、私有云和混合云上部署實(shí)現(xiàn),目前已支持在AWS、Azure、GCP、OpenStack和vSphere等公有云和私有云平臺(tái)上的自動(dòng)部署。因此,借助企業(yè)級(jí)開源PaaS平臺(tái)OpenShift,企業(yè)云原生平臺(tái)的構(gòu)建將可一步到位。如圖1-14所示,OpenShift已基本集成并實(shí)現(xiàn)了云原生平臺(tái)所需的全部軟件和功能。
OpenShift構(gòu)建企業(yè)云原生平臺(tái)
OpenShift與Kubernetes
Kubernetes是主流的容器編排引擎,也是CNCF孵化出的最成功的項(xiàng)目。在一定程度上,可以認(rèn)為OpenShift的成功離不開Kubernetes社區(qū)的支持,或者說正是Kubernetes的成功賦予了OpenShift極強(qiáng)的生命力,Kubernetes已成為OpenShift不可分割的一部分。前文提到,OpenShift v3以后的版本都是基于CRI容器技術(shù)和Kubernetes重構(gòu)的版本,那么OpenShift與Kubernetes之間究竟有什么關(guān)系?企業(yè)為什么不直接使用Kubernetes而要選擇使用OpenShift呢?或者說選擇OpenShift的企業(yè)用戶將會(huì)獲得什么好處呢?本節(jié)中我們將就這幾個(gè)問題進(jìn)行重點(diǎn)討論,以消除很多用戶對(duì)于OpenShift和Kubernetes的困惑。
首先,我們要清楚OpenShift更偏向于一個(gè)產(chǎn)品,而Kubernetes是一個(gè)開源項(xiàng)目。這就意味著OpenShift在安全性、易用性、多租戶和用戶體驗(yàn)等方面必然優(yōu)于Kubernetes,這是一個(gè)產(chǎn)品區(qū)別于一個(gè)開源項(xiàng)目最明顯的地方(OpenShift企業(yè)級(jí)功能特性如圖1-15所示)。舉一個(gè)比較直觀的例子,OpenShift 的用戶接口界面體驗(yàn)要遠(yuǎn)優(yōu)于Kubernetes原生界面。OpenShift的商業(yè)產(chǎn)品叫作OpenShift容器平臺(tái)(OpenShift Container Platform,OCP),通過訂閱RedHat的OCP服務(wù),企業(yè)用戶可以獲得來自RedHat的專業(yè)服務(wù)和支持,而如果使用Kubernetes,就只能獲取社區(qū)的技術(shù)支持,這是很多企業(yè)用戶在進(jìn)行技術(shù)選型時(shí)的一個(gè)重要考慮因素。另外,OpenShift也提供了開源版本OKD,OKD具有與商業(yè)版本類似的功能,只是RedHat不提供技術(shù)支持和服務(wù),用戶需要自己對(duì)OKD有較為深入的理解。
OpenShift企業(yè)級(jí)功能特性
其次,OpenShift發(fā)行的每個(gè)版本與Kubernetes基本上是對(duì)應(yīng)的,Kubernetes每年大概發(fā)行4個(gè)版本,與之對(duì)應(yīng)的OpenShift版本通常會(huì)滯后1到3個(gè)月發(fā)行,在這段時(shí)間內(nèi)RedHat會(huì)對(duì)最新的Kubernetes版本進(jìn)行測試,并在缺陷(Bug)和性能問題修復(fù)后,集成各種經(jīng)過驗(yàn)證的中間件服務(wù)和功能軟件,如用于CI/CD管道的Jenkins、用于監(jiān)控的Prometheus、用于可視化的Grafana、服務(wù)網(wǎng)格Istio、無服務(wù)器計(jì)算Knative等。所以,OpenShift在穩(wěn)定性和軟件集成度上要遠(yuǎn)優(yōu)于直接使用Kubernetes。
最后,雖然OpenShift是基于Kubernetes實(shí)現(xiàn)的,但是OpenShift也會(huì)反饋并驅(qū)動(dòng)Kubernetes的發(fā)展。OpenShift的產(chǎn)品屬性決定了其目標(biāo)用戶是企業(yè)而非個(gè)人,因此OpenShift中很多企業(yè)級(jí)的需求和功能最終也會(huì)反饋到Kubernetes社區(qū)中,如Kubernetes中的Ingress、Deployment的部分功能實(shí)現(xiàn)就分別來自O(shè)penShift中的Route和Deployment Configurations。另外,Kubernetes中基于角色的訪問控制(RBAC)功能也源自O(shè)penShift。所以說,就企業(yè)用戶而言,OpenShift有更多適合企業(yè)使用的功能,而Kubernetes通常需要在企業(yè)用戶反饋后才能開發(fā)出這些功能。OpenShift的產(chǎn)品屬性決定了其會(huì)主動(dòng)滿足企業(yè)用戶需求,而Kubernetes的項(xiàng)目屬性決定了其是被動(dòng)響應(yīng)企業(yè)用戶需求。
總體而言,從功能上來看,Kubernetes具備的功能特性O(shè)penShift一定具備,但是OpenShift具有的某些企業(yè)級(jí)功能特性Kubernetes卻不一定擁有。從集成度上來看,OpenShift是基于Kubernetes的高度集成產(chǎn)品,如果將OpenShift看成操作系統(tǒng),那么Kubernetes就是這個(gè)系統(tǒng)的內(nèi)核。系統(tǒng)極客只需安裝內(nèi)核,然后自己編譯安裝需要的依賴軟件,也能運(yùn)行應(yīng)用程序,但是對(duì)于普通用戶而言,一個(gè)僅有內(nèi)核系統(tǒng)的使用成本和代價(jià)都是極高的。簡單來說,Openshift是一個(gè)用于構(gòu)建、部署和智能化管理生產(chǎn)環(huán)境中Kubernetes應(yīng)用程序的完整平臺(tái),通過OpenShift這個(gè)完整的PaaS平臺(tái),我們即可一步到位地邁向云原生時(shí)代!
總 結(jié)
身處技術(shù)大變革的時(shí)代,是我們這代技術(shù)人的幸運(yùn),卻也是極大的挑戰(zhàn)!在短暫的時(shí)間里,我們要以有限的精力應(yīng)對(duì)復(fù)雜、迅速的技術(shù)大變遷,技術(shù)更新迭代令人應(yīng)接不暇。在這個(gè)技術(shù)頻繁更新的時(shí)代,抓住時(shí)代脈搏、洞察技術(shù)演變背后的本質(zhì)、做到以不變的能力應(yīng)萬變的技術(shù)、快速集成新一代技術(shù)以取得市場競爭優(yōu)勢,是企業(yè)數(shù)字化轉(zhuǎn)型的前提和定力保障。云計(jì)算發(fā)展至今,PaaS平臺(tái)已衍生出更多、更廣和更深層次的內(nèi)涵,PaaS是接下來的10年云計(jì)算發(fā)展的重要方向,是企業(yè)技術(shù)中臺(tái)的基石,也是企業(yè)數(shù)字化轉(zhuǎn)型的必由之路。
本章從多個(gè)維度介紹了PaaS平臺(tái)在云計(jì)算時(shí)代企業(yè)數(shù)字化轉(zhuǎn)型過程中的重要作用。作為云計(jì)算三大模式中的后來居上者,PaaS服務(wù)隨著容器技術(shù)、編排技術(shù)和微服務(wù)架構(gòu)等云原生技術(shù)理念的普及應(yīng)用,已基本實(shí)現(xiàn)對(duì)復(fù)雜信息系統(tǒng)的多層次全抽象,實(shí)現(xiàn)了裸機(jī)以上、代碼以下全基礎(chǔ)設(shè)施的抽象沉淀。借助PaaS強(qiáng)大的抽象賦能和自動(dòng)化管理能力,廣大開發(fā)者的生產(chǎn)力得以從復(fù)雜基礎(chǔ)架構(gòu)設(shè)施中釋放出來,他們可以更加專注于業(yè)務(wù)創(chuàng)新和功能邏輯的實(shí)現(xiàn)。企業(yè)借助云原生PaaS,將可快速實(shí)現(xiàn)微服務(wù)架構(gòu)、形成DevOps文化、打造中臺(tái)戰(zhàn)略、加速數(shù)字化轉(zhuǎn)型,并最終走進(jìn)數(shù)字化和智能化時(shí)代。
作為云原生PaaS的杰出代表,相比原生的Kubernetes項(xiàng)目,OpenShift具有更強(qiáng)大的集成創(chuàng)新能力和諸多企業(yè)級(jí)功能特性,是云計(jì)算發(fā)展至深水區(qū)后全棧融合云的集大成者。借助OpenShift,企業(yè)可一站式構(gòu)建自己專屬的云原生PaaS平臺(tái),進(jìn)而為企業(yè)數(shù)字化轉(zhuǎn)型提供技術(shù)底座和創(chuàng)新原動(dòng)力。
本文節(jié)選自《OpenShift云原生架構(gòu):原理與實(shí)踐》,經(jīng)出版方授權(quán)發(fā)布。