警戒!別讓你的 Service Mesh 變成 Service Mess

做者 | Pankaj Guptagit

編譯 | 雲原生計算編輯部github

原文連接:安全

https://containerjournal.com/topics/container-management/dont-let-your-service-mesh-become-a-service-mess/服務器

導讀:服務網格(Service Mesh)是微服務領域的熱門話題,它一般被認爲是雲原生應用的「北極星架構」。雖然服務網格環境能夠加強微服務通訊的流量管理和安全性,也能夠提供有關這些應用程序中發生的事情的完整描述,但想要實現它、管理它卻不那麼容易。微信

本文將給出一些建議來幫助您簡化這個實現、管理過程。網絡

 

01 肯定重要事項並規劃實現路線
   

對許多公司而言,在微服務之間啓用零信任網絡已成爲當務之急,可是每一個組織的需求卻不盡相同。也許您須要服務網格能夠提供的高級流量管理,也許您須要 Sidecar 代理提供的加強的可觀察性。架構

不管您有什麼需求,都必須對它們進行優先級排序,並在正式開始實施以前得到開發人員,SRE 和 SecOps 團隊的支持,這樣您才能夠集中精力進行工做。併發

注意,服務網格的實現可能會因爲您試圖「一次實現全部一切」的貪婪而失敗。運維

一旦可以正確規劃目標的優先級,就能夠爲服務網格之旅建立路線圖。路線圖應列出您解決實施的順序,並肯定每一個步驟如何與 IT 和業務目標保持一致。分佈式

 

02 如何明智地選擇服務網格?

 

儘管有許多可用的服務網格控制面,但它們並不徹底相同,而且每一個都有不一樣的優點。

選擇服務網格時,首先要確保它支持你要運行的環境。若是你被綁定到諸如 Mesos 或您本身的專有/遺留架構或特定的公共雲之類的系統中,請檢查以確保它受到支持。

其次,肯定要部署的服務網格控制面。儘管全部服務網格控制平面都提供類似的基本功能,但它們具備不一樣的功能和成熟度。要肯定服務網格控制面是否適合您的用例,須要研究它如何在對您重要的區域中堆積。目前,Istio 處於領先地位。例如,Istio 在相互 TLS 方面領先於微服務之間的零信任安全性,而其餘服務仍在追趕。

第三,評估你擁有的技能和資源能讓你輕鬆管理多少複雜性。當你添加功能時,增長服務網格的大小或者添加多個集羣,事情就會變得更加複雜。記住,人們很容易低估這些複雜性,由於你不知道將來會發生什麼。

根據關鍵的「必須具有」項:可觀察性,安全性和流量管理以及您的組織已經具有的技能,選擇最佳的服務網格 架構。問問本身,每一個 pod 是否真的須要一個 sidecar,或者是否有能夠知足您需求的替代或變體架構,例如 Citrix®Service Mesh Lite。

 

03 爲突發事件和複雜性作好準備

 

不管您提早作了多少計劃,在實現服務網格時,您都會遇到許多意想不到的事情。因此計劃,計劃,再計劃。你將來會很感謝本身這麼作~

 

04 要知道代理Proxies並不那麼透明

 

一般,當微服務調用不存在或壓力較大的資源時,該調用會超時。代理的存在會改變應用程序超時,由於每一個微服務都認爲本身幾乎當即收到了其請求。

您的應用程序超時可能須要仔細調整,這裏提供了超時的最佳作法:

http://github.com/chemicL/envoy-timeouts 

另外,代理對 HTTP 流量也不透明。爲了聽從一致性和更好的資源消耗,許多代理將 HTTP 頭轉換爲小寫,事實上,HTTP/2 報頭字段要求所有小寫。若是你的應用程序依賴於區分大小寫的 HTTP 頭,則代理的行爲可能會破壞它。你須要確保代理通訊的細微差異不會破壞你的應用程序,並準備好對代理或應用程序進行微調,以適應特定的生態系統。

 

05 儘早測試,常常測試


服務網格是一個複雜的分佈式系統,具備許多活動部件,而且有不少發生故障的機會。當應用程序失敗時,你須要弄清楚這是應用程序、sidecar 仍是其餘什麼問題。所以,請確保您的實現是漸進的、監控是持續的以及測試是頻繁的。

爲此,必須具備完整的可觀察性堆棧。包括日誌記錄,指標,分佈式跟蹤和服務圖。分佈式跟蹤和服務圖對於服務可觀察性相當重要。分佈式跟蹤監視器監視經過微服務的請求流,以經過每一個微服務躍點創建延遲映射,並幫助你解決延遲問題。服務圖是微服務及其相互依存關係和運行情況的動態圖形表示,它提供了一種簡便的方法來可視化您的環境並發現出現的問題。

雖然這彷佛是常識,但持續測試常常被遺忘或跳過,這會給相關人員帶來挫敗感,並常常致使項目脫軌。積極主動老是沒錯的,能夠考慮編寫一個端到端、24×7的測試服務,該服務能夠持續測試您的微服務。

 

06 爲海嘯般涌來的修訂作好準備

 

今天只是幾個 sidecar,明天就可能變成數千個 sidecar,須要有所準備。您可能須要對默認的 CPU 和 RAM 分配進行調優,以最大程度地減小資源消耗。一樣,一旦開始實現服務網格,修訂的版本就會如潮水般涌向您。必需要有一個計劃,在不中斷生產應用程序的狀況下對數千個 sidecar 代理進行升級。想象一下,這就像必須在沒有人注意到的狀況下,在大篷車裏更換每一輛摩托車上的每一輛側鬥——而車上卻坐着人。

人們說聰明是從你的錯誤中學習,但智慧是從別人的錯誤中學習。服務網格在安全性、高級流量管理和可觀察性方面承諾了不少,但它們實現起來可能很複雜。仔細計劃,並準備好在過程當中作出調整,你的過程將會更順利——甚至可能更有趣!

 

07 關於百度智能云云原平生臺

 

百度智能云云原平生臺,爲客戶建設容器化和無服務器化的基礎設施,提供企業級的微服務治理能力,同時集成源自百度自身多年實踐的 DevOps 工具鏈。保障開發者享受到高效、靈活、彈性的開發與運維體驗,助力企業更高效率低風險地構建雲原生應用,普遍應用於金融、互聯網、製造等各行各業的雲原生轉型階段。

其中天合 Stack 是私有化雲原生技術中臺,包含基於 Kubernetes 的容器雲平臺、基於 Istio 和 SpringCloud 架構的微服務平臺和自研函數計算服務三部分,每部分都可獨立提供服務。

 

重磅!雲原生計算交流羣成立

掃碼添加小助手便可申請加入,必定要備註:名字-公司/學校-地區,根據格式備註,才能經過且邀請進羣。

瞭解更多微服務、雲原生技術的相關信息,請關注咱們的微信公衆號【雲原生計算】

相關文章
相關標籤/搜索