Linkerd Service Mesh 服務配置檔案規範

為少發表於2021-12-12

服務配置檔案Linkerd 提供有關服務的附加資訊。
以下是可以使用服務配置檔案完成的所有操作的參考。

系列

中文手冊(https://linkerd.hacker-linner.com)

Spec(規範)

服務配置檔案規範必須包含以下頂級欄位:

field value
routes route 物件的列表
retryBudget 定義此服務的最大重試率的 retry budget 物件

Route(路由)

route 物件必須包含以下欄位:

field value
name 這條 route 的名稱,因為它將出現在 route 標籤中
condition 一個 request match 物件,用於定義請求是否與此 route 匹配
responseClasses (可選)response class 物件列表
isRetryable 表示對該 route 的請求始終可以安全重試,並且會導致 proxy 儘可能重試該 route 上失敗的請求
timeout 傳送請求後等待響應(包括重試)完成的最長時間

Request Match(請求匹配)

請求匹配物件必須恰好包含以下欄位之一:

field value
pathRegex 匹配請求路徑的正規表示式
method GET, POST, PUT, DELETE, OPTION, HEAD, TRACE 之一
all 必須全部匹配的 request match 物件列表
any request match 物件的列表,其中至少一個必須匹配
not 必須不匹配的 request match 物件

Request Match 使用示例

最簡單的條件是路徑正規表示式:

pathRegex: '/authors/\d+'

這是檢查請求方法的條件:

method: POST

如果設定了多個條件欄位,則必須滿足所有條件。這等效於使用 all 條件:

all:
- pathRegex: '/authors/\d+'
- method: POST

可以使用 allanynot 組合條件:

any:
- all:
  - method: POST
  - pathRegex: '/authors/\d+'
- all:
  - not:
      method: DELETE
  - pathRegex: /info.txt

Response Class(響應類)

response class 物件必須包含以下欄位:

field value
condition 一個 response match 物件,它定義一個 response 是否匹配這個 response class
isFailure 一個布林值,用於定義這些 response 是否應歸類為失敗

Response Match(響應匹配)

response match 物件必須恰好包含以下欄位之一:

field value
status 用於匹配響應狀態程式碼的 status range 物件
all 必須全部匹配的 response match 物件列表
any response match 物件列表,其中至少一個必須匹配
not 必須不匹配的 response match 物件

Response Match 條件可以以類似於上面顯示的 Request Match 使用示例 的方式組合

Status Range(狀態範圍)

status range 物件必須包含以下至少一個欄位。只指定 minmax 中的一個將只匹配一個狀態碼。

field value
min 狀態碼必須大於或等於此值
max 狀態碼必須小於或等於此值

Retry Budget(重試預算)

retry budget 指定應傳送到此服務的最大重試總次數原始請求量比率

field value
retryRatio 重試請求原始請求的最大比率
minRetriesPerSecond 除了 retryRatio 允許的重試次數外,允許每秒重試次數
ttl 指示在計算 retryRatio 時應考慮請求的時間

實戰

公眾號:黑客下午茶

相關文章