AWS App Mesh:用於Envoy的服務網格控制平面

亞馬遜發佈了AWS App Mesh,這是一種服務網絡,允許開發人員標準化微服務的通信方式、實現微服務之間的通信規則,並將指標、日誌和跟蹤信息直接捕獲到AWS服務和第三方工具中。App Mesh實際上是由AWS託管的Envoy控制平面,Envoy是一個開源的服務網格數據平面代理。

正文

亞馬遜發佈了AWS App Mesh,這是一種服務網絡,允許開發人員標準化微服務的通信方式、實現微服務之間的通信規則,並將指標、日誌和跟蹤信息直接捕獲到AWS服務和第三方工具中。App Mesh實際上是由AWS託管的Envoy控制平面,Envoy是一個開源的服務網格數據平面代理。App Mesh目前可用於Amazon Elastic Container Service(ECS)、Amazon Elastic Container Service for Kubernetes(EKS)和EC2上的Kubernetes。

AWS App Mesh提供了一組API(通過CLI和SDK暴露出來),支持基於服務版本的應用程序間細粒度流量路由規範,例如,支持金絲雀發佈或A/B部署。App Mesh還可以對服務客戶端進行訪問控制和配額限制。利用Envoy提供的功能,可以將流量鏡像到備用環境,以便進行進一步的故障排除,並且可以注入故障進行混沌實驗。不過,部分功能計劃在GA版本中發佈,目前尚未在App Mesh中實現。

要在ECS上部署App Mesh,必須將Envoy代理容器鏡像添加到相關的任務定義中。對於Kubernetes來說,必須將Enovy代理鏡像添加到Kubernetes PodSpec中。Envoy邊車容器使得App Mesh能夠攔截和管理來自相關服務的所有通信,並將指標、日誌和跟蹤信息導到Envoy引導程序配置指定的端點。

AWS App Mesh由以下組件組成:

  • 服務網格:“服務網格”實例是服務間網絡流量的邏輯邊界。
  • 虛擬節點:虛擬節點是指向特定“任務組”的邏輯指針,例如ECS服務或Kubernetes部署。
  • Envoy代理和路由器管理器:Envoy代理及其路由器管理器容器鏡像將微服務任務組配置爲使用爲虛擬路由器和虛擬節點配置的App Mesh服務網狀流量規則。
  • 虛擬路由器:虛擬路由器處理服務網格中一個或多個服務的流量。
  • 路由:路由與虛擬路由器相關聯,它將與服務名稱前綴匹配的流量定向到一個或多個虛擬節點。

AWS App Mesh組件(圖像來自App Mesh文檔)

App Mesh目前主要用於服務到服務“東西向”流量控制和觀察。雖然後GA版本路線圖中列出了“將App Mesh用於攝入路由”這一功能,但App Mesh文檔目前建議使用AWS Elastic Load Balancing處理所有“南北”網絡流量和來自不在組織信任邊界內的客戶端的流量。在App Mesh生態系統之外,基於Envoy的提供攝入支持的其他實現也取得了一定的進展,其中包括Datawire AmbassadorSolo GlooIstio Gateway等開源實現。

AWS表示,他們已經在開發一種服務網格,其中包括遵循“AWS最佳實踐”的控制平面和API。目前,App Mesh發佈了爲Envoy而構建的1.8.0版本,其中包含SigV4的擴展,可以使用AWS認證系統正確驗證Envoy(這項變更計劃被合併到Envoy上游)。具體來說,App Mesh是可插拔的,並將在未來支持定製的Envoy鏡像和Istio Mixer,以及允許AWS增加對其他計算機服務的支持,並且成爲可擴展、健壯、經濟且高效的多租戶控制平面。

社區對該發佈公告的反應不一。包括Shriram Rajagopalan(VMware工程師和Istio貢獻者)在內的一些人表示,示例中的一些內容似乎是在未經確認的情況下從Istio項目中直接拿走的。其他人(如Christian Posta)指出,App Mesh“是AWS的,並不是開源的”。目前,App Mesh示例存儲庫中記錄了一個叫作“Opensource App Mesh Envoy Management Service(EMS)”的後GA版本功能,儘管它並不包含任何有關開源版本的信息。

一些Twitter用戶(包括行業傑出人物Kelsey Hightower在內)質問爲什麼AWS沒有爲現有的Istio項目做出貢獻,並且認爲“有了可靠的功能和乾淨的API,要開始爲Envoy開發一些東西就會更容易,然後在擁有了一個最小可行產品後就可以發佈了”。 AWS開源技術專家Arun Gupta似乎支持這種分析,並表示“Istio與Kubernetes緊密耦合,我們需要能夠擴展工作負載,不僅僅是容器,而是跨AWS的任何工作負載”。雲原生計算基金會首席技術官兼首席運營官Chris Aniszczyk提出了一個有趣的觀點:“還有一個微妙的觀點,即Envoy是中立的,而Istio目前還不是”。

Lyft軟件工程師、Envoy Proxy作者Matt Klein在Twitter分享了一系列有關App Mesh發佈的有趣觀點。關於Envoy項目的主要目標:

Envoy社區對實現我們的目標一直很自信,即創建功能豐富、可擴展且可配置(版本化的類型API)的數據平面,而不是爲了創造一種固執己見的最終用戶體驗。

他認爲,Envoy提供的“雲原生數據平面”以及Kubernetes、Nomad或Mesos等調度程序構成了“新的雲原生操作系統”。他說,這是一個可以在其上“建立、創新和貨幣化”的平臺。

基礎雲原生平臺/操作系統將完全開放,並由主要雲和[P/C/F] aaS提供商提供。實際資金和自主創新將成爲最重要的服務:安全/監控/審計/工作流/UI/等。

並且所有主要雲供應商、PaaS供應商等都將Envoy代理作爲默認的雲原生數據平面,這意味着我們現在可以開始構建,而不必擔心碎片化問題。它太強大了。

Klein還確認了HashiCorpDatadog正在開發App Mesh集成,進一步說明了供應商正在提供更高級別的價值。

AWS App Mesh爲北弗吉尼亞州、俄亥俄州、俄勒岡州和愛爾蘭AWS區域提供各了公共預覽版。使用AWS App Mesh不收取額外費用,客戶只需要爲與服務容器一起運行的App Mesh代理所使用的基礎AWS資源支付費用。

GA版本計劃於2019年發佈。完整的GA版本路線圖後GA版本路線圖可以在AWS APP Mesh示例GitHub存儲庫中找到。有關App Mesh的其他信息可以在“入門”頁面上找到。

查看英文原文https://www.infoq.com/news/2019/01/aws-app-mesh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章