全部產品
Search
文件中心

Alibaba Cloud Service Mesh:出口流量管理綜述

更新時間:Aug 08, 2025

Service Mesh (ASM)在出口流量管理方面,提供了多種靈活且高效的解決方案,為應用程式的安全性、可觀測性和可靠性提供支援。本文將介紹ASM在出口流量管理方面提供的多種功能以及為什麼要使用ASM出口網關。

豐富的出口流量管理能力

服務網格提供了豐富的管理L7出口流量的能力(流量路由、可觀測、安全等),您可以根據需求選擇要如何進行配置來實現相應的功能。

說明

如果應用直接發起HTTPS請求,網格代理只能將其當成普通的TLS流量處理,網格的L7能力將會失效。因此,請確保您的應用發出的請求為HTTP明文請求。網格會根據您的配置,直接將HTTP請求轉寄給外部服務,或者自動將請求轉換成HTTPS請求發往外部服務。

流量路由

在訪問叢集外HTTP服務時,您只需要在服務網格中配置對應的Service Entry,就可以使用例如出口鏡像流量、出口流量按比例路由和虛擬服務中的其他進階能力。如果您訪問的服務是HTTPS協議,需要再配置一個對應的DestinationRule。流量路由能力並不依賴ASM出口網關。

觀測出口流量

如果請求是明文流量,您無需做任何操作即可通過日誌、監控指標和鏈路追蹤等方式觀測出口流量。如果請求的流量需要加密,您只需要配置Service Entry和DestinationRule。應用發起明文流量,Sidecar自動將明文流量加密後進行轉寄。此時可以使用網格完整的可觀測能力,該功能並不依賴ASM出口網關。

出口流量認證/鑒權

ASM針對叢集的出口流量同樣提供了豐富的認證/授權能力。您可以在ASM中實現校正出口流量的JWT、基於請求的L7/L4中繼資料限制特定用戶端訪問等進階安全能力。這些能力需要使用ASM出口網關來實現,請參見出口流量安全模型

出口流量安全模型

對於純TCP流量(非HTTP、非TLS),推薦您使用Kubernetes原生提供的NetworkPolicy來增強其安全性。

預設行為

ALLOW_ANY,網格代理不做任何事情。此時出口流量的行為完全不受控。安全層級最低。

REGISTRY_ONLY

開啟REGISTRY_ONLY,應用只能訪問通過Service Entry註冊過的服務。

由於應用所有者有許可權更改業務Pod的配置,有很多種方式可以讓出口流量繞過Sidecar代理。如果請求繞過Sidecar代理,REGISTRY_ONLY提供的訪問限制將會失效,此時應用可以不受限制的訪問外部服務。因此,REGISTRY_ONLY並不能作為有效安全性原則。

此外,該方案只能限制指定命名空間的工作負載訪問外部服務,無法將控制範圍縮小到特定工作負載層級。

REGISTRY_ONLY和出口網關

出口網關可以作為理想的安全邊界。作為一個單獨的Deployment,其部署行為由網格管理員完全控制,應用所有者無法直接控制出口網關以及其上的安全性原則。

同時,確保只有出口網關所在的節點可以訪問外部服務,其餘節點均無法訪問外部服務。業務Pod無法直接存取外網,如果要讓流量成功發往外部服務,應用所有者需要確保自己的應用對外訪問的流量成功被Sidecar代理,並按照預期被轉寄給出口網關。

流量被透明轉寄到出口網關之後:

  1. 可以在出口網關上配置授權策略,實現細粒度的授權策略或接入自訂授權服務

  2. 如果要訪問的服務是HTTPS服務,可以在出口網關上配置HTTPS升級。出口網關會管理自動HTTPS串連,可以實現跨工作負載的HTTPS串連複用,提升效能。

和Cloud Firewall配合使用

當您使用Cloud Firewall嚴格限制 VPC 或 NAT Gateway的出向流量時,必須為 ASM 出口網關的 Pod 分配一個固定的、可預測的 IP 位址範圍,並將其在防火牆策略中加入白名單。

為實現這一目標,核心思路是確保出口網關 Pod 使用獨立的、僅供其使用的 IP 位址段。在阿里雲 ACK 叢集中,我們提供以下兩種實現方式:

  1. 使用 Terway CNI 為 Pod 分配固定 IP(推薦)。

    如果您的 ACK 叢集網路模式為 Terway,可以直接利用其原生能力為出口網關 Pod 分配固定 IP,並關聯獨立的虛擬 交換器和安全性群組。這是最直接、最簡潔的方案。具體操作,請參見為Pod配置固定IP及獨立虛擬交換器、安全性群組

  2. 使用主機網路(HostNetwork)間接為Pod分配固定IP。

    當無法使用方式一時,可以通過以下步驟,將出口網關 Pod 的 IP 間接固定為其所在節點的 IP:

    • 建立獨佔節點池:建立一個專用的節點池,專門用於運行出口網關。確保此節點池的 IP 範圍與叢集中其他業務 Pod 的 IP 範圍不重疊。具體操作,請參見建立和管理節點池

    • 添加節點汙點 (Taint):為該節點池中的所有節點添加汙點,以防止其他無關的 Pod 被調度到此節點池。

    • 配置出口網關:修改出口網關的部署配置,使其:

      • 啟用主機網路模式 (hostNetwork: true

      • 添加相應的容忍度 (Tolerations),以匹配專用節點池的汙點。

      • 配置親和性 (Affinity),確保 Pod 必須或優先調度到該獨佔節點池。

      完成以上述配置後,出口網關 Pod 將使用其所在節點的 IP 位址作為出口 IP。您只需將該獨佔節點池的 IP 網段加入Cloud Firewall白名單即可。

相關文檔

ASM提供了EgressTrafficPolicy資源,可以快速完成通過出口網關訪問叢集外服務的流量規則配置。具體資訊,請參見使用ASMEgressTrafficPolicy管理出口流量