【51CTO.com快譯】

如今,雲原生應用程序通常被設計爲一組在容器中運行的分佈式微服務(請參見-- https://www.compunneldigital.com/infographic/how-to-modernize-your-legacy-systems-here-are-the-best-practices/ ),因此人們往往將其稱爲容器化的應用程序。這些容器應用主要是基於Kubernetes--這一容器化編排的實際標準。但是隨着微服務的指數級增長,我們很難在多種服務、加密、身份驗證、授權、以及Kubernetes集羣的負載平衡之間,實施和標準化路由。爲此,我們需要用到“服務網格(service mesh)”。就像容器是從應用程序中抽象出了操作系統那樣,服務網格則抽象出了如何處理進程之間的通信。

什麼是服務網格?

服務網格是一個專用的基礎架構層,它可以被用於處理服務與服務(service-to-service)之間的通信。通過構建雲原生的現代化應用,服務網格能夠使用複雜服務拓撲,來可靠地傳遞各種請求。服務網格的實現,實際上是與應用代碼一起部署的輕量級網絡代理陣列。換句話說,它是由附加到應用程序中所有pod的sidecar代理所組成。服務網格的概念,隨着與之相連接的雲原生應用的迭代,而不斷進化。值得注意的是:服務與服務之間的通信不僅十分複雜,而且涉及到運行時(runtime)行爲的基本方面,因此服務網格能對它們進行管理,進而有效地確保端到端的性能與可靠性。

除了爲Kubernetes提供服務,服務網格還包括安全性、可視性、以及路由等功能。許多人普遍認爲:如果本組織需要實現集中化的控制,那麼服務網格就是確保內部平臺能夠統一執行治理策略的唯一方法。

下面,讓我們來看看企業是如何通過使用服務網格,配合Kubernetes,來有效地控制服務的安全性、可視性、路由、以及負載平衡。

透明度提高

在一個雜亂且密集的雲原生環境中,要遵循複雜的路由規則與流程管理着實不易。各種數據消息在不同的拓撲結構、以及在基礎架構的不同層次之間,沿着既定的軌跡從一個pod傳遞到另一個pod。而服務網格恰好能爲現代化應用程序的服務交付方式(請參見-- https://www.compunneldigital.com/blog/modernizing-legacy-systems-with-cloud-native-serverless/ ),帶來更好的透明性,以方便用戶有效地跟蹤消息的流轉過程。

安全性增強

安全性是服務網格主要關注的一個方面。它能夠確保以集中控制的方式,在整個組織中實現加密、以及細粒度的訪問控制規則。相對於傳統的單點控制,服務網格能夠全面地控制各種網絡流量,進而提供更好的安全態勢。

此外,隨着微服務數量的增加,網絡流量也會隨之增多。這在無形中也方便了攻擊者輕鬆地攻擊各種通信流。因此,爲了確保網絡中流量交互的安全性,服務網格通過提供雙向傳輸層安全(mutual TLS,Transport Layer Security),來提供驗證服務、執行安全策略、以及加密服務間流量的全棧式解決方案。

加密

由於微服務之間的通信需求不斷地增加,我們需要通過可靠的加密服務來爲其保駕護航。服務網格能夠協助實現密鑰、證書、以及針對持續加密的TLS配置管理,因此用戶不再需要手動執行加密或證書管理。同時,服務網格提供了基於策略的身份驗證,可以在兩個服務之間建立雙向的TLS配置,以實現服務之間(service-to-service)的安全加密通信,和最終用戶的身份驗證。

可視性

儘管Kubernetes能夠幫助我們有效地保持Pod的運行、以及節點的CPU和內存利用率處於良好狀態,但它無法告知我們到底是誰部署了何種應用程序,以及該應用的性能如何。而服務網格可以通過其提供的服務級別可見性,跟蹤和監控功能,來提高分佈式服務的可視性。它是目前能夠提供應用級可用性狀態信息的最佳方法。此外,服務網格還能讓開發運維團隊瞭解每個服務在第三、四層以下的運行狀況,以及應用的整體表現。

您可以通過這些可見性,來更好地響應事件和排除故障。例如:如果應用架構中的某項服務出現了性能瓶頸,那麼服務網格就可協助您輕鬆地切斷某個故障服務,禁用那些無法正常運行的副本,進而保持API的正常響應速度。

路由

過去,在沒有服務網格之前,管理各層的路由和負載平衡責任,都是由應用程序開發人員所負責的。如今,除了安全性和可視性,企業還可以通過服務網格的智能路由來控制流量,進而實現服務之間的API調用。此外,它還可以協助執行藍綠部署,即:在不中斷任何服務類型的情況下,安全地推送新的應用升級。

此外,過去在Kubernetes中,那些由side-car代理所控制的內容,如今則由一箇中心的團隊,來統管安全性、可視性、以及路由規則等多項服務。

總結

作爲雲原生棧的關鍵組件,服務網格可謂微服務架構(MSA,microservices architecture)的儀表板。它使用戶能夠對問題進行故障排除、速率限制、流量策略的管控、以及新代碼的測試。通過監督、跟蹤和控制所有服務之間的交互,服務網格能夠“一站式”爲服務之間的連接、執行方式和安全性提供“加持”。

原標題:Service Mesh: The Next Step to Kubernetes in the Era of Microservices 作者: manvi garg

【51CTO譯稿,合作站點轉載請註明原文譯者和出處爲51CTO.com】

【責任編輯:龐桂玉 TEL:(010)68476606】

相關文章