智東西(公眾號(hào):zhidxcom)
作者 | ZeR0
編輯 | 漠影
智東西4月20日消息,從今年起,知名Linux發(fā)行版CentOS 8停更,繼承CentOS衣缽的CentOS Stream將在未來(lái)會(huì)承擔(dān)CentOS的功能。
CentOS Stream是紅帽在2019年9月推出的企業(yè)Linux(RHEL)的上游開(kāi)源開(kāi)發(fā)平臺(tái)。紅帽稱這一版本可縮短生態(tài)系統(tǒng)開(kāi)發(fā)人員的反饋回路,使開(kāi)發(fā)者搶先體驗(yàn)到RHEL新版本,增強(qiáng)迭代時(shí)效性,以及下一個(gè)小版本RHEL做貢獻(xiàn)。
近日,在直播欄目《八點(diǎn)一“課”,紅帽企業(yè)開(kāi)源講堂》第二期中,紅帽首席架構(gòu)師張家駒解讀了CentOS Stream代碼來(lái)源、編譯構(gòu)建、持續(xù)集成和測(cè)試驗(yàn)證等諸多細(xì)節(jié),講解如何使用容器基礎(chǔ)鏡像RHUBI,并回答了一些業(yè)界普遍關(guān)心的CentOS相關(guān)疑問(wèn)。
一、CentOS Stream:RHEL的持續(xù)交付版本
“CentOS Stream取代CentOS是技術(shù)、社區(qū)以及生態(tài)發(fā)展的必然趨勢(shì)?!奔t帽首席架構(gòu)師張家駒說(shuō),CentOS? Stream的定位是RHEL的一個(gè)持續(xù)交付的版本。
張家駒分享道,紅帽最早提出企業(yè)級(jí)Linux的概念,企業(yè)級(jí)Linux的一大特點(diǎn)是要實(shí)現(xiàn)一個(gè)操作系統(tǒng)長(zhǎng)生命周期的維護(hù)管理,也就是說(shuō)在上游社區(qū),沒(méi)有歷史包袱、不斷向前發(fā)展、可以自主的實(shí)現(xiàn)新功能,而不用過(guò)多考慮與老版本的兼容性的情況下,企業(yè)級(jí)產(chǎn)品既要保證遵從上游社區(qū),同時(shí)又要考慮兼容性、長(zhǎng)期穩(wěn)定的應(yīng)用程序接口安全性等等。

如圖,F(xiàn)edora是上游,更多面向桌面或個(gè)人用戶場(chǎng)景,開(kāi)源社區(qū)有新的特性,會(huì)先出現(xiàn)在Fedora上。RHEL是下游,CentOS Stream是RHEL的持續(xù)交付版本,CentOS Stream和RHEL的功能集是相同的,只是CentOS Stream向社區(qū)開(kāi)放了,提供了廣大開(kāi)源社區(qū)向RHEL貢獻(xiàn)的路徑。
RHEL的全職開(kāi)發(fā)者也會(huì)把代碼提交到CentOS Stream。無(wú)論是CentOS Stream還是RHEL,都要經(jīng)過(guò)相同的質(zhì)量保證體系,才能被發(fā)布。

張家駒認(rèn)為,相比中游,CentOS Stream更接近于下游,將它稱作“滾動(dòng)更新的版本”的表述也是不準(zhǔn)確的。
每次滾動(dòng)更新可能導(dǎo)致新老版本不兼容,比如基于開(kāi)源做二次開(kāi)發(fā),要在社區(qū)上游版本選擇一個(gè)版本作為基線,之后如果發(fā)現(xiàn)不滿足業(yè)務(wù)需求,就要針對(duì)客戶需求做一些改動(dòng)。而當(dāng)過(guò)段時(shí)間要發(fā)一個(gè)新版本時(shí),之前作為基線的上游發(fā)生了很大變化,這時(shí)需做一個(gè)抉擇,是丟掉自己的改動(dòng)、基于新的上游版本把原來(lái)做好的東西再重新做一遍,還是基于自己的版本,把上游社區(qū)新的東西反向移植回來(lái)?
紅帽的CentOS Stream和RHEL是后者,而滾動(dòng)更新既不是前者,也不是后者,相當(dāng)于直接把上游版本拿過(guò)來(lái)用。
二、CentOS不存在斷供,CentOS Stream穩(wěn)定性不輸RHEL
對(duì)于許多用戶關(guān)注的CentOS是否存在“斷供”風(fēng)險(xiǎn)問(wèn)題,張家駒回應(yīng)稱:“不存在斷供?!?/p>
“CentOS Stream的穩(wěn)定性實(shí)際上是跟RHEL是一致的。”他談道,CentOS Stream和RHEL代碼最初是從Fedora里面拿下來(lái),早期bootstrap階段兩條線交錯(cuò),到pre-release階段就變成兩條平行線了,此時(shí)代碼完全一致。

