mirror of https://github.com/linkerd/linkerd2.git
Fixes #1875 This change improves the `linkerd routes` command in a number of important ways: * The restriction on the type of the `--to` argument is lifted and any resource type can now be used. Try `--to ns/books`, `--to po/webapp-ABCDEF`, `--to au/linkerd.io`, or even `--to svc`. * All routes for the target will now be populated in the table, even if there are no Prometheus metrics for that route. * [UNKNOWN] has been renamed to [DEFAULT] * The `Service/Authority` column will now list `Service` in all cases except for when an authority target is explicitly requested. ``` $ linkerd routes deploy/traffic --to deploy/webapp ROUTE SERVICE SUCCESS RPS LATENCY_P50 LATENCY_P95 LATENCY_P99 GET / webapp 100.00% 0.5rps 50ms 180ms 196ms GET /authors/{id} webapp 100.00% 0.5rps 100ms 900ms 980ms GET /books/{id} webapp 100.00% 0.9rps 38ms 93ms 99ms POST /authors webapp 100.00% 0.5rps 35ms 48ms 50ms POST /authors/{id}/delete webapp 100.00% 0.5rps 83ms 180ms 196ms POST /authors/{id}/edit webapp 0.00% 0.0rps 0ms 0ms 0ms POST /books webapp 45.16% 2.1rps 75ms 425ms 485ms POST /books/{id}/delete webapp 100.00% 0.5rps 30ms 90ms 98ms POST /books/{id}/edit webapp 56.00% 0.8rps 92ms 875ms 975ms [DEFAULT] webapp 0.00% 0.0rps 0ms 0ms 0ms ``` This is all made possible by a shift in the way we handle the destination resource. When we get a request with a `ToResource`, we use the k8s API to find all Services which include at least one pod belonging to that resource. We then fetch all service profiles for those services and display the routes from those serivce profiles. This shift in thinking also precipitates a change in the TopRoutes API where we no longer need special cases for `ToAll` (which can be specified by `--to au`) or `ToAuthority` (which can be specified by `--to au/<authority>`) and instead can use a `ToResource` to handle all cases. Signed-off-by: Alex Leong <alex@buoyant.io> |
||
---|---|---|
.. | ||
api.go | ||
api_test.go | ||
clientset.go | ||
test_helper.go |