服务配置文件 为 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 时应考虑请求的时间 |
实战
- 设置服务配置文件
https://linkerd.hacker-linner.com/2.11/tasks/setting-up-service-profiles/
- 完整的 demo 演练
https://linkerd.hacker-linner.com/2.11/tasks/books/#service-profiles/