All Projects → tak2siva → Envoy-Pilot

tak2siva / Envoy-Pilot

Licence: MIT license
Envoy xDS Server with Consul

Programming Languages

go
31211 projects - #10 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Envoy-Pilot

meshery
Meshery, the cloud native manager
Stars: ✭ 1,587 (+2104.17%)
Mutual labels:  consul, control-plane, service-mesh, envoy
Istio
Connect, secure, control, and observe services.
Stars: ✭ 28,970 (+40136.11%)
Mutual labels:  consul, service-mesh, envoy
Envoy Control
Envoy Control is a platform-agnostic, production-ready Control Plane for Service Mesh based on Envoy Proxy.
Stars: ✭ 66 (-8.33%)
Mutual labels:  consul, service-mesh, envoy
Meshery
Meshery, the service mesh management plane
Stars: ✭ 608 (+744.44%)
Mutual labels:  consul, service-mesh, envoy
meshem
A simple implementation for Envoy's control plane
Stars: ✭ 22 (-69.44%)
Mutual labels:  control-plane, service-mesh, envoy
Layer5
Layer5, the service mesh company, representing every service mesh
Stars: ✭ 137 (+90.28%)
Mutual labels:  consul, service-mesh, envoy
Kuma
🐻 The Universal Service Mesh. CNCF Sandbox Project.
Stars: ✭ 2,516 (+3394.44%)
Mutual labels:  control-plane, service-mesh, envoy
flightpath
XDS to run Envoy as an edge proxy for Consul Connect.
Stars: ✭ 15 (-79.17%)
Mutual labels:  consul, envoy, envoy-xds
learn-consul-docker
Docker Compose quick starts for Consul features.
Stars: ✭ 51 (-29.17%)
Mutual labels:  consul, service-mesh
meshery-operator
The service mesh operator.
Stars: ✭ 41 (-43.06%)
Mutual labels:  consul, service-mesh
Consul
Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
Stars: ✭ 23,723 (+32848.61%)
Mutual labels:  consul, service-mesh
service-mesh-labs
Lab scenarios for learning how to service mesh.
Stars: ✭ 22 (-69.44%)
Mutual labels:  consul, service-mesh
consul-envoy
Consul to Envoy API listener
Stars: ✭ 35 (-51.39%)
Mutual labels:  consul, envoy
image-hub
Image Hub is a sample application for exploring WebAssembly modules used as Envoy filters.
Stars: ✭ 56 (-22.22%)
Mutual labels:  consul, service-mesh
Light 4j
A fast, lightweight and more productive microservices framework
Stars: ✭ 3,303 (+4487.5%)
Mutual labels:  consul, service-mesh
crossover
Minimal sufficient Envoy xDS for Kubernetes that knows https://smi-spec.io/
Stars: ✭ 69 (-4.17%)
Mutual labels:  xds, envoy
hashicorp-labs
Deploy locally on VM an Hashicorp cluster formed by Vault, Consul and Nomad. Ready for deploying and testing your apps.
Stars: ✭ 32 (-55.56%)
Mutual labels:  consul, service-mesh
service-mesh-patterns
Templates of service mesh configurations imbued with best practices.
Stars: ✭ 68 (-5.56%)
Mutual labels:  consul, service-mesh
marin3r
Lightweight, CRD based envoy control plane for kubernetes
Stars: ✭ 51 (-29.17%)
Mutual labels:  control-plane, envoy
meshery-consul
Meshery adapter for Consul
Stars: ✭ 50 (-30.56%)
Mutual labels:  consul, service-mesh

Envoy-Pilot

Build Status Version docker pulls

Envoy Pilot or Envoy xDS is a control plane implementation for Envoy written in Golang and uses Consul for persistence by default. It can also run without Consul by loading configuration from file.

This is an extension of go-control-plane

Currently Supports

  • CDS
  • LDS
  • RDS
  • EDS
  • ADS (for CDS & LDS)

Note: Some infrequent configurations might not be mapped. Feel free to PR

Checkout Envoy XDS PROTOCOL Overview for more detail

Also Checkout Sample Project

File Config

Checkout the above example to load config from file

Consul Usage

xDS Server will be exposed on port 7777

Run Envoy Proxy with the following configurations or use --service-node && --service-cluster

node:
  id: ride-service-replica-2
  cluster: ride-service

Every *DS requires two keys to be set in consul

  • config
  • version

And the key template is xDS/app-cluster/ride-service/CDS/(config|version)

For CDS add KV pairs

  • xDS/app-cluster/ride-service/CDS/version => "1.0"
  • xDS/app-cluster/ride-service/CDS/config => "[{ { "name": "app1", "connect_timeout": "0.250s", "type": "STRICT_DNS", "lb_policy": "RANDOM", "hosts": [{ "socket_address": { "address": "127.0.0.2", "port_value": 1234 } }] } }]"

Pushing new configuration

  • Envoy-Pilot will be polling for version change every 10 seconds.
  • If there is a version mismatch for any of xDS/app-cluster/ride-service/(CDS|LDS|RDS|EDS)/version then new config xDS/app-cluster/ride-service/(CDS|LDS|RDS|EDS)/config will be pushed to subscriber envoy.
  • If update succeed there will be an ACK log for the instance.

Running Docker Compose

From root directory

docker network create envoy-pilot_xds-demo
docker-compose -f docker-compose.consul.yaml up
docker-compose -f docker-compose.server.yaml up --build

Running test

cd test/integration
docker-compose up --build

cd test/rspec
DEVMODE=true rspec basic_spec.rb --order defined --format documentation

Runnnig Docker

Consul url need to be set in .env

env_values.txt

CONSUL_PATH="http://consul-server:8500"
CONSUL_PREFIX=""xDS"

Docker run

docker run -v $(pwd)/env_values.txt:/.env -p 7777:7777 -p 9090:9090 tak2siva/envoy-pilot:latest

Helm Chart

Install using the Helm Chart for Envoy-Pilot.

Debugging

  • xDS-Server is running on port 7777
  • A http server is running on port 9090 for debugging

localhost:9090/dump/KEY_TEMPLATE will give a json dump of proto mapping

Ex:

http://localhost:9090/dump/xDS/app-cluster/ride-service/(CDS|LDS|RDS|EDS)/config
  • To get list of subcsribers hit localhost:9090/dump/subscribers/

Prometheus metrics

Prometheus is running on localhost:8081/metrics and the following stats are available

  • xds_active_connections[cluster] (GAUGE)
  • xds_active_subscribers[cluster][type] (GAUGE)
  • xds_update_counter[cluster][subscribedTo] (Counter)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].