Istio像鳥一樣輕盈?微網關博客系列(4)

ServiceMesher2018-12-07 00:29:27

作者:David Mckenna 譯者:李守超 校對:楊傳勝 原文:https://apifriends.com/microservices/istio-microgateway-blog/

“它是一隻鳥,它是一架飛機,它是超級……”。不,等等,它是Istio!即使你眯著眼睛,也能夠看出來!什麼是Istio?超級英雄有各種形狀和大小! 今天,在架構中,Kubernetes是超人。它很容易被認出來,它是當今最強大的雲(和本地)超級英雄:刀槍不入,飛來飛去,總是隨叫隨到,安全,值得信賴...

正如電影《蟻人2:黃蜂女現身》,我想談談微服務架構中最小的超級英雄,被稱為Istio!Istio擁有超級英雄的一些最佳品質,混亂必定被遏制,並保衛銀河系的正常秩序。

在漫畫的世界中,最小的超級英雄可以說是Ant-Man。在微服務的世界中,它絕對是Istio,就像Ant-Man一樣,Istio小巧,快速,靈活,強大。超人和Kubernetes非常適合解決大問題,但在狹小的空間裡它們反而顯得很笨拙並且很慢。Ant-Man和Istio則在這些環境中表現出色,事實上,它們正是出於這個原因而設計的(關注點分離SOC)。

Istio - 微服務部署的小英雄 - 就像Ant-Man(圖像鏈接)

Istio提供統一方法來管理,保護和監控微服務。我們之前聽過這個,對吧?Netflix技術棧提供Eureka(路由),Hystrix(彈性/容錯)和Zuul(安全/ API管理)。Kubernetes也解決了許多同樣的問題; 那麼,令人奇怪的是為什麼Istio很重要?

Istio於2017年5月由Google,IBM和Lyft聯合推出。Istio並沒有像Kubernetes那樣大張旗鼓-有點像《復仇者聯盟3-無限戰爭》那樣炒作和《蟻人2:黃蜂女現身》低調對比,但它確實有獨特的作用。它起著的作用,帶來了巨大的價值––因為它簡化了困難問題,使開發變得更容易。

微網關的一個關鍵作用是降低了開發人員工作的複雜度。開發人員可以專注於重要的業務邏輯,而不用擔心他或者她的服務如何處理常見的網絡功能,如路由和負載均衡;彈性功能,如重試或者超時;安全功能,如身份驗證,授權和服務級別的監控和跟蹤。

Istio基於輕量級的Sidecar實現管理服務之間的流量。為了在微服務架構中支持Istio,部署Sidecar代理(基於Envoy)被部署到整個環境中。Sidecars負責攔截服務之間的網絡通信。Envoy支持針對自定義協議需求的L3/L4過濾器和針對HTTP/2流量的L7路由。當您部署了所有的Sidecar的時候,就獲得了

帶有和不帶sidecar的微服務架構。使用sidecar=服務網格

如果仔細觀察設計,我們就能發現架構設計的優雅。考慮到Envoy是以“進程外”的方式部署,這意味著它和服務進程相互獨立,由此帶來了好處。此外,由於它不在服務進程內,因此可以提供治理層,而無需嵌入類庫並在服務代碼中提供醜陋的註釋(如Hystrix)。最後,也是最顯而易見的,它解決了跨語言問題。大家可以在任何微服務之前部署Envoy代理,不論服務的原始開發語言:java,javascript,go,比較老的開發語言,甚至COBOL(不開玩笑,如果它運行在容器中,沒問題)。作為開發人員,您僅僅需要關注在能為公司賺錢的業務邏輯上,而不是微服務編排的複雜性問題上。

Istio概述(圖像鏈接)

上圖描述了Istio技術棧的主要組件。該圖可以在邏輯上分為兩部分:

1. 數據平面是由一組調解和控制微服務之間的所有入口和出口的網絡通信的Envoy代理組成,數據平面也作為策略執行者並且可以收集遙測信息。就像Ant-Man一樣在服務之間快速來回跑,確保微服務之間正常運行。數據平面提供以下功能:

2. 控制平面是負責管理和配置代理服務器完成流量路由,配置Mixer組件執行策略和收集遙測信息。可以把它想象成Ant-Man獲得如何完成任務的指揮中心。

Envoy代理從Pilot得到它的流量管理規則。Pilot允許您指定要用於在代理之間路由流量的規則,以及配置故障恢復功能(例如超時,重試和斷路器)和故障注入。

