日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

基于 Istio 與 Kubernetes 對應(yīng)用進行灰度發(fā)布與 Tracing

 頭號碼甲 2022-07-22 發(fā)布于北京

灰度發(fā)布,是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。通俗來說,即讓產(chǎn)品的迭代能夠按照不同的灰度策略對新版本進行線上環(huán)境的測試,灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時候就可以對新版本進行測試、發(fā)現(xiàn)和調(diào)整問題,以保證其影響度。KubeSphere 基于 Istio 提供了藍(lán)綠部署、金絲雀發(fā)布、流量鏡像等三種灰度策略,無需修改應(yīng)用的服務(wù)代碼,即可實現(xiàn)灰度、流量治理、Tracing、流量監(jiān)控、調(diào)用鏈等服務(wù)治理功能。

目的

本示例在 KubeSphere 容器平臺中使用 Istio 官方提供的 Bookinfo 示例,創(chuàng)建一個微服務(wù)應(yīng)用并對其中的服務(wù)組件進行灰度發(fā)布,演示 KubeSphere 服務(wù)治理的能力。

Bookinfo 微服務(wù)應(yīng)用架構(gòu)

Bookinfo 應(yīng)用分為四個單獨的微服務(wù):

  • productpage :productpage 微服務(wù)會調(diào)用 details 和 reviews 兩個微服務(wù),用來生成頁面。
  • details :這個微服務(wù)包含了書籍的信息。
  • reviews :這個微服務(wù)包含了書籍相關(guān)的評論,它還會調(diào)用 ratings 微服務(wù)。
  • ratings :ratings 微服務(wù)中包含了由書籍評價組成的評級信息。

reviews 微服務(wù)有 3 個版本:

  • v1 版本不會調(diào)用 ratings 服務(wù),因此在界面不會顯示星形圖標(biāo)。
  • v2 版本會調(diào)用 ratings 服務(wù),并使用 1 到 5 個黑色星形圖標(biāo)來顯示評分信息。
  • v3 版本會調(diào)用 ratings 服務(wù),并使用 1 到 5 個紅色星形圖標(biāo)來顯示評分信息。

下圖展示了這個應(yīng)用的端到端架構(gòu)。

(Bookinfo 架構(gòu)圖與示例說明參考自 https:///docs/examples/bookinfo/)

預(yù)估時間

約 20 ~ 30 分鐘。

前提條件

  • 開啟了 Service Mesh 的安裝
  • 已創(chuàng)建了企業(yè)空間、項目和普通用戶 project-regular 賬號,且已邀請 project-regular 加入項目并授予 operator 角色
  • 需在當(dāng)前項目下選擇 「項目設(shè)置」→「高級設(shè)置」→「設(shè)置網(wǎng)關(guān)」,點擊「應(yīng)用治理」的開啟按鈕。

操作示例

創(chuàng)建自制應(yīng)用

  1. 使用項目普通用戶 project-regular 賬號進入項目 demo-project 后,選擇 應(yīng)用負(fù)載應(yīng)用,點擊 「部署示例應(yīng)用」。

  1. 在彈窗中,點擊 「確定」 部署 bookinfo 示例應(yīng)用。

  2. 確認(rèn)應(yīng)用工作負(fù)載的所有部署狀態(tài)顯示 運行中,則說明 bookinfo 微服務(wù)創(chuàng)建成功(約 2 分鐘)。

訪問 Bookinfo 應(yīng)用

  1. 點擊 bookinfo 進入應(yīng)用詳情頁,可以看到應(yīng)用路由下自動生成的 hostname。

  1. 由于外網(wǎng)訪問啟用的是 NodePort 的方式,NodePort 會在主機上開放 http 端口,要訪問 bookinfo 應(yīng)用需要將該端口進行轉(zhuǎn)發(fā)并在防火墻添加下行規(guī)則,確保流量能夠通過該端口。

  2. 在本地打開 /etc/hosts 文件,為 hostname 添加一條記錄,例如:

#{公網(wǎng) IP} {hostname}
139.198.111.111 productpage.demo-project.192.168.0.8.
  1. 完成上述步驟后,在應(yīng)用路由下選擇 「點擊訪問」,可以看到 bookinfo 的 details 頁面。

  1. 點擊 Normal user 訪問 productpage。注意此時 Book Reviews 部分只顯示了 Reviewer1 和 Reviewer2。

添加灰度發(fā)布

  1. 回到 KubeSphere,選擇 「灰度發(fā)布」,點擊 「發(fā)布灰度任務(wù)」。

  1. 在跳轉(zhuǎn)的灰度發(fā)布頁面,選擇 「金絲雀發(fā)布」 作為灰度策略,點擊 「發(fā)布任務(wù)」。

  1. 在彈窗中,填寫發(fā)布任務(wù)名稱為 bookinfo-carary,點擊 「下一步」。

  2. 點擊 reviews 一欄的 「選擇」,即選擇對應(yīng)用組件 reviews 進行灰度發(fā)布,點擊 「下一步」。

  3. 參考如下填寫灰度版本信息,完成后點擊 「下一步」。

  • 灰度版本號:v2;
  • 鏡像:istio/examples-bookinfo-reviews-v2:1.10.1 (將 v1 改為 v2)。
  1. 金絲雀發(fā)布允許按流量比例下發(fā)與按請求內(nèi)容下發(fā)等兩種發(fā)布策略,來控制用戶對新老版本的請求規(guī)則。本示例選擇 按流量比例下發(fā),流量比例選擇 v1 與 v2 各占 50 %,點擊 「創(chuàng)建」。

驗證金絲雀發(fā)布

再次訪問 Bookinfo 網(wǎng)站,重復(fù)刷新瀏覽器后,可以看到 bookinfo 的 reviews 模塊在 v1 和 v2 模塊按 50% 概率隨機切換。

查看流量拓?fù)鋱D

