Fri. Dec 13th, 2019

Traefik v2.1 releases: modern HTTP reverse proxy and load balancer

3 min read

Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (DockerSwarm modeKubernetesMarathonConsulEtcdRancherAmazon ECS, …) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need.

Imagine that you have deployed a bunch of microservices with the help of an orchestrator (like Swarm or Kubernetes) or a service registry (like etcd or consul). Now you want users to access these microservices, and you need a reverse proxy.

Traditional reverse-proxies require that you configure each route that will connect paths and subdomains to each microservice. In an environment where you add, remove, kill, upgrade, or scale your services many times a day, the task of keeping the routes up to date becomes tedious.

This is when Traefik can help you!

Traefik listens to your service registry/orchestrator API and instantly generates the routes so your microservices are connected to the outside world — without further intervention from your part.

Run Traefik and let it do the work for you! (But if you’d rather configure some of your routes manually, Traefik supports that too!)

 

Features

  • Continuously updates its configuration (No restarts!)
  • Supports multiple load balancing algorithms
  • Provides HTTPS to your microservices by leveraging Let’s Encrypt (wildcard certificates support)
  • Circuit breakers, retry
  • See the magic through its clean web UI
  • Websocket, HTTP/2, GRPC ready
  • Provides metrics (Rest, Prometheus, Datadog, Statsd, InfluxDB)
  • Keeps access logs (JSON, CLF)
  • Fast
  • Exposes a Rest API
  • Packaged as a single binary file (made with ❤️ with go) and available as a tiny official docker image

Changelog v2.1

Enhancements:

  • [consulcatalog] Add consul catalog options: requireConsistent, stale, cache (#5752 by ldez)
  • [consulcatalog] Add Consul Catalog provider (#5395 by negasus)
  • [k8s,k8s/crd,service] Support for all services kinds (and sticky) in CRD (#5711 by mpl)
  • [metrics] Added configurable prefix for statsd metrics collection (#5336 by schulterklopfer)
  • [middleware] Conditional compression based on request Content-Type (#5721 by ldez)
  • [server] Add internal provider (#5815 by ldez)
  • [tls] Add support for MaxVersion in tls.Options (#5650 by kmeekva)
  • [tls] Add tls option for Elliptic Curve Preferences (#5466 by ksarink)
  • [tracing] Update jaeger dependencies (#5637 by mmatur)

Bug fixes:

  • [api] fix: debug endpoint when insecure API. (#5937 by ldez)
  • [cli] fix: sub command help (#5887 by ldez)
  • [consulcatalog] fix: consul catalog constraints. (#5913 by ldez)
  • [consulcatalog] Service registered with same id on Consul Catalog (#5900 by mmatur)
  • [consulcatalog] Fix empty address for registering service without IP (#5826 by mmatur)
  • [logs,middleware,metrics] detect CloseNotify capability in accesslog and metrics (#5985 by mpl)
  • [server] fix: remove double call to server Close. (#5960 by ldez)
  • [webui] Fix weighted service provider icon (#5983 by sh7dm)
  • [webui] Fix http/tcp resources pagination (#5986 by matthieuh)
  • [webui] Use valid condition in the service details panel UI (#5984 by jbdoumenjou)
  • [webui] Web UI: Avoid polling on /api/entrypoints (#5863 by matthieuh)
  • [webui] Web UI: Sync toolbar table state with url query params (#5861 by matthieuh)

Documentation:

  • [consulcatalog] fix: Consul Catalog documentation. (#5725 by ldez)
  • [consulcatalog] Fix consul catalog documentation (#5661 by mmatur)
  • Prepare release v2.1.0-rc2 (#5846 by ldez)
  • Prepare release v2.1.0-rc1 (#5844 by jbdoumenjou)
  • Several documentation fixes (#5987 by ldez)
  • Prepare release v2.1.0-rc3 (#5929 by ldez)

Misc:

  • [cli] Add custom help function to command (#5923 by Ullaakut)
  • [server] fix: use MaxInt32. (#5845 by ldez)
  • Merge current v2.0 branch into master (#5841 by ldez)
  • Merge current v2.0 branch into master (#5749 by ldez)
  • Merge current v2.0 branch into master (#5619 by ldez)
  • Merge current v2.0 branch into master (#5464 by ldez)
  • Merge v2.0.0 into master (#5402 by ldez)
  • Merge v2.0.0-rc3 into master (#5354 by ldez)
  • Merge v2.0.0-rc1 into master (#5253 by ldez)
  • Merge current v2.0 branch into v2.1 (#5977 by ldez)
  • Merge current v2.0 branch into v2.1 (#5931 by ldez)
  • Merge current v2.0 branch into v2.1 (#5928 by ldez)

Download