Vulcand is a programmatic extendable proxy for microservices and API management. It is inspired by Hystrix and powers Mailgun microservices infrastructure.
Vulcand is focused on microservices and API use-cases.
- Uses etcd as a configuration backend.
- API and command line tool.
- Pluggable middlewares.
- Support for canary deployments, realtime metrics and resilience.
documentation | https://vulcand.github.io/ |
---|---|
status | Used in production@Mailgun on moderate workloads. Under active development. |
discussions | https://groups.google.com/d/forum/vulcan-proxy |
roadmap | roadmap.md |
build status |
Vulcand has support for open tracing via the Jaeger client
libraries. Users who wish
to use tracing support should use the --enableJaegerTracing
flag and must
either run the Jaeger client listening on localhost:6831/udp
or set the
environment variables JAEGER_AGENT_HOST
and JAEGER_AGENT_POST
. (See the
Jaeger client libraries
for all available configuration environment variables.)
When enabled vulcand will create 2 spans: one span called vulcand
which
covers the entire downstream request and another span called middleware
which
only spans the processing of the middleware before the request is routed
downstream.
When running vulcand in a kubernetes DaemonSet vulcand needs to know requests
from the local node can match Host("localhost")
rules. This --aliases
flag
allows an author of a vulcand DaemonSet to tell vulcand the name of the node it's
currently running on, such that vulcand correctly routes requests for
Host("localhost")
. The --aliases
flag allows the user to pass in multiple
aliases separated by commas.
Example
$ vulcand --aliases 'Host("localhost")=Host("192.168.1.1")'