Istio 正式成為 CNCF 畢業(yè)項(xiàng)目
“隨著微服務(wù)架構(gòu)成為現(xiàn)代應(yīng)用程序編寫的事實(shí)標(biāo)準(zhǔn)模式,連接、監(jiān)控和保護(hù)容器和服務(wù)復(fù)雜環(huán)境已經(jīng)成為工程師面臨的挑戰(zhàn)?!?Google Cloud 工程總監(jiān) Cameron Etezadi 表示,“Google 為解決這個(gè)難題而創(chuàng)建和發(fā)展 Istio 作為綜合解決方案,我們對此感到自豪。Istio 的畢業(yè)以及其作為全球最廣泛采用的服務(wù)網(wǎng)格技術(shù)的領(lǐng)先地位,進(jìn)一步證明了我們相信每個(gè)人都應(yīng)該能夠從安全、強(qiáng)大的基于服務(wù)的應(yīng)用程序中受益?!?/p>
?
Istio 畢業(yè)對用戶意味著什么?
對于那些已經(jīng)將其用作基礎(chǔ)設(shè)施核心部分的用戶,CNCF 畢業(yè)是對他們將 Istio 視為現(xiàn)代應(yīng)用程序網(wǎng)絡(luò)的關(guān)鍵組件的愿景的驗(yàn)證。對于那些正在尋求現(xiàn)代化基礎(chǔ)設(shè)施的用戶,Istio 的畢業(yè)地位是一個(gè)強(qiáng)有力的信號,表明它是一個(gè)經(jīng)過驗(yàn)證和強(qiáng)大的選擇,可用于在生產(chǎn)中擴(kuò)展關(guān)鍵應(yīng)用程序。
對于用戶來說,Istio 的畢業(yè)地位具有幾個(gè)含義和優(yōu)勢:
穩(wěn)定性和成熟度。?潛在用戶可以信任該項(xiàng)目的穩(wěn)定性,知道它已經(jīng)滿足了 CNCF 對畢業(yè)的嚴(yán)格標(biāo)準(zhǔn)。
安全性。?Istio 擁有長期而強(qiáng)大的?發(fā)布及時(shí)的安全公告?[3],以及行業(yè)最重要的安全思想領(lǐng)袖的戰(zhàn)略指導(dǎo)。
生產(chǎn)就緒。?畢業(yè)地位為用戶提供了必要的功能、可擴(kuò)展性和健壯性,可用于生產(chǎn)環(huán)境。
采用和生態(tài)系統(tǒng)。?畢業(yè)項(xiàng)目已經(jīng)在云原生生態(tài)系統(tǒng)中獲得了顯著的采用。它們被各種規(guī)模和行業(yè)的組織廣泛認(rèn)可和使用。Istio 的用戶從其他采用者的經(jīng)驗(yàn)中受益。畢業(yè)項(xiàng)目的廣泛采用還促進(jìn)了工具、擴(kuò)展和集成的充滿活力的生態(tài)系統(tǒng),可以進(jìn)一步增強(qiáng)其功能。
CNCF 支持和治理。?畢業(yè)項(xiàng)目也受益于 CNCF 的支持和治理。CNCF 提供資源、指導(dǎo)和協(xié)作框架和社區(qū)參與。用戶可以信任該項(xiàng)目的長期可持續(xù)性和開發(fā)路線圖,因?yàn)樗怯芍铝τ谕七M(jìn)云原生技術(shù)的可信組織支持的。
社區(qū)和企業(yè)支持。?社區(qū)提供的集體知識、經(jīng)驗(yàn)和支持提供了廣泛用戶群體的利益,可以獲得諸如文檔、論壇和用戶組等資源,并在解決問題和解決問題方面提供潛在幫助。Istio 生態(tài)系統(tǒng)還享有來自眾多供應(yīng)商(包括 Tetrate)的企業(yè)支持,這些供應(yīng)商為需要在需要時(shí)獲得專家支持的組織提供了保證。
Sidecar NJet 作為 Istio 架構(gòu)中的數(shù)據(jù)面,旨在替換原生數(shù)據(jù)面 Sidecar envoy。
?Istio?架構(gòu)
Istio 服務(wù)網(wǎng)格在邏輯上分為數(shù)據(jù)平面和控制平面。
? 數(shù)據(jù)平面由一組作為 sidecars 部署的智能代理 (Envoy) 組成。這些代理調(diào)解和控制微服務(wù)之間的所有網(wǎng)絡(luò)通信。他們還收集并報(bào)告所有網(wǎng)格流量的遙測數(shù)據(jù)。
? 控制平面對代理進(jìn)行路由管理和配置。
下圖顯示了組成每個(gè)平面的不同組件:

?Sidecar NJet?架構(gòu)

api-gateway 有兩個(gè)主要模塊:
? xds 客戶端 主要與 istiod xds 服務(wù)端通信,進(jìn)行 xds 資源的訂閱,基于 grpc-go xds 實(shí)現(xiàn),grpc 支持 SotW ADS
? NJet 控制器
? 管理 NJet 進(jìn)程,包括啟動(dòng),reload
? xds 資源類型數(shù)據(jù)進(jìn)行解析、處理,生成 NJet server、upstream、loction 元數(shù)據(jù),通過 go tmpl 技術(shù)生成 NJet.conf 文件
? 集成 lua
部署?sidecar
使用 Sidecar NJet 需要定制化部署 Istio,自動(dòng)注入 NJet Sidecar。定制化部署 Istio 需要使用 Istio-install 倉庫中的文件,此倉庫是基于 Istio-1.13.3 release 修改的,需要修改 Sidecar 鏡像名稱,修改 Sidecar 容器模板。
?安裝?Istio
拉取 Istio-install 倉庫,修改 default-istio.yaml 文件 values.global.proxy.image 字段,設(shè)置為 NJet 的鏡像名稱,必須為包含 “/”。 執(zhí)行如下命令安裝 istiod:
Shell./istio-1.13.3/bin/istioctl install --manifests=istio-1.13.3/manifests/ ?-f default-istio.yaml
注入?sidecar njet
Pod level
給 pod 打標(biāo)貼:sidecar.istio.io/inject: "true",以 productpage 為例,修改 deploy,增加標(biāo)貼。
Shellkubectl edit deploy productpage-v1
?

等待一會

Namespace level
添加 namespace label, 以便后續(xù)在此 ns 部署應(yīng)用時(shí),通知 Istio 自動(dòng)注入 nginx sidecar,下面為 default ns 添加標(biāo)貼。
Shellkubectl label namespace default istio-injection=enabled
?
查看 ns 標(biāo)貼
Shellkubectl get ns --show-labels
?

查看 default ns pod 狀態(tài)

刪除 details pod,觸發(fā) sidecar 注入
Shellkubectl delete pod details-v1-5498c86cf5-6kcpw ?
?
查看 default ns pod 狀態(tài),details pod 注入 NJet sidecar

更多了解:https://gitee.com/njet-rd/docs/blob/master/zh-cn/OpenNJet%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.md#3211-%E6%A6%82%E8%BF%B0
參考:https://tetrate.io/blog/istio-service-mesh-graduates-cncf/?