Mixer 負責在服務網格上執行訪問控制和使用策略,並從Envoy代理和其他服務收集遙測數據。

Citadel 通過內置身份和憑證管理提供強大的服務到服務和最終用戶身份驗證。

我們一直在我們的環境中嘗試Istio,看看它到底能為我們提供什麼,以及它如何幫助我們將微服務帶入生產準備階段。Istio為我們提供了大量開箱即用的可見性,而團隊無需提供服務。另外,請記住,我們使用的一些服務還沒有在內部構建,因此Istio允許我們通過捕獲和記錄入口和出口周圍的數據點來“窺探”這些黑盒子。

Istio Dashboard(使用Grafana Istio附加組件)顯示微服務指標(圖像鏈接)

此外,由於Istio控制服務的所有入口和出口流量,因此可以使用Zipkin等工具捕獲和顯示覆雜的微服務鏈路跟蹤。

Zipkin跟蹤服務之間的調用

Istio採用外交官模式,使其易於擴展。Istio可以插入許多不同的指標/遙測或日誌系統,也可以用於執行用戶自定義策略。從根本上說,您可以添加現有適配器或為您想要交互的系統構建自己的適配器。

正如我們之前闡述的那樣,當服務與另一個服務交互時,網絡上可能出現許多問題。Istio旨在通過阻止連鎖故障並支持採用穩定性模式來提高彈性。Istio允許您在不更改應用程序代碼的情況下使用斷路器,超時/重試,速率限制和其他高級彈性功能。它甚至可以讓您通過故障注入進行查看服務在故障情況下的行為(中止,響應延遲等)。

就像即將上映的電影一樣,我希望你現在知道微網關和Istio比你想象的要強大得多。

圖片來自《蟻人2:黃蜂女現身》預告片

有關更多microgateway信息,請閱讀本系列中的其他博客:

  • 第1部分:流量管理

  • 第2部分:邊緣到內部

  • 第3部分:誰是凶手?

作者簡介:

大衛麥肯納

http://www.axway.com

David是Axway的SVP工程師,負責指導Axway平臺未來架構。 API管理平臺的專家,包括API網關,API管理器 和API門戶。

相關閱讀推

  • 容器、服務網格和 API 網關:從邊緣開始

  • Istio Ingress Gateway中的Envoy配置解析

  • 8款開源的Kubernetes Ingress Controller/API Gateway推薦

  • 教程|Istio1.1.0下的TCP流量控制

  • Istio微服務平臺集成實踐

點擊【閱讀原文】跳轉到ServiceMesher網站上瀏覽可以查看文中的鏈接。

社區活動

11月25日(上週日),上海,ServiceMesher社區和螞蟻金服聯合主辦的第四屆Service Mesh Meetup完美收官,感謝INNOSPACE+提供場地支持,以及諧雲科技、Apache Skywalking社區和電子工業出版社的大力支持。後續PPT分享請關注社區官網http://www.servicemesher.com或本微信公眾號。

  • SOFAMesh(https://github.com/alipay/sofa-mesh)基於Istio的大規模服務網格解決方案

  • SOFAMosn(https://github.com/alipay/sofa-mosn)使用Go語言開發的高性能Sidecar代理

Istio

IBM Istio

  • 11月1日 Istio初探

  • 11月8日 Istio上手

  • 11月15日 Istio的安全管理

  • 11月22日 Envoy

  • 11月29日 使用Istio來監控和可視化微服務

  • 12月6日 Istio mixer - 基本概念,策略、遙測與擴展

  • 12月13日 Istio跨雲管理方案解析

  • 12月20日 Istio使用案例:Serverless 平臺knative

  • 詳情請參考:IBM微講堂之年度大戲《Istio系列》

合作社區

參與社區

以下是參與ServiceMesher社區的方式,最簡單的方式是聯繫我!

  • 加入微信交流群:關注本微信公眾號後訪問主頁右下角有獲取聯繫方式按鈕,添加好友時請註明姓名-公司

  • 社區網址:http://www.servicemesher.com

  • Slack:https://servicemesher.slack.com (需要邀請才能加入)

  • GitHub:https://github.com/servicemesher

  • Istio中文文檔進度追蹤:https://github.com/servicemesher/istio-official-translation

  • Twitter: https://twitter.com/servicemesher

  • 提供文章線索與投稿:https://github.com/servicemesher/trans


閱讀原文

TAGS: