Skip to content

virtualstaticvoid/envoy_experiments

Repository files navigation

Envoy Proxy Prototype

This is an example to illustrate the use of Envoy as a service sidecar proxy in a service orientated architecture.

Envoy is also used at the edge, as a layer 7 proxy, to route HTTP requests to the backend HTTP services via there respective Envoy proxy.

Each backend service connects onto dependent services, such as Postgres, Redis and RabbitMQ, via Envoy as a TCP proxy.

This provides a number of benefits, the greatest being for operational visibility, since all network traffic is proxied by Envoy, and Envoy is fully instrumented, it's possible to collect and collate all the metrics into a single dashboard.

TODO

  • gateway
    • http routing
    • admin interface
  • service which consumes postgres
    • postgres tcp routing
    • admin interface
  • service which consumes redis
    • redis tcp routing
    • admin interface
  • service which consumes rabbitmq
    • publisher
    • subscriber (worker)
    • rabbitmq tcp routing
    • admin interface
  • metrics collection via prometheus
  • zipkin
  • grafana
    • envoy dashboard
    • service dashboard
    • prometheus dashboard
    • grafana dashboard
  • service discovery
  • vagrant setup
  • architecture diagrams
  • complete readme

Overview

Architecture

Flows

What's Not Implemented

Prerequisites

Linux Install

Windows Install

Getting Started

Development Environment

Code Tour

Consuming the API

Notes

Further Reading

License

MIT License. Copyright (c) 2018 Chris Stefano. See LICENSE for details.