服務網格入門從閘道器開始 - Christian Posta
兩年多來,我一直在幫助宣傳服務網格和Envoy Proxy。看到社群是如何發展的,更重要的是組織如何開始使用它來解決困難的生產和運營問題,這真是令人驚喜。憑藉我在Red Hat和現在的Solo.io的時間經歷,我很幸運能夠與各組織密切合作,共同開展服務網路採用之旅。
在這段實際,我開發了下面方法來成功地在生產中採用服務網格:
- 深入熟悉最終服務網格的資料平面技術
- 首先使用共享閘道器理想地使用較小部分的流量來運算元據平面
- 選擇應用程式的子集以啟用網狀(基於邊車)網路
- 慢慢啟用提供最大價值的服務網格功能
- 沖洗並重復步驟2-4
我離開Red Hat加入Solo.io的一個重要原因是我們對服務網格的看法,包括這個簡單的採用列表,非常好。本部落格的其餘部分是我們目前如何幫助客戶使用閘道器和資料平面優先方法來採用服務網格。
瞭解Envoy代理
Envoy特使已成為許多服務網格技術的基礎資料平面。像Istio,Consul Connect,AWS App Mesh,Grey Matter(以及其他來自現有API管理供應商的網站)的網格都基於Envoy。
它是一種極其強大,多功能,複雜的技術。過去在訊息傳遞基礎設施上工作的原理就是:將訊息(或位元組)從一個管道傳遞到另一個管道,表面上似乎很容易,但實際上它比你想象的要難得多。理解Envoy的工作方式非常重要,包括各種過濾器,收集的遙測技術以及配置API的工作原理。透過在您的環境中運維Envoy獲得經驗,才是獲得理解它的最好方式。
(banq注:基於K8s的服務網格比訊息系統其實更復雜,同步呼叫服務雖然方便請求響應模型,但是嚴重忽視分散式系統的網路不可靠性,為了防止網路不可靠,各種遙測技術都是事後諸葛亮。但是服務網格作為API閘道器還是值得期待的,可以替代將訊息系統作為API閘道器的模式,但是內部服務之間呼叫還是有同步和非同步之分)
理想情況下,您可以從單個Envoy部署(邏輯單一)開始,部署在您的應用程式前面。
使用基於Envoy的閘道器作為踏腳石
在採用服務網格時,使用Envoy作為共享閘道器是一個很好的起點。在我的書“ Istio in Action”中,我在本書的開頭附近介紹了Istio Gateway資源及其相關配置,因為這是開始使用Istio的最佳方式。Gateway是在Envoy的基礎上構建的,可以在不需要構建完整網格的情況下使用微服務(即,在所有應用程式旁邊注入sidecars)。
使用閘道器來引導您的應用程式意味著您可以獲得執行Envoy的運營體驗以及獲得“service-mesh lite”體驗。當閘道器到位時,您可以獲得一些強大的流量路由控制(包括基於百分比的路由,基於頭/方法的路由,以及影子流量等),TLS終止/直通,TCP控制等。
像Istio Gateway這樣的簡單閘道器可能是一種很好的方式,可以在啟動時為您的群集提供基本流量入口,但是基於Envoy構建的功能更全面的API閘道器可能會帶來更多好處。
基於Envoy的更好的閘道器
現實情況是,當將叢集/未來服務網格之外的客戶端連線到叢集/服務網格中執行的服務時,必須考慮到一個嚴峻的現實:現有組織已經知道流量如何流動並且應該受到保護。
例如,當透過閘道器將流量引入群集或新服務網格時,我們需要解決以下問題:
- 快取記憶體
- 尖峰捕獲/限速
- 終端使用者/客戶端oauth流
- HMAC /訊息簽名
- jwt驗證(包括與現有JWT發行人或身份管理整合)
- Web應用程式防火牆(WAF)
- 訊息轉換
- API編排
還有很多其他,換句話說,這個入口點需要比基本的Envoy閘道器(即Istio的閘道器)更強大和更強大。它需要處理API閘道器中常見的熟悉的邊緣功能。
Solo.io的Gloo是一個基於Envoy Proxy的API閘道器,它提供了兩全其美的優勢:
- 透過簡化採用單個前端閘道器的體驗以及服務網格的墊腳石
- 能夠處理熟悉的API閘道器功能。
(省略Solo營銷介紹....)
總結
如果您正在使用服務網格,請記住上述這種簡單、經過驗證的真實採用方法。特使Envoy是事實上的服務網格資料平面(Linkerd除外 - 至少在此時)並且圍繞Envoy構建策略是重要的第一步。如果您正在探索不是基於Envoy構建的API管理或閘道器L7網路技術,您可能希望重新審視一下,特別是如果您正在尋找一個簡單的服務網格入口通道時。
相關文章
- 在企業組織中採用服務網格的挑戰:從API閘道器到微服務通訊逐步引入 – Christian PostaAPI微服務
- 服務網格社群爭吵最近新動向! - Christian Posta
- 容器、服務網格和API閘道器:它始於邊緣API
- Gateway服務閘道器 (入門到使用)Gateway
- 使用服務網格提高安全性:Christian Posta帶你探索Istio的新功能
- 為微服務構建服務網格的Istio自身卻走向微服務的反面單體架構 – Christian Posta微服務架構
- Spring Cloud入門教程(五):API服務閘道器(Zuul) 上SpringCloudAPIZuul
- 服務閘道器過濾器過濾器
- 微服務(七)Gateway服務閘道器微服務Gateway
- springcloud服務閘道器-gatewaySpringGCCloudGateway
- 第一章 微服務閘道器 - 入門微服務
- 構建SpringCloud閘道器服務SpringGCCloud
- springcloud(十):服務閘道器zuulSpringGCCloudZuul
- 服務網格Service Mesh、API閘道器和訊息佇列的對比 - Wolfram HempelAPI佇列
- 微服務閘道器微服務
- 淺談服務閘道器和聯邦雲
- 微服務閘道器- Nginx微服務Nginx
- SpringCloud系列之API閘道器(Gateway)服務ZuulSpringGCCloudAPIGatewayZuul
- Spring Cloud構建微服務架構-服務閘道器SpringCloud微服務架構
- 微服務架構中整合閘道器、許可權服務微服務架構
- 基於.NET CORE微服務框架 -Api閘道器服務管理微服務框架API
- .NET Core API閘道器Ocelot(一)【概覽,開始】API
- 在Centos7伺服器上搭建閘道器服務CentOS伺服器
- 《springcloud 二》微服務動態閘道器,閘道器叢集SpringGCCloud微服務
- 黑客入門,從HTB開始黑客
- .Net Core微服務入門全紀錄(五)——Ocelot-API閘道器(下)微服務API
- .Net Core微服務入門全紀錄(四)——Ocelot-API閘道器(上)微服務API
- k8s-服務網格實戰-入門IstioK8S
- 微服務中的閘道器微服務
- Spring Cloud實戰系列(五) - 服務閘道器ZuulSpringCloudZuul
- Spring Cloud構建微服務架構—服務閘道器過濾器SpringCloud微服務架構過濾器
- spring cloud構建網際網路分散式微服務雲平臺-服務閘道器過濾器SpringCloud分散式微服務過濾器
- .NET Core微服務開發閘道器篇-ocelot微服務
- spring cloud構建網際網路分散式微服務雲平臺-服務閘道器zuulSpringCloud分散式微服務Zuul
- 【SpringCloud技術專題】「Gateway閘道器係列」(3)微服務閘道器服務的Gateway全流程開發實踐指南(2.2.X)SpringGCCloudGateway微服務
- 從頭開始實現神經網路:入門神經網路
- spring cloud微服務分散式雲架構-服務閘道器過濾器SpringCloud微服務分散式架構過濾器
- 從零開始學typescript構建一個rest風格web服務TypeScriptRESTWeb