服務發現范圍
更新時間 2024-09-09 19:49:47
最近更新時間: 2024-09-09 19:49:47
分享文章
本章節介紹服務發現范圍
概述
應用服務網格默認發現所有命名空間的服務(即使服務沒有注入sidecar),即集群內所有的服務信息都會全量推送到所有數據面,任何服務數據的變動也會觸發集群范圍的全量服務發現數據推送,控制面和數據面的資源消耗都會比較大;通過服務發現范圍配置可以限定服務網格只發現指定范圍的服務數據,減少不必要的資源消耗。
配置說明
通過服務發現范圍配置規則匹配目標命名空間,服務網格將只發現目標命名空間下的服務。當前支持兩種匹配方式:
- 標簽選擇器:通過標簽選擇器精確匹配目標命名空間的標簽。
- 表達式匹配:通過標簽值和目標表達式進行匹配,當前支持的匹配模式如下。
| 匹配操作 | 舉例 | 說明 |
|---|---|---|
| In | key: appoperator: Invalues: - cassandra - spark | app標簽值為cassandra或spark時匹配。 |
| NotIn | key: appoperator: NotInvalues: - cassandra - spark | app標簽值不等于cassandra且不等于spark時匹配。 |
| Exists | key: appoperator: Exists | app標簽存在時匹配。 |
| DoesNotExist | key: appoperator: DoesNotExist | app標簽不存在時匹配。 |
配置服務發現范圍
進入應用服務網格控制臺網格實例詳情頁,選擇網格優化中心-> 服務發現范圍 菜單,默認不存在服務發現范圍配置,如下圖:

點擊新增規則可以創建一條匹配規則,每條規則由一組標簽選擇器和匹配表達式組成,必須同時滿足一條規則內的標簽選擇器和匹配表達式才算匹配當前規則(AND關系),多條規則之間是OR關系,一個命名空間匹配一條規則即可被選中。

功能驗證
默認情況下服務發現范圍配置為空,我們通過envoy admin接口導出配置數據,可以看到cds數據如下:

更新服務發現范圍配置,只發現demo命名空間下的服務,如下:

再次導出配置數據,可以看到cds數據只包含demo命名空間下的服務以及部分ServiceEntry產生的配置:
