您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)kubernetes中Istio實(shí)現(xiàn)金絲雀發(fā)布原理是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一:簡(jiǎn)介
互聯(lián)網(wǎng)產(chǎn)品用戶數(shù)量龐大,如果采用全量發(fā)布的話不論對(duì)于開發(fā)運(yùn)維團(tuán)隊(duì)有著未知的風(fēng)險(xiǎn),而且產(chǎn)品以及運(yùn)營(yíng)團(tuán)隊(duì)也同樣面臨的用戶體驗(yàn)的巨大挑戰(zhàn)。
二:藍(lán)綠發(fā)布
在發(fā)布的過程中用戶無感知服務(wù)的重啟,通常情況下是通過新舊版本并存的方式實(shí)現(xiàn),也就是說在發(fā)布的流程中,新的版本和舊的版本是相互熱備的,通過切換路由權(quán)重的方式(非0即100)實(shí)現(xiàn)不同的應(yīng)用的上線或者下線.
發(fā)布流程:
(1) 部署版本1的應(yīng)用(一開始的狀態(tài)),所有外部請(qǐng)求的流量都打到這個(gè)版本上。
(2) 部署版本2的應(yīng)用,版本2的代碼與版本1不同(新功能、Bug修復(fù)等)。
(3) 將流量從版本1切換到版本2。
(4) 如版本2測(cè)試正常,就刪除版本1正在使用的資源(例如實(shí)例),從此正式用版本2。
三:滾動(dòng)發(fā)布
滾動(dòng)發(fā)布,一般是取出一個(gè)或者多個(gè)服務(wù)器停止服務(wù),執(zhí)行更新,并重新將其投入使用。周而復(fù)始,直到集群中所有的實(shí)例都更新成新版本。這種部署方式相對(duì)于藍(lán)綠部署,更加節(jié)約資源——它不需要運(yùn)行兩個(gè)集群、兩倍的實(shí)例數(shù)。我們可以部分部署,例如每次只取出集群的百分之二十進(jìn)行升級(jí)。
這種方式也有很多缺點(diǎn),例如:
(1) 沒有一個(gè)確定OK的環(huán)境。使用藍(lán)綠部署,我們能夠清晰地知道老版本是OK的,而使用滾動(dòng)發(fā)布,我們無法確定。
(2) 修改了現(xiàn)有的環(huán)境。
(3) 如果需要回滾,很困難。舉個(gè)例子,在某一次發(fā)布中,我們需要更新100個(gè)實(shí)例,每次更新10個(gè)實(shí)例,每次部署需要5分鐘。當(dāng)滾動(dòng)發(fā)布到第80個(gè)實(shí)例時(shí),發(fā)現(xiàn)了問題,需要回滾。
(4) 有的時(shí)候,我們還可能對(duì)系統(tǒng)進(jìn)行動(dòng)態(tài)伸縮,如果部署期間,系統(tǒng)自動(dòng)擴(kuò)容/縮容了,我們還需判斷到底哪個(gè)節(jié)點(diǎn)使用的是哪個(gè)代碼。盡管有一些自動(dòng)化的運(yùn)維工具,但是依然令人心驚膽戰(zhàn)。
并不是說滾動(dòng)發(fā)布不好,滾動(dòng)發(fā)布也有它非常合適的場(chǎng)景。
四:金絲雀發(fā)布
金絲雀發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。金絲雀發(fā)布是增量發(fā)布的一種類型,金絲雀發(fā)布是在原有版本可用的情況下,同時(shí)部署一個(gè)新版本應(yīng)用作為“金絲雀”,測(cè)試新版本的性能和表現(xiàn),以保障整體系統(tǒng)穩(wěn)定的情況下,盡早發(fā)現(xiàn)、調(diào)整問題。
金絲雀發(fā)布由以下幾個(gè)步驟組成:
(1)準(zhǔn)備好部署各個(gè)階段的工件,包括:構(gòu)建工件,測(cè)試腳本,配置文件和部署清單文件。
(2)從負(fù)載均衡列表中移除掉“金絲雀”服務(wù)器。
(3)升級(jí)“金絲雀”應(yīng)用(排掉原有流量并進(jìn)行部署)。
(4)對(duì)應(yīng)用進(jìn)行自動(dòng)化測(cè)試。
(5)將“金絲雀”服務(wù)器重新添加到負(fù)載均衡列表中(連通性和健康檢查)。
(6)如果“金絲雀”在線使用測(cè)試成功,升級(jí)剩余的其他服務(wù)器。(否則就回滾)
金絲雀可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。
金絲雀部署適用的場(chǎng)景:
(1)不停止老版本,額外搞一套新版本,不同版本應(yīng)用共存。
(2)灰度發(fā)布中,常常按照用戶設(shè)置路由權(quán)重,例如百分之九十的用戶維持使用老版本,百分之十的用戶嘗鮮新版本。
(3)經(jīng)常與A/B測(cè)試一起使用,用于測(cè)試選擇多種方案。AB test就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對(duì)B沒有什么反對(duì)意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來
五:Istio實(shí)現(xiàn)金絲雀發(fā)布原理
金絲雀發(fā)布的流程如下:
(1)準(zhǔn)備和生產(chǎn)環(huán)境隔離的“金絲雀”服務(wù)器。
(2)將新版本的服務(wù)部署到“金絲雀”服務(wù)器上。
(3)對(duì)“金絲雀”服務(wù)器上的服務(wù)進(jìn)行自動(dòng)化和人工測(cè)試。
(4)測(cè)試通過后,將“金絲雀”服務(wù)器連接到生產(chǎn)環(huán)境,將少量生產(chǎn)流量導(dǎo)入到“金絲雀”服務(wù)器中。
(5)如果在線測(cè)試出現(xiàn)問題,則通過把生產(chǎn)流量從“金絲雀”服務(wù)器中重新路由到老版本的服務(wù)的方式進(jìn)行回退,修復(fù)問題后重新進(jìn)行發(fā)布。
(6)如果在線測(cè)試順利,則逐漸把生產(chǎn)流量按一定策略逐漸導(dǎo)入到新版本服務(wù)器中。
(7)待新版本服務(wù)穩(wěn)定運(yùn)行后,刪除老版本服務(wù)。
從上面的流程可以看到,如果要實(shí)現(xiàn)一套金絲雀發(fā)佈的流程,需要應(yīng)用程序和運(yùn)維流程對(duì)該發(fā)布過程進(jìn)行支持,工作量和難度的挑戰(zhàn)是非常大的。雖然面對(duì)的問題類似,但每個(gè)企業(yè)或組織一般采用不同的私有化實(shí)現(xiàn)方案來進(jìn)行灰度發(fā)布,為解決該問題導(dǎo)致研發(fā)和運(yùn)維花費(fèi)了大量的成本。
Istio通過高度的抽象和良好的設(shè)計(jì)采用一致的方式解決了該問題,采用sidecar對(duì)應(yīng)用流量進(jìn)行了轉(zhuǎn)發(fā),通過Pilot下發(fā)路由規(guī)則,可以在不修改應(yīng)用程序的前提下實(shí)現(xiàn)應(yīng)用的灰度發(fā)布。
備注:采用kubernetes的滾動(dòng)升級(jí)(rolling UPDATE)功能也可以實(shí)現(xiàn)不中斷業(yè)務(wù)的應(yīng)用升級(jí),但滾動(dòng)升級(jí)是通過逐漸使用新版本的服務(wù)來替換老版本服務(wù)的方式對(duì)應(yīng)用進(jìn)行升級(jí),在滾動(dòng)升級(jí)不能對(duì)應(yīng)用的流量分發(fā)進(jìn)行控制,因此無法采用受控地把生產(chǎn)流量逐漸導(dǎo)流到新版本服務(wù)中,也就無法控制服務(wù)升級(jí)對(duì)用戶造成的影響。
采用Istio后,可以通過定制路由規(guī)則將特定的流量(如指定特征的用戶)導(dǎo)入新版本服務(wù)中,在生產(chǎn)環(huán)境下進(jìn)行測(cè)試,同時(shí)通過漸進(jìn)受控地導(dǎo)入生產(chǎn)流量,可以最小化升級(jí)中出現(xiàn)的故障對(duì)用戶的影響。并且在同時(shí)存在新老版本服務(wù)時(shí),還可根據(jù)應(yīng)用壓力對(duì)不同版本的服務(wù)進(jìn)行獨(dú)立的縮擴(kuò)容,非常靈活。
采用Istio進(jìn)行金絲雀發(fā)布的流程如下圖所示:
1.部署Reviews-V1,所有的流量指向V1
2.部署Reviews-V2
3.通過采用Istio的路由規(guī)則,將部分流量導(dǎo)入V2 (如百分之十)
4.逐步增加流量配置
5.流量全部切換到V2,刪除V1
上述就是小編為大家分享的kubernetes中Istio實(shí)現(xiàn)金絲雀發(fā)布原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。