kubesphere服务网格servicemesh(Istio)示例:部署 Bookinfo 和管理流量
Istio,作為一種開(kāi)源服務(wù)網(wǎng)格解決方案,為微服務(wù)提供了強(qiáng)大的流量管理功能。以下是 Istio 官方網(wǎng)站上關(guān)于流量管理的簡(jiǎn)介:
Istio 的流量路由規(guī)則可以讓您很容易的控制服務(wù)之間的流量和 API 調(diào)用。Istio 簡(jiǎn)化了服務(wù)級(jí)別屬性的配置,比如熔斷器、超時(shí)和重試,并且能輕松的設(shè)置重要的任務(wù),如 A/B 測(cè)試、金絲雀發(fā)布、基于流量百分比切分的概率發(fā)布等。它還提供了開(kāi)箱即用的故障恢復(fù)特性,有助于增強(qiáng)應(yīng)用的健壯性,從而更好地應(yīng)對(duì)被依賴(lài)的服務(wù)或網(wǎng)絡(luò)發(fā)生故障的情況。
KubeSphere 基于 Istio 提供了三種灰度策略,包括藍(lán)綠部署,金絲雀發(fā)布和流量鏡像。其中,金絲雀發(fā)布代表了一種有效的軟件開(kāi)發(fā)策略,在這種策略中,新版本被部署用于測(cè)試,基線(xiàn)版本留存在生產(chǎn)環(huán)境中。此策略為正在測(cè)試的新版本引入一部分流量,而生產(chǎn)版本將接收其余的流量。
目標(biāo)
在本教程中,您將學(xué)習(xí)如何部署由四個(gè)獨(dú)立的微服務(wù)組成的示例應(yīng)用程序 Bookinfo,以及如何使用 KubeSphere 的流量管理功能來(lái)發(fā)布新版本。
前置條件
-
您需要啟用 KubeSphere 服務(wù)網(wǎng)格。
-
您需要完成 創(chuàng)建企業(yè)空間、項(xiàng)目、帳戶(hù)和角色 中的所有任務(wù)。
-
您需要啟用應(yīng)用治理。為此,請(qǐng)按照以下步驟操作:
使用project-admin登錄控制臺(tái)并轉(zhuǎn)到您的項(xiàng)目。找到項(xiàng)目設(shè)置下的高級(jí)設(shè)置,點(diǎn)擊編輯,然后選擇編輯網(wǎng)關(guān)。在出現(xiàn)的對(duì)話(huà)框中,打開(kāi)應(yīng)用治理旁邊的開(kāi)關(guān)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-fKRLWpoO-1613792635208)(https://ap3.qingstor.com/kubesphere-website/docs/20200908145220.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-TOj407QX-1613792635217)(https://ap3.qingstor.com/kubesphere-website/docs/20200908150358.png)]
備注
您需要啟用應(yīng)用治理以使用追蹤功能。啟用后若無(wú)法訪(fǎng)問(wèn)路由,請(qǐng)檢查您的路由(Ingress)是否已經(jīng)添加注釋(例如:nginx.ingress.kubernetes.io/service-upstream: true)。
預(yù)計(jì)時(shí)間
20分鐘左右。
什么是 Bookinfo 應(yīng)用
Bookinfo 應(yīng)用由如下四個(gè)獨(dú)立的微服務(wù)組成,其中 reviews 微服務(wù)有三個(gè)版本。
- productpage 微服務(wù)會(huì)調(diào)用 details 和 reviews 用來(lái)生成頁(yè)面。
- details 這個(gè)微服務(wù)中包含了書(shū)籍的信息。
- reviews 這個(gè)微服務(wù)中包含了書(shū)籍相關(guān)的評(píng)論,它還會(huì)調(diào)用 ratings 微服務(wù)。
- ratings 這個(gè)微服務(wù)中包含了由書(shū)籍評(píng)價(jià)組成的評(píng)級(jí)信息。
這個(gè)應(yīng)用的端到端架構(gòu)如下所示。更多詳細(xì)信息,請(qǐng)參考 Bookinfo 應(yīng)用。
動(dòng)手實(shí)驗(yàn)
任務(wù) 1: 部署 Bookinfo
使用賬戶(hù)project-regular登錄控制臺(tái)并進(jìn)入項(xiàng)目,轉(zhuǎn)到應(yīng)用負(fù)載下的應(yīng)用,點(diǎn)擊右側(cè)的部署示例應(yīng)用。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-r0GWq5ho-1613792635224)(https://ap3.qingstor.com/kubesphere-website/docs/20200908100219.png)]
在出現(xiàn)的對(duì)話(huà)框中點(diǎn)擊下一步,其中必填字段已經(jīng)預(yù)先填充了,同時(shí)也已經(jīng)設(shè)置了相關(guān)組件。您無(wú)需修改設(shè)置,只需在最后一頁(yè)(外網(wǎng)訪(fǎng)問(wèn))點(diǎn)擊創(chuàng)建。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-Y3ZF69cb-1613792635226)(https://ap3.qingstor.com/kubesphere-website/docs/20200908101041.png)]
在工作負(fù)載中,確保這四個(gè)部署都顯示running,代表該應(yīng)用已經(jīng)成功創(chuàng)建。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-OyA2jRiE-1613792635229)(https://ap3.qingstor.com/kubesphere-website/docs/20200908101328.png)]
備注
應(yīng)用部署后運(yùn)行起來(lái)可能需要幾分鐘完成。
任務(wù) 2: 訪(fǎng)問(wèn) Bookinfo
在應(yīng)用中,點(diǎn)擊應(yīng)用bookinfo查看詳細(xì)信息。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-hIhOWjXt-1613792635230)(https://ap3.qingstor.com/kubesphere-website/docs/20200908102119.png)]
備注
如果您無(wú)法在列表中看到該應(yīng)用,請(qǐng)刷新頁(yè)面。
在詳細(xì)信息頁(yè)面中顯示了用于訪(fǎng)問(wèn) Bookinfo 應(yīng)用的主機(jī)名和端口號(hào)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-Y3B7JgHS-1613792635232)(https://ap3.qingstor.com/kubesphere-website/docs/20200908102821.png)]
由于將通過(guò) NodePort 在集群外訪(fǎng)問(wèn)該應(yīng)用,因此您需要在安全組中為出站流量開(kāi)放上圖中的端口(在本例中,端口號(hào)為32277),并根據(jù)需要設(shè)置任意端口轉(zhuǎn)發(fā)規(guī)則。
編輯您的本地主機(jī)文件(/etc/hosts),添加一條配置將主機(jī)名映射到對(duì)應(yīng)的公網(wǎng) IP。例如:
# {Public IP} {hostname} 139.198.19.38 productpage.demo-project.192.168.0.2.nip.io警告
不要直接復(fù)制上述內(nèi)容到本地主機(jī)文件,請(qǐng)將其替換成您自己環(huán)境的公網(wǎng) IP 與主機(jī)名。
完成后,點(diǎn)擊點(diǎn)擊訪(fǎng)問(wèn)按鈕訪(fǎng)問(wèn)該應(yīng)用。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-C8QLVljG-1613792635233)(https://ap3.qingstor.com/kubesphere-website/docs/20200908105527.png)]
在應(yīng)用詳情頁(yè)面,點(diǎn)擊左下角的 Normal user。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-pAFjUPVT-1613792635235)(https://ap3.qingstor.com/kubesphere-website/docs/20200908105756.png)]
在下圖中,您可以注意到 Book Reviews 僅出現(xiàn) Reviewer1 和 Reviewer2 并且沒(méi)有任何星星,這是當(dāng)前應(yīng)用程序版本的狀態(tài)。在下面的任務(wù)中,您可以通過(guò)金絲雀發(fā)布看到不同的 UI 展現(xiàn)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-sgrobjjV-1613792635236)(https://ap3.qingstor.com/kubesphere-website/docs/20200908110106.png)]
Task 3: 創(chuàng)建金絲雀發(fā)布
回到 KubeSphere 控制臺(tái)并選擇灰度發(fā)布,點(diǎn)擊發(fā)布灰度任務(wù)跳轉(zhuǎn)到項(xiàng)目的灰度發(fā)布部分,然后選擇金絲雀發(fā)布并且點(diǎn)擊發(fā)布任務(wù)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-Lm0N5vPY-1613792635238)(https://ap3.qingstor.com/kubesphere-website/docs/20200908110903.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-qzbfGiGz-1613792635239)(https://ap3.qingstor.com/kubesphere-website/docs/20200908111003.png)]
添加一個(gè)任務(wù)名稱(chēng)(例如:canary-release)然后點(diǎn)擊下一步,選擇 reviews 作為需要更改的組件并點(diǎn)擊下一步。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-E7t9nrFq-1613792635240)(https://ap3.qingstor.com/kubesphere-website/docs/20200908111359.png)]
在下一個(gè)對(duì)話(huà)框中,輸入v2作為灰度版本號(hào)并修改鏡像為kubesphere/examples-bookinfo-reviews-v2:1.13.0(v1更改為v2),點(diǎn)擊下一步繼續(xù)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-uj9AkLqq-1613792635241)(https://ap3.qingstor.com/kubesphere-website/docs/20200908111958.png)]
金絲雀發(fā)布支持兩種發(fā)布策略:按流量比例下發(fā)和按請(qǐng)求內(nèi)容下發(fā)。在本教程中,請(qǐng)選擇按流量比例下發(fā)并為 v1 和 v2 設(shè)置相同的流量比例(各50%)。你可以點(diǎn)擊中間的圖標(biāo),然后向左或向右移動(dòng)以更改流量比例,點(diǎn)擊創(chuàng)建完成設(shè)置。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-IM9zk7HZ-1613792635243)(https://ap3.qingstor.com/kubesphere-website/docs/20200908113031.png)]
創(chuàng)建的任務(wù)將會(huì)顯示在任務(wù)狀態(tài)里。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-7ZfoWn2C-1613792635244)(https://ap3.qingstor.com/kubesphere-website/docs/20200908113728.png)]
Task 4: 驗(yàn)證金絲雀發(fā)布
再次訪(fǎng)問(wèn) Bookinfo 網(wǎng)站,然后反復(fù)刷新瀏覽器,可以看到 Book Reviews 部分以 50% 的比率在 v1 和 v2 版本之間切換。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-4avgIvQy-1613792635246)(https://ap3.qingstor.com/kubesphere-website/docs/canary.gif)]
Task 5: 查看網(wǎng)絡(luò)拓?fù)?/h3>
在運(yùn)行 KubeSphere 的機(jī)器上執(zhí)行以下命令來(lái)引入真實(shí)流量,每 0.5 秒模擬訪(fǎng)問(wèn)一次 Bookinfo。
watch -n 0.5 "curl http://productpage.demo-project.192.168.0.2.nip.io:32277/productpage?u=normal"備注
請(qǐng)確保將上述命令行中的項(xiàng)目名稱(chēng),IP 地址和端口號(hào)替換成您自己環(huán)境的。
在 Traffic Management 中,可以看到不同微服務(wù)之間的通信、依賴(lài)關(guān)系、運(yùn)行狀態(tài)及性能。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-k8dwI8X9-1613792635247)(https://ap3.qingstor.com/kubesphere-website/docs/20200908133652.png)]
點(diǎn)擊組件(例如:reviews)在右側(cè)可以看到流量監(jiān)控信息,顯示 Traffic,Success rate 和 Duration 的實(shí)時(shí)數(shù)據(jù)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-LJMfHrNl-1613792635249)(https://ap3.qingstor.com/kubesphere-website/docs/20200908134454.png)]
Task 6: 查看 Tracing 詳情
KubeSphere 提供基于 Jaeger 的分布式追蹤功能,用來(lái)對(duì)基于微服務(wù)的分布式應(yīng)用程序進(jìn)行監(jiān)控及故障排查。
在 Tracing 選項(xiàng)卡中,可以清楚地看到請(qǐng)求的所有階段及內(nèi)部調(diào)用,以及每個(gè)階段的調(diào)用耗時(shí)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-GUXD6BLN-1613792635250)(https://ap3.qingstor.com/kubesphere-website/docs/20200908135108.png)]
點(diǎn)擊任意條目,可以深入查看請(qǐng)求的詳細(xì)信息及該請(qǐng)求被處理的位置(在哪個(gè)機(jī)器或者容器)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-ZiQbJ9my-1613792635252)(https://ap3.qingstor.com/kubesphere-website/docs/20200908135252.png)]
Task 7: 接管所有流量
通過(guò)金絲雀發(fā)布,您可以通過(guò)引入部分實(shí)際流量并收集用戶(hù)反饋來(lái)在線(xiàn)測(cè)試新版本。如果一切運(yùn)行順利,則可以將所有流量引入新版本。
在灰度發(fā)布中,點(diǎn)擊金絲雀發(fā)布任務(wù)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-SPJMqaQ3-1613792635253)(https://ap3.qingstor.com/kubesphere-website/docs/20200908140138.png)]
在彈出的對(duì)話(huà)框中,點(diǎn)擊 reviews v2 的三個(gè)點(diǎn)并選擇接管所有流量。這代表 100% 的流量將會(huì)被發(fā)送到新版本(v2)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-mZqOLDZr-1613792635254)(https://ap3.qingstor.com/kubesphere-website/docs/20200908140314.png)]
備注
如果新版本出現(xiàn)什么問(wèn)題,可以隨時(shí)回滾到之前的 v1 版本。
重新打開(kāi) Bookinfo 頁(yè)面多刷新幾次瀏覽器,您會(huì)發(fā)現(xiàn)頁(yè)面只會(huì)顯示 reviews v2 的結(jié)果(即帶有黑色星標(biāo)的評(píng)級(jí))。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-yskXQg41-1613792635256)(https://ap3.qingstor.com/kubesphere-website/docs/20200908140921.png)]
Task 8: 移除舊版本
現(xiàn)在新版本 v2 成功接管了所有流量,您可以根據(jù)需要?jiǎng)h除舊版本并釋放 v1 的資源。
警告
刪除某個(gè)版本后,相關(guān)的工作負(fù)載和基于 Istio 的配置資源也將被刪除。
在灰度發(fā)布中,點(diǎn)擊金絲雀發(fā)布任務(wù)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-Z5RNDe2B-1613792635257)(https://ap3.qingstor.com/kubesphere-website/docs/20200908140138.png)]
在彈出的對(duì)話(huà)框中,點(diǎn)擊任務(wù)下線(xiàn)以移除舊版本。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-1MLx9TWd-1613792635258)(https://ap3.qingstor.com/kubesphere-website/docs/20200908142246.png)]
以上任務(wù)是使用金絲雀發(fā)布來(lái)控制流量和發(fā)布應(yīng)用程序新版本的示例。您也可以嘗試使用灰度發(fā)布中的其他不同發(fā)布策略,或者查看項(xiàng)目用戶(hù)指南的相關(guān)章節(jié)。
參考鏈接:
https://v3-0.docs.kubesphere.io/zh/docs/quick-start/deploy-bookinfo-to-k8s/
總結(jié)
以上是生活随笔為你收集整理的kubesphere服务网格servicemesh(Istio)示例:部署 Bookinfo 和管理流量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于kubesphere metrics
- 下一篇: 基于operator sdk编写一个k8