Additional doc updates regarding protocol support (#1279)

* Additional doc updates regarding protocol support
* Re-add information about server-speaks-first protocols

Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
This commit is contained in:
Kevin Lingerfelt 2018-07-05 17:22:33 -07:00 committed by GitHub
parent d76be26d85
commit 9379bd548c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 30 deletions

View File

@ -11,7 +11,7 @@ control plane written in Go, and a native proxy data plane written in
[Rust][rust] that boasts the performance of C without the heartbleed.
Conduit is **alpha**. It is capable of proxying all TCP traffic, including
websockets and HTTP tunneling, and reporting top-line metrics (success rates,
WebSockets and HTTP tunneling, and reporting top-line metrics (success rates,
latencies, etc) for all HTTP, HTTP/2, and gRPC traffic.
## Get involved

View File

@ -12,10 +12,9 @@ of your application will not be affected.
## Prerequisites
* Applications that use WebSockets or HTTP tunneling/proxying (use of the HTTP
`CONNECT` method), or plaintext MySQL, SMTP, or other protocols where the server
sends data before the client sends data, may require additional configuration.
See the [Protocol Support](#protocol-support) section below.
* Applications that use protocols where the server sends data before the client
sends data may require additional configuration. See the
[Protocol support](#protocol-support) section below.
* gRPC applications that use grpc-go must use grpc-go version 1.3 or later due
to a [bug](https://github.com/grpc/grpc-go/issues/1120) in earlier versions.
@ -36,24 +35,30 @@ if its proxy status is green in the Conduit dashboard.
### You can always get to the Conduit dashboard by running
#### `conduit dashboard`
## Protocol Support
## Protocol support
Conduit supports most applications without requiring any configuration on your
part. To accomplish this, Conduit automatically detects the protocol used on
each connection. In some cases, however, Conduit's protocol detection can't be
fully automated and requires some configuration from you.
Conduit is capable of proxying all TCP traffic, including WebSockets and HTTP
tunneling, and reporting top-line metrics (success rates, latencies, etc) for
all HTTP, HTTP/2, and gRPC traffic.
### MySQL and SMTP
### Server-speaks-first protocols
Most non-HTTP traffic will also be handled automatically and transparently by
Conduit without any configuration on your part. However, for protocols where the
server sends data before the client sends, e.g. MySQL and SMTP connections that
aren't protected by TLS, Conduit currently requires some manual configuration.
In such cases, use the `--skip-inbound-ports` flag when running `conduit
inject`. For pods that make outgoing connections using such protocols, use the
`--skip-outbound-ports` flag when running `conduit inject`. (Note that this
applies only to non-TLS'd connections; connections with TLS enabled do not
require any additional configuration irrespective of protocol.)
For protocols where the server sends data before the client sends data over
connections that aren't protected by TLS, Conduit cannot automatically recognize
the protocol used on the connection. Two common examples of this type of
protocol are MySQL and SMTP. If you are using Conduit to proxy plaintext MySQL
or SMTP requests on their default ports (3306 and 22, respectively), then Conduit
is able to successfully identify these protocols based on the port. If you're
using non-default ports, or if you're using a different server-speaks-first
protocol, then you'll need to manually configure Conduit to recognize these
protocols.
### For example, to allow outbound traffic to port 3306 (MySQL) to bypass the proxy, use the command:
#### `conduit inject deployment.yml --skip-outbound-ports=3306 | kubectl apply -f -`
If you're working with a protocol that can't be automatically recognized by
Conduit, use the `--skip-inbound-ports` and `--skip-outbound-ports` flags when
running `conduit inject`.
### For example, if your application makes requests to a MySQL database running on port 4406, use the command:
#### `conduit inject deployment.yml --skip-outbound-ports=4406 | kubectl apply -f -`
### Likewise if your application runs an SMTP server that accepts incoming requests on port 33, use the command:
#### `conduit inject deployment.yml --skip-inbound-ports=33 | kubectl apply -f -`

View File

@ -17,11 +17,10 @@ cluster, and how to set up a sample gRPC application.
Afterwards, check out the [Using Conduit to debug a service](/debugging-an-app) page,
where we'll walk you through how to use Conduit to investigate poorly performing services.
> Note that Conduit v{{% latestversion %}} is an alpha release. Conduit will
automatically work for most protocols. However, applications that use
WebSockets, HTTP tunneling/proxying, or protocols such as MySQL and SMTP, will
require some additional configuration. See [Adding your service to the
mesh](/adding-your-service) for details.
> Note that Conduit v{{% latestversion %}} is an alpha release. It is capable of
proxying all TCP traffic, including WebSockets and HTTP tunneling, and reporting
top-line metrics (success rates, latencies, etc) for all HTTP, HTTP/2, and gRPC
traffic.
____

View File

@ -1,5 +1,5 @@
+++
title = "Proxy Metrics"
title = "Metrics exported by the proxy"
docpage = true
[menu.docs]
parent = "proxy-metrics"
@ -9,7 +9,7 @@ The Conduit proxy exposes metrics that describe the traffic flowing through the
proxy. The following metrics are available at `/metrics` on the proxy's metrics
port (default: `:4191`) in the [Prometheus format][prom-format]:
# Protocol-Level Metrics
## Protocol-Level Metrics
### `request_total`
@ -141,7 +141,7 @@ request_total{
}
```
# Transport-Level Metrics
## Transport-Level Metrics
The following metrics are collected at the level of the underlying transport
layer.