全部產品
Search
文件中心

Alibaba Cloud Service Mesh:ASM網關概述

更新時間:Jan 13, 2025

ASM網關可以為網格內應用提供統一的流量入口和出口,實現端到端安全加密和流量控制。本文介紹ASM入口網關和出口網關的相關功能。

入口網關

入口網關為Kubernetes叢集提供了七層網關功能,根據HTTP請求的內容將來自同一個TCP連接埠的請求分發到不同的Kubernetes服務。ASM提供了網關的全生命週期管理,支援多種協議,具有強大的流量管理、安全以及可觀測能力。

功能

描述

相關文檔

生命週期管理

當您的應用程式需要為使用者提供統一的公網或內網入口時,可以在Kubernetes叢集中部署ASM入口網關(Ingress Gateway)。入口網關作為統一的訪問入口,可以簡化流量的管理和路由,並利用七層負載平衡能力根據HTTP請求的路徑、主機頭或其他屬性將流量智能分發至相應的後端服務。您可以通過ASM控制台管理入口網關。

建立入口網關

使用ASM Serverless網關提升高可用性和彈性

ASM Serverless網關是ASM推出的全新服務網格網關形態,更適合應對突發流量,降低計算成本,提升穩定性。相比運行於資料面ACK Kubernetes叢集之上的ASM網關形態,ASM Serverless網關具有高穩定性、高彈性和低成本的優勢,以Serverless的形式單獨部署,並完全由ASM管理,具備獨立於ACK Kubernetes叢集的高可用性。

使用ASM Serverless網關提升高可用性和彈性

使用網路型負載平衡NLB

網路型負載平衡NLB(Network Load Balancer)是阿里雲面向萬物互聯時代推出的新一代四層負載平衡,支援超高效能和自動彈效能力,具有更高的可用性,能夠進一步提升網關流量的穩定性。ASM網關支援使用NLB。配置ASM網關的ServiceType為LoadBalancer時,預設會關聯一個CLB作為網關Service的負載平衡器。

在ASM入口網關中使用網路型負載平衡NLB

多協議支援

ASM網關提供了圖形化建立目標規則和虛擬服務的功能,無需您編寫YAML檔案,簡化流量管理操作。

使用ASM網關的流量路由功能

當您需要最佳化網路拓撲、擴容應用伺服器或調整業務流量時,可以通過ASM的流量管理中心實現TCP應用流量的平滑遷移,確保關鍵業務的連續性和服務的高可用性。

通過ASM實現TCP應用流量遷移

當您需要對外提供加密的HTTPS訪問時,可以通過ASM網關啟用HTTPS安全服務。ASM網關支援認證的動態載入,您可以即時動態地配置私密金鑰、伺服器憑證和根憑證,無需重啟網關或依賴Secret卷掛載,降低操作複雜性並消除因重啟造成的服務中斷風險。ASM網關能夠監控並管理多個認證和私密金鑰對,為不同的主機提供靈活且安全的通訊能力,加強資料轉送的安全性。

通過ASM網關啟用HTTPS安全服務

您可以通過ASM入口網關安全地訪問網格內的gRPC服務,實現對gRPC服務的精確存取控制,提升服務治理能力,保障服務間通訊的安全性。

通過ASM入口網關訪問網格內gRPC服務

ASMGrpcJsonTranscoder用於進行JSON/HTTP-gRPC協議轉碼。用戶端可以使用HTTP/JSON訪問服務網格內的gRPC服務。

基於ASMGrpcJsonTranscoder實現以HTTP/JSON方式請求網格內gRPC服務

WebSocket是一種網路傳輸協議,可在單個TCP串連上進行全雙工系統通訊,位於OSI模型的應用程式層。WebSocket允許服務端主動向用戶端推送資料。遵守WebSocket協議的服務即為WebSocket服務。

通過入口網關訪問網格內WebSocket服務

常用流量管理

在大促等情境下,瞬間洪峰流量會使系統超出最大負載,調用大量堆積,導致整個調用鏈路卡死。ASM提供了本地限流功能,支援對網關和服務進行流量限制,達到保護系統的目的。

為入口網關配置本地限流

在面臨高流量衝擊、服務過載、資源耗盡或惡意攻擊的情況下,通過對入口網關的特定路由配置全域限流,可以實現對流量的精準控制,從而保護後端服務的穩定性,降低成本並提升使用者體驗。

為入口網關配置全域限流

ASM支援通過編寫VirtualService和DestinationRule等資源,實現微服務的無侵入的流量治理能力,包括流量路由、限流、熔斷、鏡像流量等功能。

使用ASM路由級熔斷功能

Gateway API是由SIG-NETWORK社區管理的開源專案,通過提供可表達的、可擴充的、面向角色的介面來改善服務網路。您可以使用Gateway API對叢集內應用訪問的路由規則進行條件限制。

使用Gateway API定義路由規則

ASM支援在管理的叢集中使用Ingress資源,並指定特定的ASM網關作為Ingress Controller。

使用ASM網關作為Ingress Controller暴露叢集內的服務

流量鏡像功能可以將生產的流量鏡像拷貝到測試叢集或者新的測試版本中,在不影響實際生產環境的情況下,測試具有實際生產流量的服務,協助您減低版本變更的風險。

基於網格層跨叢集使用流量鏡像

會話保持(Session Affinity)又稱為粘性會話(Sticky Sessions),是一種負載平衡技術,能夠確保來自同一使用者(或會話)的所有請求均被發送到同一後端伺服器。該技術適用於需要保持使用者狀態的應用,例如線上購物車、登入工作階段和個人化等。

在ASM網關中實現會話保持

安全支援及認證動態載入

當您需要對外提供加密的HTTPS訪問時,可以通過ASM網關啟用HTTPS安全服務。ASM網關支援認證的動態載入,您可以即時動態地配置私密金鑰、伺服器憑證和根憑證,無需重啟網關或依賴Secret卷掛載,降低操作複雜性並消除因重啟造成的服務中斷風險。ASM網關能夠監控並管理多個認證和私密金鑰對,為不同的主機提供靈活且安全的通訊能力,加強資料轉送的安全性。

通過ASM網關啟用HTTPS安全服務

在ASM網關和Sideca代理之間,所有資料均通過mTLS隧道傳輸。如果應用注入了Sidecar,建議在網關處配置TLS終止,此時仍能保證全程加密。如果應用沒有注入Sidecar或者有其他特殊情況,ASM網關同樣支援TLS透傳。

通過ASM網關啟用TLS透傳

ASM網關支援HTTPS安全支援和認證動態載入功能,以此提高ASM網關的安全性。您可以在ASM網關的CLB側綁定認證,建立HTTPS類型的監聽。HTTPS請求將在CLB側解密,然後以HTTP請求的形式發送給後端的網關Pod。

在ASM網關的CLB側建立HTTPS監聽

ASM認證管理可以在網格內進行統一的認證同步,能夠更好地支援ASM的多叢集情境,還提供了認證資訊展示和到期警示等功能,方便您進行認證維護。

使用ASM認證管理

當面臨因使用老舊TLS協議引發的安全隱患時,您可以在ASM網關配置TLS協議版本至最新安全標準,通過禁用不安全的舊版本(如TLS 1.0和1.1)並啟用更強大的TLS 1.2及更高版本,從而有效抵禦中間人攻擊、防止資料泄露等安全風險,確保服務與用戶端之間HTTPS串連的穩固性和安全性。

在ASM網關配置TLS協議版本增強安全性

藉助ASM網關,您可以配置帶有mTLS安全機制的gRPC服務,確保僅授權的用戶端能夠訪問,並在整個資料轉送過程中實施端到端加密和雙向身分識別驗證,有效防止資訊被竊聽、篡改及非法訪問。

通過ASM網關配置基於mTLS的gRPC服務

ASM支援以圖形化的方式為網域名稱添加認證,便於您使用HTTPS等協議訪問網域名稱,提升服務網關的安全性。

為網域名稱添加認證

ASM網關支援對接WAF,並且可以通過自訂訪問日誌格式來查看WAF對回源請求添加的Header,更方便線上營運。

使用ASM網關對接WAF

cert-manager是一個認證生命週期管理系統,支援認證的申請、部署等功能。您可以使用cert-manager頒發ASM網關的認證,從而可以使用HTTPS協議通過ASM網關訪問服務,保證資料轉送的安全。

使用cert-manager管理網關的認證

授權管理

當您需要精確控制使用者對服務的存取權限時,可以在ASM網關中配置黑白名單。ASM網關支援從源地址、HTTP網域名稱、連接埠、遠程源IP四個維度對流量進行精確控制,以保障網格內應用的安全。本文以源地址為例,介紹如何在ASM網關中配置IP黑名單和白名單。

