Traefik is a modern HTTP reverse proxy and load balancer written in Go that automates routing configuration for microservices deployed in dynamic infrastructure environments. The project integrates directly with container orchestrators and service registries including Docker, Kubernetes, Consul, Etcd, Amazon ECS, and Rancher, automatically discovering services and generating routes without requiring manual configuration updates. This dynamic configuration capability addresses a core pain point in microservice architectures where services are frequently added, removed, scaled, or upgraded throughout the day.
The core functionality centers on eliminating the traditional reverse proxy workflow where operators must manually maintain route mappings between paths, subdomains, and backend services. Instead, Traefik listens to the orchestrator or service registry API and instantly generates appropriate routes, allowing microservices to be accessible to external users without further intervention. The system supports manual route configuration as an alternative for users who prefer explicit control over specific routes.
Key features include continuous configuration updates without requiring restarts, multiple load balancing algorithms, automatic HTTPS provisioning through Let's Encrypt with wildcard certificate support, circuit breakers and retry logic, and a clean web UI for visibility into routing and service status. The proxy handles modern protocols including WebSocket, HTTP/2, and gRPC. Traefik exposes metrics through multiple backends including Prometheus, Datadog, Statsd, and InfluxDB 2.X, maintains access logs in JSON and CLF formats, and provides a REST API for programmatic interaction. The entire application is packaged as a single Go binary and distributed as an official Docker image.
The release cycle follows a predictable schedule with three to four new versions released annually, each preceded by release candidates. Bug fix versions are released as needed between feature releases. Each version receives support until the next version is released, and the project adheres to semantic versioning. The maintainers emphasize an open philosophy for team membership, documenting how motivated contributors can join the core team and participate in the project's governance and review processes.