我已经根据此入门页面在本地运行了linkerd,并且基本代理示例有效。我的用例要求我将 Web 请求代理到多个 .NET WebApi 服务之一,因此我制作了一个在本地运行的具有两条路由的小示例 WebApi 项目:
- 本地主机:58371 返回
hello world
- localhost:58371/api/values 返回
["value1", "value2"]
使用匹配的路由映射请求
如果我让我的linkerd.yaml
文件开箱即用:
routers:
- protocol: http
dtab: |
/svc => /#/io.l5d.fs
然后映射路由直接起作用:
curl -H "Host: web" http://localhost:4140/
-->hello world
curl -H "Host: web" http://localhost:4140/api/values
-->["value1", "value2"]
映射不匹配的路线
现在,我想映射localhost:4140/tacos
--> localhost:58371/api/values
。因此,我将 .yaml 文件更新为:
routers:
- protocol: http
dtab: |
/svc => /#/io.l5d.fs;
/tacos => /api/values;
并重新启动链接器。
然而,http://localhost:4140/
似乎总是下决心http://localhost:58371/tacos
,不是http://localhost:58371/api/values
。我不明白什么?
我已经阅读了 linkerd 网站上的一堆示例 dtab 转换,并且在我的 yaml 文件中使用了一堆不同的配置。当然,我缺少的只是一些愚蠢的事情,因为这似乎是一个非常简单的用例。