-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix documentation on docker sandboxes #80
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,47 @@ | |
Sandboxes | ||
========= | ||
|
||
To get a flavor of what Envoy has to offer, we are releasing a | ||
The docker-compose sandboxes give you different environments to test out Envoy's | ||
features. As we gauge people's interests we will add more sandboxes demonstrating | ||
different features. | ||
|
||
Locally building a docker image with an envoy binary | ||
---------------------------------------------------- | ||
|
||
The following steps guide you through building your own envoy binary, and | ||
putting that in a clean ubuntu container. | ||
|
||
**Step 1: Build Envoy** | ||
|
||
Using ``lyft/envoy-buld`` you will compile envoy. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. typo There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
This image has all software needed to build envoy. From your envoy directory:: | ||
|
||
$ pwd | ||
src/envoy | ||
$ docker run -t -i -v <SOURCE_DIR>:/source lyft/envoy-build:latest /bin/bash -c "cd /source && ci/do_ci.sh normal" | ||
|
||
That command will take some time to run because it is compiling an envoy binary. | ||
|
||
**Step 2: Build image with only envoy binary** | ||
|
||
In this step we'll build an image that only has the envoy binary, and none | ||
of the software used to build it.:: | ||
|
||
$ pwd | ||
src/envoy/ | ||
$ docker build -f example/Dockerfile-envoy-image -t envoy . | ||
|
||
Now you can use this ``envoy`` image to build the any of the sandboxes if you change | ||
the ``FROM`` line in any dockerfile. | ||
|
||
This will be particularly useful if you are interested in modifying envoy, and testing | ||
your changes. | ||
|
||
|
||
Front Proxy | ||
----------- | ||
|
||
To get a flavor of what Envoy has to offer as a front proxy, we are releasing a | ||
`docker compose <https://docs.docker.com/compose/>`_ sandbox that deploys a front | ||
envoy and a couple of services (simple flask apps) colocated with a running | ||
service envoy. The three containers will be deployed inside a virtual network | ||
|
@@ -16,16 +56,16 @@ Below you can see a graphic showing the docker compose deployment: | |
|
||
All incoming requests are routed via the front envoy, which is acting as a reverse proxy sitting on | ||
the edge of the ``envoymesh`` network. Port ``80`` is mapped to port ``8000`` by docker compose | ||
(see :repo:`/example/docker-compose.yml>`). Moreover, notice | ||
(see :repo:`/examples/front-proxy/docker-compose.yml`). Moreover, notice | ||
that all traffic routed by the front envoy to the service containers is actually routed to the | ||
service envoys (routes setup in :repo:`/example/front-envoy.json>`). In turn the service | ||
service envoys (routes setup in :repo:`/examples/front-proxy/front-envoy.json`). In turn the service | ||
envoys route the request to the flask app via the loopback address (routes setup in | ||
:repo:`/example/service-envoy.json>`). This setup | ||
:repo:`/examples/front-proxy/service-envoy.json`). This setup | ||
illustrates the advantage of running service envoys collocated with your services: all requests are | ||
handled by the service envoy, and efficiently routed to your services. | ||
|
||
Running the Sandbox | ||
------------------- | ||
~~~~~~~~~~~~~~~~~~~ | ||
|
||
The following documentation runs through the setup of an envoy cluster organized | ||
as is described in the image above. | ||
|
@@ -226,3 +266,47 @@ statistics. For example inside ``frontenvoy`` we can get:: | |
Notice that we can get the number of members of upstream clusters, number of requests | ||
fulfilled by them, information about http ingress, and a plethora of other useful | ||
stats. | ||
|
||
gRPC bridge | ||
----------- | ||
|
||
Envoy gRPC | ||
~~~~~~~~~~ | ||
|
||
The gRPC bridge sandbox is an example usage of Envoy's :ref:`gRPC bridge filter <config_http_filters_grpc_bridge>`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 100 col limit There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
Included in the sandbox is a gRPC in memory Key/Value store with a Python HTTP | ||
client. The Python client makes HTTP/1 requests through the Envoy sidecar | ||
process which are upgraded into HTTP/2 gRPC requests. Response trailers are then | ||
buffered and sent back to the client as a HTTP/1 header payload. | ||
|
||
Another Envoy feature demonstrated in this example is Envoy's ability to do authority | ||
base routing via its route configuration. | ||
|
||
Building the Go service | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should go last, images should already be pushed so people can quickly get started. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. moved |
||
~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
To build the Go gRPC service run:: | ||
|
||
script/bootstrap | ||
script/build | ||
|
||
Docker compose | ||
~~~~~~~~~~~~~~ | ||
|
||
To run the docker compose file, and set up both the Python and the gRPC containers | ||
run:: | ||
|
||
docker-compose up --build | ||
|
||
Sending requests to the Key/Value store | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
To use the python service and sent gRPC requests:: | ||
|
||
# set a key | ||
docker-compose exec python /client/client.py set foo bar | ||
=> setf foo to bar | ||
|
||
# get a key | ||
docker-compose exec python /client/client.py get foo | ||
=> bar |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,2 @@ | ||
To learn about this sandbox and for instructions on how to run it please head over | ||
to the envoy docs | ||
|
||
### Building the Docker image | ||
|
||
The `lyft/envoy` image is a docker image made using `build-envoy/Dockerfile-envoy` | ||
it copies a precompiled envoy binary into a docker image, and installs `curl` | ||
and `pip`. | ||
|
||
The following steps guide you through building your own envoy binary, and | ||
putting that in a clean ubuntu container. | ||
|
||
#### Step 1: Build Envoy | ||
|
||
Using `lyft/envoy-buld` you will compile envoy. | ||
This image has all software needed to build envoy. From your envoy directory: | ||
|
||
```shell | ||
$ pwd | ||
src/envoy | ||
$ docker run -t -i -v <SOURCE_DIR>:/source lyft/envoy-build:latest /bin/bash -c "cd /source && ci/do_ci.sh normal" | ||
``` | ||
|
||
That command will take some time to run because it is compiling an envoy binary. | ||
|
||
#### Step 2: Build image with only envoy binary | ||
|
||
In this step we'll build an image that only has the envoy binary, and none | ||
of the software used to build it. | ||
|
||
```shell | ||
$ pwd | ||
src/envoy/ | ||
$ docker build -f example/Dockerfile-envoy-image -t envoy . | ||
``` | ||
|
||
Now you can use this `envoy` image to build the demo if you change the `FROM` | ||
line in `Dockerfile-frontenvoy` and `Dockerfile-service` | ||
to the [envoy docs](https://envoydocs-staging.lyft.net/docs/install/sandboxes.html#front-proxy) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. public link There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,2 @@ | ||
# envoy-grpc | ||
|
||
This is an example usage of the Envoy [gRPC bridge filter](https://lyft.github.io/envoy/docs/configuration/http_filters/grpc_http1_bridge_filter.html#config-http-filters-grpc-bridge). Included is a gRPC in memory Key/Value store with a Python HTTP client. The Python client makes HTTP/1 requests through the Envoy sidecar process which are upgraded into HTTP/2 gRPC requests. Response trailers are then buffered and sent back to the client as a HTTP/1 header payload. | ||
|
||
## Building the Go service | ||
|
||
```bash | ||
script/bootstrap | ||
script/build | ||
``` | ||
|
||
## Docker compose | ||
|
||
To run the docker compose file, and set up both the Python and the gRPC containers | ||
run: | ||
|
||
```bash | ||
docker-compose up --build | ||
``` | ||
|
||
## Sending requests to the Key/Value store | ||
|
||
```bash | ||
# set a key | ||
docker-compose exec python /client/client.py set foo bar | ||
=> setf foo to bar | ||
|
||
# get a key | ||
docker-compose exec python /client/client.py get foo | ||
=> bar | ||
``` | ||
To learn about this sandbox and for instructions on how to run it please head over | ||
to the [envoy docs](https://envoydocs-staging.lyft.net/docs/install/sandboxes.html#grpc-bridge) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. public link There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section should come last, as it should not be required to run the demos. The demo docs should start with a quick start on how to get up and running quickly with already pushed images.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
moved