在ASM網關中配置黑白名單

當您需要按照自身需求定製存取控制策略時,例如基於HTTP網域名稱、HTTP路徑、HTTP方法等對請求進行鑒權,可以在ASM網關上使用自訂授權服務,確保只有經過認證的使用者才能訪問關鍵服務。

在ASM網關上使用自訂授權服務

OIDC(OpenID Connect)是基於OAuth 2.0協議實現的一種身份認證與授權協議,主要用於實現單點登入(SSO)。通過在ASM網關中配置OIDC單點登入,您可以藉助阿里雲IDaaS或其他符合OIDC標準的身份提供者,無需修改應用本身,即可實現一次登入、多次訪問。這不僅增強了應用的安全性,還簡化了應用系統的開發和管理。

在ASM網關中配置OIDC單點登入

JWT(JSON Web Token)是一種常用的身份認證和鑒權機制。JWT中會攜帶一些使用者資訊和一個儲存加密後資訊的欄位。將加密後的資訊欄位進行解密,與原始使用者資訊欄位進行比較,可以驗證該使用者的資訊是否有效,從而完成身份認證。您可以在ASM網關中配置JWT認證。

在ASM網關中配置JWT認證

當您需要實現動態存取控制時,可以在ASM網關中接入OPA(Open Policy Agent)執行引擎,根據使用者身份或請求內容定製授權策略,即時控制服務間的通訊行為,有效防止未經授權的訪問並降低資料泄露風險,加強網格應用的安全性。以入口網關訪問httpbin應用為例,本文介紹如何在ASM網關上使用OPA執行引擎對到達網關的請求進行認證和鑒權。

在ASM網關中接入OPA執行引擎

ASM支援“無侵入”的接入自訂授權服務,以實現網格內應用的單點登入,降低應用的改造、營運等成本。

ASM整合阿里雲IDaaS實現網格內應用單點登入

使用自建的Keycloak作為IdP來提供身份服務,可以實現網格內應用的單點登入。

ASM中整合Keycloak實現網格內應用單點登入

在服務網格中配置JWT(JSON Web Token)請求授權,可以實現來源認證,又稱為終端使用者認證。在接收使用者請求時,該配置用於認證要求標頭資訊中的Access Token是否可信,並授權給來源合法的請求。

在ASM中對入口網關進行JWT請求鑒權

當一個用戶端去訪問另一個不同網域名稱或者同網域名稱不同連接埠的服務時,就會發出跨域請求。如果此時該服務不允許其進行跨域資源訪問,那麼就會因為跨域問題而導致訪問失敗。ASM支援在Virtualservice中配置corsPolicy,實現跨域訪問。

在ASM中實現跨域訪問

在ASM網關之前不存在7層代理或者已存在7層代理的情境下,限制特定IP訪問網格內應用。

限制特定IP訪問網格內應用

定製化功能

ASM支援多個入口網關使用同一個網關配置規則,簡化您的配置操作。

為多個入口網關配置統一的網關規則

您可以為ASM網關綁定多個CLB,實現多個CLB可以訪問一個ASM網關。

使用多個CLB訪問ASM網關

為了對ASM的入口網關進行訪問保護,需要擷取用戶端真實IP,以便使用授權原則設定訪問入口網關的IP黑名單和白名單。

在HTTP要求標頭中擷取用戶端真實IP

ASM支援建立IPv6地址的ASM網關,提高網關安全性。

建立IPv6網關

當資料面Kubernetes叢集中的Pod無法訪問入口網關的CLB地址時,您可以在Kubernetes叢集內通過ClusterIP或者服務名等方法訪問CLB地址。

如何解決Kubernetes叢集中的Pod無法訪問入口網關的CLB地址的問題?

如果您的用戶端使用HTTPS,且用戶端對於HTTP/2的支援存在問題,但是不便修改,可以在ASM網關側禁用HTTP/2協議。

在入口網關側HTTPS中禁用HTTP/2

出口網關

ASM提供出口網關服務,為網格內應用提供統一的流量出口。您可以通過控制台或KubeAPI的方式管理出口網關。

功能

描述

相關文檔

生命週期管理