打開命令行窗口輸入以下命令,引入真實的訪問流量,模擬對 bookinfo 應(yīng)用每 0.5 秒訪問一次。注意以下命令是模擬 Normal user 訪問,需要輸入完整的命令訪問到具體的服務(wù)在鏈路圖中才有流量數(shù)據(jù)。

$ watch -n 0.5 "curl http://productpage.demo-project.139.198.111.111.:31680/productpage?u=normal"

從流量治理的鏈路圖中,可以看到各個微服務(wù)之間的服務(wù)調(diào)用和依賴、健康狀況、性能等情況。

提示:點擊其中一個應(yīng)用組件,還可以為該服務(wù)組件設(shè)置流量治理策略,如連接池管理、熔斷器等。

查看流量監(jiān)測

點擊 reviews 服務(wù),查看該服務(wù)的實時流量監(jiān)測,包括每秒請求的流量 (RPS)、成功率、持續(xù)時間等指標(biāo),這類指標(biāo)都可以分析該服務(wù)的健康狀況和請求成功率。

查看 Tracing

如果在鏈路圖中發(fā)現(xiàn)了服務(wù)的流量監(jiān)測異常,還可以在 Tracing 中追蹤一個端到端調(diào)用經(jīng)過了哪些服務(wù),以及各個服務(wù)花費的時間等詳細(xì)信息,支持進一步查看相關(guān)的 Header 信息,每個調(diào)用鏈由多個 Span 組成。

界面上可以清晰的看到某個請求的所有階段和內(nèi)部調(diào)用,以及每個階段所耗費的時間。

展開某個階段,還能下鉆看到這個階段是在哪臺機器(或容器)上執(zhí)行的。

接管全部流量

當(dāng)新版本 v2 灰度發(fā)布后,發(fā)布者可以對線上的新版本進行測試和收集用戶反饋。如果測試后確定新版本沒有問題,希望將流量完全切換到新版本,則進入灰度發(fā)布頁面進行流量接管。

  1. 點擊 「灰度發(fā)布」,進入 bookinfo 的灰度發(fā)布詳情頁,點擊 ··· 選擇 「接管所有流量」,正常情況下所有流量將會指向 v2。

提示:此時 v1 也將保持在線,若 v2 上線后發(fā)現(xiàn)問題,允許發(fā)布者隨時將新版本 v2 的流量切回 v1。

  1. 再次打開 bookinfo 頁面,多次刷新后 reviews 模塊也僅僅只顯示 v2 版本。

下線舊版本

當(dāng)新版本 v2 上線接管所有流量后,并且測試和線上用戶反饋都確認(rèn)無誤,即可下線舊版本,釋放資源 v1 的資源。下線應(yīng)用組件的特定版本,會同時將關(guān)聯(lián)的工作負(fù)載和 istio 相關(guān)配置資源等全部刪除。

至此,Bookinfo 微服務(wù)以金絲雀發(fā)布作為發(fā)布策略,演示了灰度發(fā)布的基本功能。
KubeSphere (https://github.com/kubesphere/kubesphere) 是一個開源的以應(yīng)用為中心的容器管理平臺,支持部署在任何基礎(chǔ)設(shè)施之上,并提供簡單易用的 UI,極大減輕日常開發(fā)、測試、運維的復(fù)雜度,旨在解決 Kubernetes 本身存在的存儲、網(wǎng)絡(luò)、安全和易用性等痛點,幫助企業(yè)輕松應(yīng)對敏捷開發(fā)與自動化監(jiān)控運維、端到端應(yīng)用交付、微服務(wù)治理、多租戶管理、多集群管理、服務(wù)與網(wǎng)絡(luò)管理、鏡像倉庫、AI 平臺、邊緣計算等業(yè)務(wù)場景。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多