溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

入門了解Service Mesh + Istio?從本文開始

發(fā)布時間:2020-07-30 06:58:02 來源:網(wǎng)絡 閱讀:360 作者:RancherLabs 欄目:云計算

下周六,深圳,闊別已久的線下技術沙龍要和你見面啦!
 
現(xiàn)場有Rancher Labs研發(fā)經(jīng)理demo剛剛發(fā)布的Rancher 2.3中的Istio、Windows容器、集群模板等功能及使用,還有k3s首次線下workshop,由Rancher Labs資深架構師帶你一起玩轉(zhuǎn)k3s!還有長城證券的運維負責人分享數(shù)字化浪潮下傳統(tǒng)金融IT的轉(zhuǎn)型。
 
訪問鏈接即可了解詳情及報名啦!

 
入門了解Service Mesh + Istio?從本文開始
 
諸如容器、Kubernetes等云原生架構和技術的成熟推動了服務網(wǎng)格架構的極速增長以及廣泛采用。盡管云原生環(huán)境可以為企業(yè)帶來一系列好處,但是其復雜性也對負責開發(fā)維護這類系統(tǒng)的人員,如軟件開發(fā)人員、網(wǎng)絡運維人員、基礎架構工程師以及CIO、CTO等帶來了重大挑戰(zhàn)。

 

服務網(wǎng)格框架能夠為跨不同云原生環(huán)境的應用程序整合一致的服務和網(wǎng)絡管理能力,它還極大地加快了DevOps實踐的進程,正緣于此,服務網(wǎng)格近年來可謂是發(fā)展迅猛。云原生普及的加快,要求擁有云原生應用程序的工程團隊必須熟悉服務網(wǎng)格功能,以判斷該技術將來是否能為企業(yè)提供價值。
 

什么是服務網(wǎng)格?

 

服務網(wǎng)格可以連接、保護、控制以及監(jiān)控在編排平臺上的服務?!胺站W(wǎng)格”這一術語本身用于分布式應用程序中服務之間的一組搭接網(wǎng)絡連接,也適用于管理該組連接服務的一系列工具。如果你有兩個通過網(wǎng)絡連接進行交互的微服務,那就意味著你有了一個服務網(wǎng)格。下圖是一個十分簡單的示例,一個網(wǎng)格和兩個服務:
 
入門了解Service Mesh + Istio?從本文開始
 
更有可能的是,由于在環(huán)境中微服務的數(shù)量會繼續(xù)增長,你的服務網(wǎng)格會如下圖所示:
 
入門了解Service Mesh + Istio?從本文開始
 
隨著云環(huán)境擴展到混合云和多云部署,開發(fā)人員將會使用微服務來加速開發(fā)并且確保在多個容器和分布式云資源中的的可移植性。隨著微服務生態(tài)系統(tǒng)的復雜性增長,我們需要高效且智能地管理它,并且深入了解微服務如何交互以及保護微服務之間的通信。
 

什么是Istio?

 
如果你已經(jīng)聽說了服務網(wǎng)格,那么你一定順帶聽說了Istio。Istio是一個開源的服務網(wǎng)格,它可以部署在已有的云原生應用程序上。它還具有類似于平臺的功能——可以將集成到日志平臺、遙測或策略系統(tǒng)中。策略集成使得Istio在創(chuàng)建一個統(tǒng)一的方法來保護、連接以及監(jiān)控既定環(huán)境中的微服務中扮演一個安全工具的角色。當泛指“Istio服務網(wǎng)格”時,通常是指Istio中的一系列工具,而特指“某個Istio 服務網(wǎng)格”時則表明由Istio安裝管理的指定應用程序集群。Istio的許多CRD允許對應用程序網(wǎng)絡層的行為進行編程配置(通過使用Kubernetes API),其中應用程序是相互依賴的微服務集。Istio在某種程度上可以稱為當今云原生堆棧中服務網(wǎng)格的同義詞,因為它的功能最豐富、最標準化。
 

