Skip to content

Commit 97bf4fc

Browse files
authored
Release Notes for 0.4.1 release. (#839)
Also update Getting Started and Debugging docs to reflect changes in `Tap` and `Stat`. Fixes #838 Signed-off-by: Andrew Seigner <siggy@buoyant.io>
1 parent 309ef14 commit 97bf4fc

File tree

7 files changed

+99
-72
lines changed

7 files changed

+99
-72
lines changed

CHANGES.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
## v0.4.1
2+
3+
Conduit 0.4.1 builds on the telemetry work from 0.4.0, providing rich,
4+
Kubernetes-aware observability and debugging.
5+
6+
* Web UI
7+
* **New** Automatically-configured Grafana dashboards for Services, Pods,
8+
ReplicationControllers, and Conduit mesh health.
9+
* **New** `conduit dashboard` Pod and ReplicationController views.
10+
* Command-line interface
11+
* **Breaking change** `conduit tap` now operates on most Kubernetes resources.
12+
* `conduit stat` and `conduit tap` now both support kubectl-style resource
13+
strings (`deploy`, `deploy/web`, and `deploy web`), specifically:
14+
* `namespaces`
15+
* `deployments`
16+
* `replicationcontrollers`
17+
* `services`
18+
* `pods`
19+
* Telemetry
20+
* **New** Tap support for filtering by and exporting destination metadata. Now
21+
you can sample requests from A to B, where A and B are any resource or group
22+
of resources.
23+
* **New** TCP-level stats, including connection counts and durations, and
24+
throughput, wired through to Grafana dashboards.
25+
* Service Discovery
26+
* The proxy now uses the [trust-dns] DNS resolver. This fixes a number of DNS
27+
correctness issues.
28+
* The Destination service could sometimes return incorrect, stale, labels for an
29+
endpoint. This has been fixed!
30+
31+
[trust-dns]: https://github.com/bluejekyll/trust-dns
32+
133
## v0.4.0
234

335
Conduit 0.4.0 overhauls Conduit's telemetry system and improves service discovery

cli/cmd/testdata/install_default.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,6 @@ data:
493493
- role: pod
494494
namespaces:
495495
names: ['conduit']
496-
# TODO: do something with "conduit.io/control-plane-component"
497496
relabel_configs:
498497
- source_labels:
499498
- __meta_kubernetes_pod_label_conduit_io_control_plane_component

cli/cmd/testdata/install_output.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,6 @@ data:
496496
- role: pod
497497
namespaces:
498498
names: ['Namespace']
499-
# TODO: do something with "conduit.io/control-plane-component"
500499
relabel_configs:
501500
- source_labels:
502501
- __meta_kubernetes_pod_label_conduit_io_control_plane_component

cli/install/template.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,6 @@ data:
333333
- role: pod
334334
namespaces:
335335
names: ['{{.Namespace}}']
336-
# TODO: do something with "conduit.io/control-plane-component"
337336
relabel_configs:
338337
- source_labels:
339338
- __meta_kubernetes_pod_label_conduit_io_control_plane_component

doc/debugging-an-app.md

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -15,41 +15,41 @@ running](/getting-started), let's use Conduit to diagnose issues.
1515

1616
First, let's use the `conduit stat` command to get an overview of deployment
1717
health:
18-
#### `conduit stat deployments`
18+
#### `conduit -n emojivoto stat deploy`
1919

2020
### Your results will be something like:
2121
```
22-
NAME REQUEST_RATE SUCCESS_RATE P50_LATENCY P99_LATENCY
23-
emojivoto/emoji 2.0rps 100.00% 0ms 0ms
24-
emojivoto/voting 0.6rps 66.67% 0ms 0ms
25-
emojivoto/web 2.0rps 95.00% 0ms 0ms
22+
NAME MESHED SUCCESS RPS LATENCY_P50 LATENCY_P95 LATENCY_P99
23+
emoji 1/1 100.00% 2.0rps 1ms 4ms 5ms
24+
vote-bot 1/1 - - - - -
25+
voting 1/1 89.66% 1.0rps 1ms 5ms 5ms
26+
web 1/1 94.92% 2.0rps 5ms 10ms 18ms
2627
```
2728

