服務配置檔案
為 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
可以使用 all
、any
和 not
組合條件:
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
物件必須包含以下至少一個欄位。只指定 min
或 max
中的一個將只匹配一個狀態碼。
field | value |
---|---|
min |
狀態碼必須大於或等於此值 |
max |
狀態碼必須小於或等於此值 |
Retry Budget(重試預算)
retry budget
指定應傳送到此服務的最大重試總次數
與原始請求量
的比率
。
field | value |
---|---|
retryRatio |
重試請求 與原始請求 的最大比率 |
minRetriesPerSecond |
除了 retryRatio 允許的重試次數外,允許每秒重試次數 |
ttl |
指示在計算 retryRatio 時應考慮請求的時間 |
實戰
公眾號:黑客下午茶