All Projects → rerorero → meshem

rerorero / meshem

Licence: Apache-2.0 License
A simple implementation for Envoy's control plane

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to meshem

meshery
Meshery, the cloud native manager
Stars: ✭ 1,587 (+7113.64%)
Mutual labels:  control-plane, service-mesh, envoy
envoy-proxy-demos
Set of Envoy Proxy feature demos (Envoy v2 API supported)
Stars: ✭ 63 (+186.36%)
Mutual labels:  service-mesh, envoy, envoy-proxy
Kuma
🐻 The Universal Service Mesh. CNCF Sandbox Project.
Stars: ✭ 2,516 (+11336.36%)
Mutual labels:  control-plane, service-mesh, envoy
Envoy-Pilot
Envoy xDS Server with Consul
Stars: ✭ 72 (+227.27%)
Mutual labels:  control-plane, service-mesh, envoy
Istio
Connect, secure, control, and observe services.
Stars: ✭ 28,970 (+131581.82%)
Mutual labels:  service-mesh, envoy
Meshery
Meshery, the service mesh management plane
Stars: ✭ 608 (+2663.64%)
Mutual labels:  service-mesh, envoy
ego-demo
Envoy filters in Go
Stars: ✭ 34 (+54.55%)
Mutual labels:  envoy, envoy-proxy
apiclarity
Reconstruct Open API Specifications from real-time workload traffic seamlessly.
Stars: ✭ 290 (+1218.18%)
Mutual labels:  service-mesh, envoy
Gloo
The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy
Stars: ✭ 3,219 (+14531.82%)
Mutual labels:  envoy, envoy-proxy
Learn Istio
⛵️ Istio resources 🕸
Stars: ✭ 1,025 (+4559.09%)
Mutual labels:  service-mesh, envoy
Layer5
Layer5, the service mesh company, representing every service mesh
Stars: ✭ 137 (+522.73%)
Mutual labels:  service-mesh, envoy
sds
Envoy's v1 Service Discovery Service API and v2 Endpoint Discovery Service API
Stars: ✭ 22 (+0%)
Mutual labels:  service-mesh, envoy
image-hub
Image Hub is a sample application for exploring WebAssembly modules used as Envoy filters.
Stars: ✭ 56 (+154.55%)
Mutual labels:  service-mesh, envoy-proxy
Kumonos
Moved to https://github.com/cookpad/itacho
Stars: ✭ 29 (+31.82%)
Mutual labels:  service-mesh, envoy
Ambassador
open source Kubernetes-native API gateway for microservices built on the Envoy Proxy
Stars: ✭ 3,583 (+16186.36%)
Mutual labels:  envoy, envoy-proxy
Envoy Control
Envoy Control is a platform-agnostic, production-ready Control Plane for Service Mesh based on Envoy Proxy.
Stars: ✭ 66 (+200%)
Mutual labels:  service-mesh, envoy
marin3r
Lightweight, CRD based envoy control plane for kubernetes
Stars: ✭ 51 (+131.82%)
Mutual labels:  control-plane, envoy
yastack
YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
Stars: ✭ 90 (+309.09%)
Mutual labels:  envoy, envoy-proxy
flightpath
XDS to run Envoy as an edge proxy for Consul Connect.
Stars: ✭ 15 (-31.82%)
Mutual labels:  envoy, envoy-proxy
envoyproxy doc ZH CN
envoyproxy 智能代理中文参考文档 v1.5.0
Stars: ✭ 75 (+240.91%)
Mutual labels:  envoy

meshem

Build Status

meshem is a simple service mesh control plane application which depends on Envoy. This project consists of the followings.

You can get meshem server and CLI binary from Github release page. There is also a docker image that contains both of them. Try docker pull rerorero/meshem.

This implementation is not production ready as the purpose of meshem is mainly to learn envoy and service mesh.

Vagrant + Ansible example: Oneshot

go get github.com/rerorero/meshem
cd $GOPATH/src/github.com/rerorero/meshem
./run.sh

Vagrant + Ansible example: Step by step

Requirments

  • Vagrant + Virtual Box
  • python

Create all VMs.

vagrant up

Launch example services without proxy

Provision example services without envoy proxy. The example consists of app service and front service, both of them provide HTTP API.

cd ./examples/ansible
pip install -r requirements.txt
ansible-playbook -i vagrant site.yml
# default timezone is JST. You can change this by passing 'common_timezone' argument.
# ansible-playbook -i vagrant site.yml -e "common_timezone=UTC"

Check the response from front application.

curl 192.168.34.70:8080

At this point the service dependencies are as follows (myapp2 is not used yet).

Let's mesh'em

Provision the meshem control plane.

cd ./ansible
ansible-playbook -i inventories/vagrant site.yml

Launch envoy proxies for each services.

cd ./examples/ansible
ansible-playbook -i vagrant data-plane.yml

Manage meshem

Download meshem CLI binary(meshemctl) from Github release page and put it somewhere in your $PATH. meshemctl also can be built from source by running go install github.com/rerorero/meshem/src/meshemctl command.

Then let us regsiter the app service and front service.

cd ./examples/ansible
export MESHEM_CTLAPI_ENDPOINT="http://192.168.34.61:8091"
meshemctl svc apply app -f ./meshem-conf/app.yaml
meshemctl svc apply front -f ./meshem-conf/front.yaml

Deploy services as a service mesh

Deploy the front application sot that it uses envoy as egress proxy.

ansible-playbook -i vagrant site.yml -e "front_app_endpoint=http://127.0.0.1:9001/"

Currently the service dependencies are as follows.

The following figure shows the relationship between the control plane and the data plane.

Send a request

Try to send HTTP requests to front proxy several times. From the response you can confirm that the requests are round robin balanced.

curl 192.168.34.70:80

Envoy metrics and trace results can be displayed.

Docker example

Docker exapmle starts containers and build meshem binary from local source code.

go get github.com/rerorero/meshem
go get github.com/golang/dep/cmd/dep
cd $GOPATH/src/github.com/rerorero/meshem
dep ensure
cd ./examples/docker
# run.sh starts all of the relevant containers and register example services.
./run.sh
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].