Træfik (pronounced like traffic) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, and a lot more) to manage its configuration automatically and dynamically.
Imagine that you have deployed a bunch of microservices on your infrastructure. You probably used a service registry (like etcd or consul) and/or an orchestrator (swarm, Mesos/Marathon) to manage all these services. If you want your users to access some of your microservices from the Internet, you will have to use a reverse proxy and configure it using virtual hosts or prefix paths:
api.domain.comwill point the microservice
apiin your private network
domain.com/webwill point the microservice
webin your private network
backoffice.domain.comwill point the microservices
backofficein your private network, load-balancing between your multiple instances
But a microservices architecture is dynamic... Services are added, removed, killed or upgraded often, eventually several times a day.
Traditional reverse-proxies are not natively dynamic. You can't change their configuration and hot-reload easily.
Here enters Træfik.
Træfik can listen to your service registry/orchestrator API, and knows each time a microservice is added, removed, killed or upgraded, and can generate its configuration automatically. Routes to your services will be created instantly.
Run it and forget it!
- It's fast
- No dependency hell, single binary made with go
- Tiny official docker image
- Rest API
- Hot-reloading of configuration. No need to restart the process
- Circuit breakers, retry
- Round Robin, rebalancer load-balancers
- Metrics (Rest, Prometheus, Datadog, Statd)
- Clean AngularJS Web UI
- Websocket, HTTP/2, GRPC ready
- Access Logs (JSON, CLF)
- Let's Encrypt support (Automatic HTTPS with renewal)
- Proxy Protocol support
- High Availability with cluster mode (beta)
- Docker / Swarm mode
- Mesos / Marathon
- Rancher (API, Metadata)
- Consul / Etcd / Zookeeper / BoltDB
- Amazon ECS
- Amazon DynamoDB
- Rest API
You can have a quick look at Træfik in this Katacoda tutorial that shows how to load balance requests between multiple Docker containers. If you are looking for a more comprehensive and real use-case example, you can also check Play-With-Docker to see how to load balance between multiple nodes.
You can access the simple HTML frontend of Træfik.
- The simple way: grab the latest binary from the releases page and just run it with the sample configuration file:
- Use the tiny Docker image and just run it with the sample configuration file:
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik
- From sources:
git clone https://github.com/containous/traefik
To get basic support, you can:
- join the Træfik community Slack channel:
- use Stack Overflow (using the
- Release: We try to release a new version every 2 months
- i.e.: 1.3.0, 1.4.0, 1.5.0
- Release candidate: we do RC (1.x.0-rcy) before the final release (1.x.0)
- i.e.: 1.1.0-rc1 -> 1.1.0-rc2 -> 1.1.0-rc3 -> 1.1.0-rc4 -> 1.1.0
- Bug-fixes: For each version we release bug fixes
- i.e.: 1.1.1, 1.1.2, 1.1.3
- those versions contain only bug-fixes
- no additional features are delivered in those versions
- Each version is supported until the next one is released
- i.e.: 1.1.x will be supported until 1.2.0 is out
- We use Semantic Versioning
Please refer to contributing documentation.
Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
- Oxy: an awesome proxy library made by Mailgun folks
- Gorilla mux: famous request router
- Negroni: web middlewares made simple
- Lego: the best Let's Encrypt library in go
Kudos to Peka for his awesome work on the logo . Traefik's logo licensed under the Creative Commons 3.0 Attributions license.