2829
We can see that the `voting` service is performing far worse than the others.
2930

3031
How do we figure out what's going on? Our traditional options are: looking at
3132
the logs, attaching a debugger, etc. Conduit gives us a new tool that we can use
3233
- a live view of traffic going through the deployment. Let's use the `tap`
33-
command to take a look at requests currently flowing through this deployment.
34+
command to take a look at all requests currently flowing to this deployment.
3435

35-
#### `conduit tap deploy emojivoto/voting`
36+
#### `conduit -n emojivoto tap deploy --to deploy/voting`
3637

3738
This gives us a lot of requests:
3839

3940
```
40-
req id=0:458 src=172.17.0.9:45244 dst=172.17.0.8:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteGhost
41-
rsp id=0:458 src=172.17.0.9:45244 dst=172.17.0.8:8080 :status=200 latency=758µs
42-
end id=0:458 src=172.17.0.9:45244 dst=172.17.0.8:8080 grpc-status=OK duration=9µs response-length=5B
43-
req id=0:459 src=172.17.0.9:45244 dst=172.17.0.8:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteDoughnut
44-
rsp id=0:459 src=172.17.0.9:45244 dst=172.17.0.8:8080 :status=200 latency=987µs
45-
end id=0:459 src=172.17.0.9:45244 dst=172.17.0.8:8080 grpc-status=OK duration=9µs response-length=5B
46-
req id=0:460 src=172.17.0.9:45244 dst=172.17.0.8:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteBurrito
47-
rsp id=0:460 src=172.17.0.9:45244 dst=172.17.0.8:8080 :status=200 latency=767µs
48-
end id=0:460 src=172.17.0.9:45244 dst=172.17.0.8:8080 grpc-status=OK duration=18µs response-length=5B
49-
req id=0:461 src=172.17.0.9:45244 dst=172.17.0.8:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteDog
50-
rsp id=0:461 src=172.17.0.9:45244 dst=172.17.0.8:8080 :status=200 latency=693µs
51-
end id=0:461 src=172.17.0.9:45244 dst=172.17.0.8:8080 grpc-status=OK duration=10µs response-length=5B
52-
req id=0:462 src=172.17.0.9:45244 dst=172.17.0.8:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
41+
req id=0:1624 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteDoughnut
42+
rsp id=0:1624 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=1603µs
43+
end id=0:1624 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=OK duration=28µs response-length=5B
44+
req id=0:1629 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteBeer
45+
rsp id=0:1629 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=2009µs
46+
end id=0:1629 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=OK duration=24µs response-length=5B
47+
req id=0:1634 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteDog
48+
rsp id=0:1634 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=1730µs
49+
end id=0:1634 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=OK duration=21µs response-length=5B
50+
req id=0:1639 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteCrossedSwords
51+
rsp id=0:1639 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=1599µs
52+
end id=0:1639 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=OK duration=27µs response-length=5B
5353
```
5454

5555
Let's see if we can narrow down what we're looking at. We can see a few
@@ -59,35 +59,35 @@ requests.
5959
Let's figure out where those are coming from. Let's run the `tap` command again,
6060
and grep the output for `Unknown`s:
6161

62-
#### ```conduit tap deploy emojivoto/voting | grep Unknown -B 2```
62+
#### ```conduit -n emojivoto tap deploy --to deploy/voting | grep Unknown -B 2```
6363

6464
```
65-
req id=0:212 src=172.17.0.8:58326 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
66-
rsp id=0:212 src=172.17.0.8:58326 dst=172.17.0.10:8080 :status=200 latency=360µs
67-
end id=0:212 src=172.17.0.8:58326 dst=172.17.0.10:8080 grpc-status=Unknown duration=0µs response-length=0B
65+
req id=0:2294 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
66+
rsp id=0:2294 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=2147µs
67+
end id=0:2294 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=Unknown duration=0µs response-length=0B
6868
--
69-
req id=0:215 src=172.17.0.8:58326 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
70-
rsp id=0:215 src=172.17.0.8:58326 dst=172.17.0.10:8080 :status=200 latency=414µs
71-
end id=0:215 src=172.17.0.8:58326 dst=172.17.0.10:8080 grpc-status=Unknown duration=0µs response-length=0B
69+
req id=0:2314 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
70+
rsp id=0:2314 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=2405µs
71+
end id=0:2314 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=Unknown duration=0µs response-length=0B
7272
--
7373
```
7474

