服務網(wǎng)格:微服務的下半場
譯文
【51CTO.com快譯】
如今,云原生應用程序通常被設計為一組在容器中運行的分布式微服務(請參見--https://www.compunneldigital.com/infographic/how-to-modernize-your-legacy-systems-here-are-the-best-practices/),因此人們往往將其稱為容器化的應用程序。這些容器應用主要是基于Kubernetes--這一容器化編排的實際標準。但是隨著微服務的指數(shù)級增長,我們很難在多種服務、加密、身份驗證、授權、以及Kubernetes集群的負載平衡之間,實施和標準化路由。為此,我們需要用到“服務網(wǎng)格(service mesh)”。就像容器是從應用程序中抽象出了操作系統(tǒng)那樣,服務網(wǎng)格則抽象出了如何處理進程之間的通信。
什么是服務網(wǎng)格?
服務網(wǎng)格是一個專用的基礎架構層,它可以被用于處理服務與服務(service-to-service)之間的通信。通過構建云原生的現(xiàn)代化應用,服務網(wǎng)格能夠使用復雜服務拓撲,來可靠地傳遞各種請求。服務網(wǎng)格的實現(xiàn),實際上是與應用代碼一起部署的輕量級網(wǎng)絡代理陣列。換句話說,它是由附加到應用程序中所有pod的sidecar代理所組成。服務網(wǎng)格的概念,隨著與之相連接的云原生應用的迭代,而不斷進化。值得注意的是:服務與服務之間的通信不僅十分復雜,而且涉及到運行時(runtime)行為的基本方面,因此服務網(wǎng)格能對它們進行管理,進而有效地確保端到端的性能與可靠性。
除了為Kubernetes提供服務,服務網(wǎng)格還包括安全性、可視性、以及路由等功能。許多人普遍認為:如果本組織需要實現(xiàn)集中化的控制,那么服務網(wǎng)格就是確保內(nèi)部平臺能夠統(tǒng)一執(zhí)行治理策略的唯一方法。
下面,讓我們來看看企業(yè)是如何通過使用服務網(wǎng)格,配合Kubernetes,來有效地控制服務的安全性、可視性、路由、以及負載平衡。
透明度提高
在一個雜亂且密集的云原生環(huán)境中,要遵循復雜的路由規(guī)則與流程管理著實不易。各種數(shù)據(jù)消息在不同的拓撲結構、以及在基礎架構的不同層次之間,沿著既定的軌跡從一個pod傳遞到另一個pod。而服務網(wǎng)格恰好能為現(xiàn)代化應用程序的服務交付方式(請參見--https://www.compunneldigital.com/blog/modernizing-legacy-systems-with-cloud-native-serverless/),帶來更好的透明性,以方便用戶有效地跟蹤消息的流轉過程。
安全性增強
安全性是服務網(wǎng)格主要關注的一個方面。它能夠確保以集中控制的方式,在整個組織中實現(xiàn)加密、以及細粒度的訪問控制規(guī)則。相對于傳統(tǒng)的單點控制,服務網(wǎng)格能夠全面地控制各種網(wǎng)絡流量,進而提供更好的安全態(tài)勢。
此外,隨著微服務數(shù)量的增加,網(wǎng)絡流量也會隨之增多。這在無形中也方便了攻擊者輕松地攻擊各種通信流。因此,為了確保網(wǎng)絡中流量交互的安全性,服務網(wǎng)格通過提供雙向傳輸層安全(mutual TLS,Transport Layer Security),來提供驗證服務、執(zhí)行安全策略、以及加密服務間流量的全棧式解決方案。
加密
由于微服務之間的通信需求不斷地增加,我們需要通過可靠的加密服務來為其保駕護航。服務網(wǎng)格能夠協(xié)助實現(xiàn)密鑰、證書、以及針對持續(xù)加密的TLS配置管理,因此用戶不再需要手動執(zhí)行加密或證書管理。同時,服務網(wǎng)格提供了基于策略的身份驗證,可以在兩個服務之間建立雙向的TLS配置,以實現(xiàn)服務之間(service-to-service)的安全加密通信,和最終用戶的身份驗證。
可視性
盡管Kubernetes能夠幫助我們有效地保持Pod的運行、以及節(jié)點的CPU和內(nèi)存利用率處于良好狀態(tài),但它無法告知我們到底是誰部署了何種應用程序,以及該應用的性能如何。而服務網(wǎng)格可以通過其提供的服務級別可見性,跟蹤和監(jiān)控功能,來提高分布式服務的可視性。它是目前能夠提供應用級可用性狀態(tài)信息的最佳方法。此外,服務網(wǎng)格還能讓開發(fā)運維團隊了解每個服務在第三、四層以下的運行狀況,以及應用的整體表現(xiàn)。
您可以通過這些可見性,來更好地響應事件和排除故障。例如:如果應用架構中的某項服務出現(xiàn)了性能瓶頸,那么服務網(wǎng)格就可協(xié)助您輕松地切斷某個故障服務,禁用那些無法正常運行的副本,進而保持API的正常響應速度。
路由
過去,在沒有服務網(wǎng)格之前,管理各層的路由和負載平衡責任,都是由應用程序開發(fā)人員所負責的。如今,除了安全性和可視性,企業(yè)還可以通過服務網(wǎng)格的智能路由來控制流量,進而實現(xiàn)服務之間的API調用。此外,它還可以協(xié)助執(zhí)行藍綠部署,即:在不中斷任何服務類型的情況下,安全地推送新的應用升級。
此外,過去在Kubernetes中,那些由side-car代理所控制的內(nèi)容,如今則由一個中心的團隊,來統(tǒng)管安全性、可視性、以及路由規(guī)則等多項服務。
總結
作為云原生棧的關鍵組件,服務網(wǎng)格可謂微服務架構(MSA,microservices architecture)的儀表板。它使用戶能夠對問題進行故障排除、速率限制、流量策略的管控、以及新代碼的測試。通過監(jiān)督、跟蹤和控制所有服務之間的交互,服務網(wǎng)格能夠“一站式”為服務之間的連接、執(zhí)行方式和安全性提供“加持”。
原標題:Service Mesh: The Next Step to Kubernetes in the Era of Microservices 作者: manvi garg
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】