EnvoyFilter 提供了一種機制來客製化 Istio Pilot 生成的 Envoy 設定。使用 EnvoyFilter 修改某些欄位的值,新增特定的過濾器,甚至新增全新的偵聽器、叢集等等。
這個功能必須謹慎使用,因為不正確的設定可能會破壞整個網格的穩定性。與其他 Istio 網路物件不同,EnvoyFilter 是疊加應用的。對於特定名稱空間中的特定工作負載,可以存在任意數量的 EnvoyFilter。
這些 EnvoyFilter 被應用的順序是:首先是設定在根名稱空間中的所有 EnvoyFilter,其次是設定在工作負載名稱空間中的所有匹配的 EnvoyFilter。
EnvoyFilter 的某些方面和 Istio 網路子系統的內部實現以及 Envoy 的 xDS API 有很深的聯絡。雖然 EnvoyFilter 本身將保持向後相容性,但是在 Istio 版本升級過程中,通過該機制提供的任何 Envoy 設定都應該被仔細檢查,以確保廢棄的欄位被適當地刪除和替換。
當多個 EnvoyFilter 被繫結到給定名稱空間中的相同工作負載時,將按照建立時間的順序依次應用。如果有多個 EnvoyFilter 設定相互衝突,那麼將無法確定哪個設定被應用。
要將 EnvoyFilter 資源應用於系統中的所有工作負載(sidecar 和 gateway)上,請在 config 根名稱空間中定義該資源,不要使用 workloadSelector。
要將 EnvoyFilter 應用到系統中的所有工作負載( sidecar 和閘道器)的時候,建議在設定根名稱空間中定義,而不要使用 workloadSelector 。
文章持續更新,微信搜尋「萬貓學社」第一時間閱讀,關注後回覆「電子書」,免費獲取12本Java必讀技術書籍。
屬性 | 資料型別 | 說明 | 是否必填 |
---|---|---|---|
workloadSelector | WorkloadSelector | 用於選擇應用此修補程式的pod或虛擬機器器 | 否 |
configPatches | EnvoyConfigObjectPatch[] | 具有匹配條件的修補程式 | 是 |
priority | int32 | 定義了修補程式集在上下文中應用順序的優先順序 | 否 |
其中,如果 workloadSelector
沒有被設定,此修補程式將應用於相同名稱空間中所有工作負載的範例; priority
的預設值為0,取值範圍是[min-int32, max-int32], priority
為負的修補程式將在預設priority
之前處理,priority
為正的修補程式將在預設priority
之後處理。
屬性 | 資料型別 | 說明 | 是否必填 |
---|---|---|---|
applyTo | ApplyTo | 指定在Envoy設定中應用修補程式的位置 | 否 |
match | EnvoyConfigObjectMatch | 用於匹配監聽器、路由或叢集 | 否 |
patch | Patch | 與操作一起應用的修補程式。 | 否 |
其中,ApplyTo
可以設定的值有:
名稱 | 說明 |
---|---|
LISTENER | 將修補程式應用於監聽器。 |
FILTER_CHAIN | 將修補程式應用於過濾器鏈。 |
NETWORK_FILTER | 應用修補程式到網路過濾器鏈,修改現有的過濾器或新增一個新的過濾器。 |
HTTP_FILTER | 將修補程式應用於HTTP連線管理器中的HTTP過濾器鏈,以修改現有的過濾器或新增新的過濾器。 |
ROUTE_CONFIGURATION | 將修補程式應用於HTTP連線管理器內的Route設定。 |
VIRTUAL_HOST | 將修補程式應用於路由設定內部的虛擬主機。 |
HTTP_ROUTE | 在路由設定中將修補程式應用於匹配的虛擬主機內的路由物件。 |
CLUSTER | 將修補程式應用到叢集。 |
EXTENSION_CONFIG | 在ECDS輸出中應用修補程式或新增擴充套件設定。 |
BOOTSTRAP | 將修補程式應用於初始化設定。 |
更多設定詳見如下思維導圖:
微信公眾號:萬貓學社
微信掃描二維條碼
關注後回覆「電子書」
獲取12本Java必讀技術書籍