7575
We can see that all of the `grpc-status=Unknown`s are coming from the `VotePoop`
7676
endpoint. Let's use the `tap` command's flags to narrow down our output to just
7777
this endpoint:
7878

79-
#### ```conduit tap deploy emojivoto/voting --path /emojivoto.v1.VotingService/VotePoop```
79+
#### ```conduit -n emojivoto tap deploy/voting --path /emojivoto.v1.VotingService/VotePoop```
8080

8181
```
82-
req id=0:264 src=172.17.0.8:58326 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
83-
rsp id=0:264 src=172.17.0.8:58326 dst=172.17.0.10:8080 :status=200 latency=696µs
84-
end id=0:264 src=172.17.0.8:58326 dst=172.17.0.10:8080 grpc-status=Unknown duration=0µs response-length=0B
85-
req id=0:266 src=172.17.0.8:58326 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
86-
rsp id=0:266 src=172.17.0.8:58326 dst=172.17.0.10:8080 :status=200 latency=667µs
87-
end id=0:266 src=172.17.0.8:58326 dst=172.17.0.10:8080 grpc-status=Unknown duration=0µs response-length=0B
88-
req id=0:270 src=172.17.0.8:58326 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
89-
rsp id=0:270 src=172.17.0.8:58326 dst=172.17.0.10:8080 :status=200 latency=346µs
90-
end id=0:270 src=172.17.0.8:58326 dst=172.17.0.10:8080 grpc-status=Unknown duration=0µs response-length=0B
82+
req id=0:2724 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
83+
rsp id=0:2724 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=1644µs
84+
end id=0:2724 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=Unknown duration=0µs response-length=0B
85+
req id=0:2729 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
86+
rsp id=0:2729 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=1736µs
87+
end id=0:2729 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=Unknown duration=0µs response-length=0B
88+
req id=0:2734 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
89+
rsp id=0:2734 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs :status=200 latency=1779µs
90+
end id=0:2734 src=10.1.8.150:56224 dst=voting-6795f54474-6vfbs grpc-status=Unknown duration=0µs response-length=0B
9191
```
9292

9393
We can see that none of our `VotePoop` requests are successful. What happens

doc/getting-started.md

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,16 @@ high-level health metrics of deployments in the data plane.
267267
### DEPLOYMENTS
268268
Lists all deployments by requests, success rate, and latency.
269269

270+
### PODS
271+
Lists all pods by requests, success rate, and latency.
272+
273+
### REPLICATION CONTROLLER
274+
Lists all replications controllers by requests, success rate, and latency.
275+
276+
### GRAFANA
277+
For detailed metrics on all of the above resources, click any resource to browse
278+
to a dynamically-generated Grafana dashboard.
279+
270280
___
271281

272282
## Using the CLI 💻
@@ -275,30 +285,31 @@ happening in the Conduit service mesh. The CLI provides several interesting and
275285
powerful commands that you should experiment with, including `conduit stat` and `conduit tap`.
276286

277287
### To view details per deployment, run:
278-
#### `conduit stat deployments`
288+
#### `conduit -n emojivoto stat deploy`
279289

280290
### Which should display:
281291
```
282-
NAME REQUEST_RATE SUCCESS_RATE P50_LATENCY P99_LATENCY
283-
emojivoto/emoji 2.0rps 100.00% 0ms 0ms
284-
emojivoto/voting 0.6rps 66.67% 0ms 0ms
285-
emojivoto/web 2.0rps 95.00% 0ms 0ms
292+
NAME MESHED SUCCESS RPS LATENCY_P50 LATENCY_P95 LATENCY_P99
293+
emoji 1/1 100.00% 2.0rps 1ms 2ms 3ms
294+
vote-bot 1/1 - - - - -
295+
voting 1/1 81.36% 1.0rps 1ms 1ms 2ms
296+
web 1/1 90.68% 2.0rps 4ms 5ms 5ms
286297
```
287298

288299
&nbsp;
289300

290301
### To see a live pipeline of requests for your application, run:
291-
#### `conduit tap deploy emojivoto/voting`
302+
#### `conduit -n emojivoto tap deploy`
292303

293304
### Which should display:
294305
```
295-
req id=0:127 src=172.17.0.11:50992 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VoteManInTuxedo
296-
rsp id=0:127 src=172.17.0.11:50992 dst=172.17.0.10:8080 :status=200 latency=588µs
297-
end id=0:127 src=172.17.0.11:50992 dst=172.17.0.10:8080 grpc-status=OK duration=9µs response-length=5B
298-
req id=0:128 src=172.17.0.11:50992 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePager
299-
rsp id=0:128 src=172.17.0.11:50992 dst=172.17.0.10:8080 :status=200 latency=601µs
300-
end id=0:128 src=172.17.0.11:50992 dst=172.17.0.10:8080 grpc-status=OK duration=11µs response-length=5B
301-
req id=0:129 src=172.17.0.11:50992 dst=172.17.0.10:8080 :method=POST :authority=voting-svc.emojivoto:8080 :path=/emojivoto.v1.VotingService/VotePoop
306+
req id=0:2900 src=10.1.8.151:51978 dst=10.1.8.150:80 :method=GET :authority=web-svc.emojivoto:80 :path=/api/list
307+
req id=0:2901 src=10.1.8.150:49246 dst=emoji-664486dccb-97kws :method=POST :authority=emoji-svc.emojivoto:8080 :path=/emojivoto.v1.EmojiService/ListAll
308+
rsp id=0:2901 src=10.1.8.150:49246 dst=emoji-664486dccb-97kws :status=200 latency=2146µs
309+
end id=0:2901 src=10.1.8.150:49246 dst=emoji-664486dccb-97kws grpc-status=OK duration=27µs response-length=2161B
310+
rsp id=0:2900 src=10.1.8.151:51978 dst=10.1.8.150:80 :status=200 latency=5698µs
311+
end id=0:2900 src=10.1.8.151:51978 dst=10.1.8.150:80 duration=112µs response-length=4558B
312+
req id=0:2902 src=10.1.8.151:51978 dst=10.1.8.150:80 :method=GET :authority=web-svc.emojivoto:80 :path=/api/vote
302313
...
303314
```
304315

doc/roadmap.md

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,16 @@ overly conservative.
1515

1616

1717
##### Status: alpha
18-
## [0.4.0: Rich, Kubernetes-aware Grafana & Prometheus](https://github.com/runconduit/conduit/milestone/6)
19-
#### 2018-04-16
20-
21-
### Visibility
22-
23-
- Rich, Kubernetes-aware `conduit stat`:
24-
- Works on deployments & namespaces.
25-
- `--from` & `--to` flags filter stats by source & destination.
26-
- Proxy exposes Prometheus labeled with rich outbound stats.
27-
- Grafana dashboards for Kubernetes Deployments & Namespaces.
28-
29-
### Reliability
30-
31-
- The proxy properly routes egress traffic to arbitrary DNS names.
32-
33-
3418
## [0.4.1: Rich, Kubernetes-aware debugging](https://github.com/runconduit/conduit/milestone/10)
35-
#### Late April 2018
19+
#### 2018-04-26
3620

3721
### Visibility
3822

3923
- `conduit stat` works on many Kubernetes resources.
4024
- Per-authority HTTP stats.
4125
- TCP-level stats
4226
- `conduit tap` works on many Kubernetes resources, too.
43-
- `conduit wtf`: what's the failure?
44-
27+
- Grafana dashboards for Kubernetes Pods, Services, & Replication Controllers.
4528

4629
## [0.5: Stable, private communication](https://github.com/runconduit/conduit/milestone/7)
4730
#### Mid-May 2018
@@ -58,6 +41,10 @@ overly conservative.
5841
- Stable Service Discovery semantics.
5942
- Latency-aware load balancing.
6043

44+
### Visibility
45+
46+
- `conduit wtf`: what's the failure?
47+
6148

6249
## [0.6: Externally accessible](https://github.com/runconduit/conduit/milestone/8)
6350
#### Early June 2018

0 commit comments

Comments
 (0)