我是否需要一個服務網(wǎng)格?

 

盡管服務網(wǎng)格的采用率可能會持續(xù)快速增長,特別是當功能設置和類似Istio的管理工具進一步完善之后,但并不是每個云原生環(huán)境都需要服務網(wǎng)格。所以你如何知道一個服務是否適合你的企業(yè)或者環(huán)境呢?如果你需要解決下面所描述的一個或多個需求或問題的方案,那么你應該考慮部署一個服務網(wǎng)格:

 

  • 你在基于分布式微服務的應用程序中遇到性能問題

  • 你需要為所有微服務收集并交付一致的請求和連接指標

  • 你想直接默認在線加密設置,而無需直接管理TLS證書

  • 你需要比Kubernetes網(wǎng)絡策略提供的更細粒度的解決方案進行服務到服務的控制

  • 你想使用金絲雀發(fā)布和應用程序API多版本支持進行自動release

  • 你想無需修改應用程序就可以添加用戶的身份驗證和授權認證信息
     

另一方面,如果在你的堆棧中不需要服務網(wǎng)格,那么你需要做一些權衡??紤]到這些環(huán)境的復雜性,部署一個服務網(wǎng)格(包括Istio)需要大量的遷移工作和運維成本。如果你的微服務部署數(shù)量不會增長,或者如果有其他解決方案可以滿足你內(nèi)部的HTTP請求路由的需求,或者如果你已經(jīng)有了一個可管理且高效的解決方案可以解決上述的關鍵需求,那么此刻服務網(wǎng)格對你來說真的不是一個最佳選擇。

 
但是如果服務網(wǎng)格繼續(xù)極速被廣泛采用,為支持它而開發(fā)的功能生態(tài)系統(tǒng)將會繼續(xù)擴展。這種增長將提升可管理性和功能性,以便將來DevOps團隊可以更加輕松地訪問更強大的服務網(wǎng)格工具,而不必擔心將新的基礎架構層部署到云原生堆棧中而出現(xiàn)棘手的問題或花費很高的成本。
 

Istio工作原理

 

Istio組件被分為兩部分——控制平面和數(shù)據(jù)平面。控制平面是指管理配置和監(jiān)控數(shù)據(jù)平面的服務。數(shù)據(jù)平面由作為sidecar由在應用程序pod中的智能代理(proxy)組成,這是Kubernetes對象模型中最小的可部署對象。這些Istio proxy有助于控制和監(jiān)控微服務間的網(wǎng)絡連接。從控制平面接收路由和策略規(guī)則,然后數(shù)據(jù)平面報告回連接處理遙測。
 
入門了解Service Mesh + Istio?從本文開始
 
通過創(chuàng)建Kubernetes資源來配置Istio服務網(wǎng)格。此外,有許多Kubernetes CRD可以映射到Istio各種功能上。接下來,我們會討論更多關于控制和數(shù)據(jù)平面的作用,但在此之前我們先了解關于Istio的潛在能力,以及它的不足。
 

潛力與不足

 

Istio通過其可動態(tài)配置代理的網(wǎng)格提供了一系列用于處理和控制網(wǎng)絡連接的特性。但這些功能配置繁重并且擁有陡峭的學習曲線。并且有時把已有的應用程序遷移到Istio架構時依舊會出現(xiàn)一些常見的問題,盡管這些架構已經(jīng)是Kubernetes原生的微服務。

 

此外,Istio缺乏對如何將用戶提供的配置轉(zhuǎn)換為Envoy路由的了解。Envoy是作為服務網(wǎng)格中服務的入站和出站流量的中介開發(fā)的一種高性能的代理,是由來自共享出行服務公司Lyft的開發(fā)人員創(chuàng)建的,可以用于從單體架構轉(zhuǎn)變?yōu)榉站W(wǎng)格架構。其他在使用中的問題還包括部署和服務資源配置要求所需的學習曲線、在打開mTLS時中斷Kubernetes readiness和liveness探針以及使用沒有ClusterIP的Kubernetes服務或繞開Kubernetes服務發(fā)現(xiàn)流程的服務。
 

Istio的優(yōu)勢在于可以讓你在不修改微服務源代碼的情況之下,很輕松地給微服務加上諸如負載均衡、身份驗證、監(jiān)控等等的功能。而且目前它正在快速發(fā)展迭代,頻繁發(fā)布新版本,并且積極征求用戶反饋。盡管目前Envoy還有很多局限,但是隨著Istio持續(xù)發(fā)展,它也會積極開發(fā)和完善自己的功能。
 

配置控制平面

 

在Kubernetes集群中,一個典型的Istio部署應該包含以下服務:

 

  • Pilot,在Istio網(wǎng)絡自定義資源中集合流量管理規(guī)范配置,并將該配置交付到istio-proxy sidecar。
     
  • Mixer,用于處理由proxy sidecar生成的請求指標的遙測,并將其發(fā)送到已配置完成的后端,并執(zhí)行授權策略。如果開啟了策略檢查(Istio 1.1中默認關閉),proxy sidecar將會連接到Mixer以確認連接是被允許的。但是,這個方法會稍微增加網(wǎng)絡延遲。
     
  • Citadel,這個是Istio的公鑰基礎設施(PKI)服務,它可以生成、輪換和吊銷用于身份驗證的客戶端TLS證書。
     
  • Galley,它是大多數(shù)Istio CRD的Kubernetes controller,使用戶可以更改自定義資源并將內(nèi)容分配到其他Istio服務中。
     

    數(shù)據(jù)平面

 
數(shù)據(jù)平面由Envoy服務代理提供支持,該代理使用Istio擴展構建。Proxy會攔截到pod服務端口的傳入流量,并默認攔截來自pod其他容器的所有創(chuàng)出TCP流量。在大部分情況下,無需更改應用程序代碼,僅對應用程序的Kubernetes部署和服務資源規(guī)范進行較小的更改,proxy sidecar 就可以在pod中運行。Proxy sidecar的配置由在Istio 控制面板中的服務進行動態(tài)管理。

 

最終,也許會在某個時間點你需要部署服務網(wǎng)格以確保你的云原生環(huán)境完全正常運行并得到充分保護。因此,熟悉有關服務網(wǎng)格的基礎只是將可以幫助你做出準確的判斷——什么時候應該部署服務網(wǎng)格以及應該如何部署。如果你正在計劃在Kubernetes和其他容器平臺上進行擴展計劃,那么你通過了解Istio的設計和功能以及它如何降低容器化微服務和云原生環(huán)境的固有復雜性,你可以知道Istio是一個功能強大且快速改進的解決方案并且正在積極增強彈性伸縮能力、安全性以及管理的簡易性。

 

如果企業(yè)繼續(xù)采用云原生和分布式架構,那么Istio的服務網(wǎng)格功能以及底層基礎架構的網(wǎng)絡控制和Kubernetes的安全實踐將會極大程度解放DevOps團隊在彈性伸縮和管理應用程序基礎架構上的壓力。

 

在10月9日GA的Rancher 2.3版本中,正式集成了Istio,極大簡化了Istio的安裝和配置。你只需要在UI中使用工具菜單,即可啟動Istio。Rancher中現(xiàn)已內(nèi)置支持:
 

  • 用于流量和遙測可視化的Kiali儀表板

  • 用于追蹤的Jaeger

  • 用于監(jiān)控和可觀察性的Prometheus和Grafana

 
如果你還想了解更多關于Rancher 2.3的新功能,歡迎參加我們在下周六(10月26日)舉辦的技術沙龍,坐標深圳。屆時將有Rancher Labs大中華區(qū)的研發(fā)經(jīng)理現(xiàn)場介紹并demo Rancher 2.3的新功能,點擊此處,趕緊報名啦!

 

歡迎添加小助手(×××:×××),進官方技術群,了解更多Kubernetes使用攻略

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI