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.
| Overview | Features | Supported backends | Quickstart | Web UI | Test it | Documentation | Support | Release cycle |
| Contributing | Maintainers | Plumbing | Credits |
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:
- domain
api.domain.com
will point the microserviceapi
in your private network - path
domain.com/web
will point the microserviceweb
in your private network - domain
backoffice.domain.com
will point the microservicesbackoffice
in 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 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
- Kubernetes
- Mesos / Marathon
- Rancher (API, Metadata)
- Consul / Etcd / Zookeeper / BoltDB
- Eureka
- Amazon ECS
- Amazon DynamoDB
- File
- 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.
Here is a talk given by Emile Vauge at GopherCon 2017. You will learn Træfik basics in less than 10 minutes.
Here is a talk given by Ed Robinson at ContainerCamp UK conference. You will learn fundamental Træfik features and see some demos with Kubernetes.
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:
./traefik --configFile=traefik.toml
- 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
You can find the complete documentation at https://docs.traefik.io. A collection of contributions around Træfik can be found at https://awesome.traefik.io.
To get basic support, you can:
- join the Træfik community Slack channel:
- use Stack Overflow (using the
traefik
tag)
If you prefer commercial support, please contact containo.us by mail: mailto:[email protected].
- 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.
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.
Information about process and maintainers
- 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.
Traefik's logo was inspired by the gopher stickers made by Takuya Ueda (https://twitter.com/tenntenn). The original Go gopher was designed by Renee French (http://reneefrench.blogspot.com/).