當您的應用程式需要統一的公網或內網出口時,可以在Kubernetes叢集中部署ASM出口網關(Egress Gateway)。出口網關作為統一的訪問出口,可以簡化叢集對外部服務流量的管理和路由。

建立出口網關

定製化功能

當網格內的應用需要與外部服務進行通訊時,您可以使用出口網關作為統一的出口,集中管理所有的出站流量。通過配置出口網關,您可以實現對流量的安全控制和路由,提升網格內應用程式的安全性和可觀測性。

為網格內流量配置統一的出口網關

ASM自1.16.4版本起,支援使用ASMEgressTrafficPolicy CRD。

使用ASMEgressTrafficPolicy管理出口流量

網關規則

網關規則定義了在網格出入口操作的負載平衡器,用於接收傳入或傳出的HTTP/TCP串連。

功能

描述

相關文檔

生命週期管理

您可以在ASM控制台對網關規則進行建立、修改和刪除操作。

管理網關規則

網關進階特性

ASM支援配置高可用的ASM網關,提供優雅下線、可觀測性等功能,降低流量的損耗,減少您的營運成本。

功能

描述

相關文檔

高可用性配置

配置高效能和高可用的ASM網關,可以保障業務的連續性。

配置高效能和高可用的ASM網關

將網關Pod部署到指定節點,可以提高ASM網關的高可用性並增強與業務Pod的隔離性。

部署網關Pod到指定的節點

ASM Serverless網關是基於虛擬節點和ECI提供的一種Serverless網關形態,用於支撐各種彈性和免節點營運的情境。

使用ASM Serverless網關支撐彈性業務情境

ASM網關作為業務的流量入口,為了避免服務不可用,您可以通過配置Pod反親和性策略等方法提高網關高可用性。

增強ASM網關高可用性

ASM網關在縮容或滾動重啟時,會刪除網關Pod而導致少量流量損失。啟用優雅下線功能後,即使刪除網關Pod,現有串連在一定時間內仍能正常傳輸,避免流量損失。

使用優雅下線功能避免流量損失

ASM網關支援同時部署在多個叢集,以提高服務可用性。您可以將服務部署在多個叢集,然後為多叢集配置統一的入口網關,即可代理多個叢集對應的入口流量。

為多個叢集配置統一的入口網關

網關作為業務的流量總入口和總出口,對可用性有著極高的要求。為了更好地保證升級後業務的連續性,ASM網關支援灰階升級。您可以通過配置先啟動一個新版本的網關Pod來驗證流量,驗證通過後再完全升級網關。驗證過程中如果出現任何問題,您可以隨時刪除這個新版本的Pod,問題解決後再繼續升級。

ASM網關灰階升級

可觀測效能力

ASM網關的訪問日誌配置主要分為產生和採集。產生指網關列印日誌到標準輸出,您可以自訂在訪問日誌中列印哪些欄位;採集指將網關列印的日誌採集到阿里雲Log Service,阿里雲Log Service可以提供日誌的儲存、分析以及展示等功能。產生和採集是分開配置的,您可以自行決定是否產生或採集日誌。

產生和採集ASM網關訪問日誌

ASM網關的監控指標配置主要分為產生和採集。產生指網關本身產生相應的監控指標,您可以自訂網關產生哪些監控指標;採集指將產生的監控指標採集到阿里雲ARMS Prometheus,阿里雲ARMS可以提供監控指標的儲存、分析以及展示等功能。產生和採集是分開配置的,您可以自行決定是否產生或採集監控指標。

產生和採集ASM網關監控指標

請求Payload處理

在應用程式中添加HTTP回應標頭,可以提高Web應用程式的安全性。

在ASM中通過EnvoyFilter添加HTTP回應標頭

啟用ASM網關的壓縮能力,將對HTTP請求的Response進行壓縮,可以提高響應速度,降低流量消耗。

為ASM網關啟用壓縮

與現有系統整合

ASM支援將您自建的Istio IngressGateway或Nginx Ingress遷移至ASM網關,進行統一的管理,降低您的維護成本,提高營運效率。

功能

描述

相關文檔

遷移自建網關

ASM支援自建Istio IngressGateway遷移至ASM網關。

自建Istio IngressGateway如何遷移至ASM網關

ASM支援Nginx Ingress遷移至ASM網關。

Nginx Ingress如何遷移至ASM網關

ASM支援將Nginx的常用配置遷移至ASM網關。

將Nginx的常用配置遷移至ASM網關