進(jìn)入開(kāi)發(fā)流程,RHEL和CentOS Stream用的是同一份代碼。也就是同一份代碼進(jìn)到了兩個(gè)不同的git,一個(gè)是CentOS Stream的,一個(gè)是RHEL的,經(jīng)過(guò)一系列的測(cè)試后,最終產(chǎn)生成品。

2017年前,RHEL研發(fā)流程類似于瀑布式開(kāi)發(fā),整個(gè)過(guò)程可能要經(jīng)歷2~3個(gè)月,有很多弊端,開(kāi)發(fā)人員經(jīng)常因?yàn)橐獫M足大版本的協(xié)同,而影響了他當(dāng)前正在做的一些開(kāi)發(fā)工作。
紅帽在RHEL研發(fā)中引入了CI/CD、DevOps的開(kāi)發(fā)方式。紅帽研發(fā)內(nèi)部有一個(gè)DevOps團(tuán)隊(duì),負(fù)責(zé)為內(nèi)部搭建這種平臺(tái)、框架,讓它能夠很好的支撐紅帽不同的產(chǎn)品線以DevOps的方式進(jìn)行開(kāi)發(fā)。
這種快速迭代的開(kāi)發(fā)方式也類似于開(kāi)源社區(qū)倡導(dǎo)的勤發(fā)布、早發(fā)布,只要做提交,不能是隨隨便便把代碼提交上去,而要經(jīng)過(guò)很多嚴(yán)格的、預(yù)設(shè)好質(zhì)量保證的測(cè)試,并不斷完善測(cè)試集。

gate可以被理解為質(zhì)量保證的一個(gè)關(guān)口,只有經(jīng)過(guò)gate這一關(guān),質(zhì)量才滿足RHEL產(chǎn)品發(fā)布要求,只有滿足了RHEL的質(zhì)量標(biāo)準(zhǔn),代碼才可以被提交到CentOS Stream的git tree。
可以看到,CentOS Stream和RHEL走過(guò)了相同的質(zhì)量保證步驟,因此它們的質(zhì)量、穩(wěn)定性、可靠性是一致的。

CentOS Stream不是RHEL的beta測(cè)試版,其開(kāi)發(fā)方式已經(jīng)從傳統(tǒng)轉(zhuǎn)向敏捷。beta測(cè)試版如果有些功能不穩(wěn)定,這些功能會(huì)被最終拿掉。而CentOS Stream里的東西要經(jīng)過(guò)RHEL的CI/CD,是和RHEL同步發(fā)展的,RHEL的每一次更新與版本迭代,都通過(guò)CentOS Stream向大家開(kāi)放。
基于RHEL的UBI容器基礎(chǔ)鏡像是免費(fèi)的,使用該基礎(chǔ)鏡像打包應(yīng)用時(shí),這個(gè)基礎(chǔ)鏡像已經(jīng)配置了默認(rèn)可免費(fèi)使用的軟件包源,里面的軟件包都來(lái)源于RHEL,而不是CentOS。
結(jié)語(yǔ):遷移低門(mén)檻,兩條命令即可平滑遷移
CentOS 8停更了,怎么辦?對(duì)此,張家駒展示了兩條命令。只要敲這兩條命令,就能實(shí)現(xiàn)無(wú)縫遷移,將CentOS操作系統(tǒng)變成CentOS Stream 8。

當(dāng)然,如果此前系統(tǒng)運(yùn)行著非常關(guān)鍵的企業(yè)級(jí)應(yīng)用,在遷移前做備份、快照等操作不足為過(guò)。對(duì)于此類客戶,紅帽也提供有一套完整的遷移方案。比如一旦某個(gè)地方出問(wèn)題,系統(tǒng)可以回溯到之前的版本。
隨著更多用戶遷移至CentOS Stream,這個(gè)平臺(tái)將開(kāi)始繼承CentOS的衣缽,為RHEL生態(tài)系統(tǒng)提供持續(xù)的創(chuàng)新動(dòng)力。