應用服務網格配置建議
更新時間 2024-09-09 19:52:46
最近更新時間: 2024-09-09 19:52:46
分享文章
本章節介紹應用服務網格CSM相關配置建議
概述
本文介紹應用服務網格相關資源配置的建議,避免因配置錯誤或者不合理導致的不符合預期的行為。
VirtualService(虛擬服務)
- 虛擬服務資源需要配置到目標服務所在的命名空間下,不建議跨命名空間配置虛擬服務。
- 一個特定host的路由規則只定義在一個虛擬服務資源下,同host存在多個虛擬服務資源時將只會生效最新創建的一個。
- 虛擬服務資源下的host(虛擬服務對應的host或者路由目標中的host)建議配置成FQDN(fully qualified domain name);如果使用短名,istio會根據虛擬服務資源定義的命名空間補全host,可能與實際的服務名不一致。
- 對于一個服務,同時存在host模糊匹配和精準匹配的虛擬服務時,將以精準匹配的定義為準。
- istio會在沒有匹配到路由規則時默認訪問目標服務的所有子集,但是這樣沒有執行任何流量治理策略;所以我們建議總是為服務定義一個默認路由,并通過目標規則定義流量策略,這樣可以充分利用Envoy的流量治理能力,保證服務的訪問總是在掌控之中。
DestinationRule(目標規則)
- 業務訪問中使用目標規則時的查找順序是:
- 先查找客戶端的命名空間中是否有要訪問的服務的目標規則定義。
- 再查找服務端命名空間中是否有要訪問的服務的目標規則定義。
- 最后查找根命名空間中的目標規則定義。
對于一次訪問,如果目標規則沒有定義在上面三個地方中,目標規則將不會生效,這里建議每個服務在自己所在的命名空間下定義目標規則。
- 目標規則中的host也建議使用FQDN,避免不必要的錯配。
- 對于一個服務,同時存在host模糊匹配和精準匹配的目標規則時,將以精準匹配的定義為準。
- 目標規則中可以針對某個服務的子集定義負載均衡、連接池、異常檢測等策略,這些策略只有在虛擬服務中顯式引用了該目標子集所產生的訪問下才會生效,否則不生效。
sidecar資源
- sidecar資源定義了sidecar代理的配置,每個命名空間只能有一個不帶workloadSelector的sidecar資源,定義了該命名空間下默認的sidecar配置。
- 根命名空間下定義一個不帶workloadSelector的sidecar資源,將對網格所有的命名空間生效;如果有命名空間級別的sidecar資源,則它的優先級更高。
TrafficLabel(流量標簽)
- 如果有一組服務要做全鏈路灰度,可以按照服務所在的命名空間劃分,每個命名空間下創建一個TrafficLabel資源,定義所需要的流量標簽。
- Ingress網關要使用TrafficLabel可以根據Ingress所在的命名空間和標簽信息,使用工作負載選擇器指定要綁定的網關。
- 對單個服務進行流量打標的場景,使用工作負載選擇器選擇對應的工作負載。
- 一個工作負載上的流量標簽只定義在一個TrafficLabel資源上。