Linkerd Service Mesh 服務配置文件規範

  • 2021 年 12 月 12 日
  • 筆記

服務配置文件Linkerd 提供有關服務的附加信息。
以下是可以使用服務配置文件完成的所有操作的參考。

系列

中文手冊(//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 時應考慮請求的時間

實戰

公眾號:黑客下午茶