mrkeyoor.com_
Sat 31 Oct 15:05 UTC
Dev Toolsevaluationupdated 11 Oct 2026

traefik review

Traefik routes incoming web requests to the right application and spreads traffic across available backends. It watches systems such as Docker and Kubernetes so routes can follow services as they move or scale.

+49stars / 7d
Verdict

Our Traefik run built successfully in 326 seconds, but its test command ended with 152 passed and 8 failed results, so the complete suite did not pass at commit 6e722fe. Use Traefik when changing Docker or Kubernetes services make automatic routing worth the provider permissions and certificate work. For fixed sites or upgrades you cannot rehearse, I would choose a simpler operating arrangement.

We ran it

Lab card: what happened when we ran traefikScreenshot of traefik (traefik.io)
Install✓ · 179s795 packages
Build✓ · 326s
Tests✗ · 418s152 passed · 8 failed of 160 (go test)
Repo2345 files~271,814 lines of source · 32 MB · 16 CI workflows · Dockerfile

Answers from our run

Does traefik build from source?

Dependencies installed in 179 seconds (795 packages), and the build succeeded in 326 seconds. We cloned commit 6e722fe into a clean Debian container with 3 CPUs and no project-specific setup.

Do traefik's tests pass?

No. The project's own test command finished in 418 seconds and reported 152 passed, 8 failed (go test).

Who should not use traefik?

Owners of a few fixed sites with little service churn: the README centers on orchestrator-driven routing, while manual file configuration remains your responsibility.

What are the alternatives to traefik?

Caddy, NGINX, HAProxy. Our Traefik run built successfully in 326 seconds, but its test command ended with 152 passed and 8 failed results, so the complete suite did not pass at commit 6e722fe.

Setup3/5179-second source install; provider access and certificate work remain
Docs4/5Detailed provider references and concrete patch migration instructions
Community5/5October 8 push, 65,148 stars, and current issue and PR activity
Maturity4/5Active gateway project; our complete test command still failed

Discussed on

  1. hnTraefik Proxy v3.0.0 Released16 points
  2. hnTraefik – Makes Networking Boring3 points
  3. hnTraefik dashboard collecting analytics data without user consent3 points

Who it’s for

Docker and Kubernetes operators whose services change during deployments and need routes to follow them.
Platform teams that want routing rules beside service definitions, with access logs and metrics for operations.
Developers prepared to manage provider permissions and certificate state while using a published binary or container image.

Who it’s NOT for

Owners of a few fixed sites with little service churn: the README centers on orchestrator-driven routing, while manual file configuration remains your responsibility.
Teams expecting unattended patch upgrades: the v3.7.14 migration guide changes generated names and Gateway API route precedence.
Kubernetes operators expecting built-in certificate issuance to handle replica coordination: the ACME documentation recommends a separate certificate controller for open-source high availability.
Teams requiring an existing, audited private key for built-in ACME issuance: open issue 14035 requests that capability, so confirm another certificate workflow first.

Setup reality

Our sandbox installed commit 6e722fe in 179 seconds, pulling 795 packages, and built it in 326 seconds. The test command failed with exit 1 after 418 seconds: the lab summary records 152 passed and 8 failed out of 160. The supplied tail shows successful package checks and a final FAIL, without the failing errors.

The README offers a binary or official image as well as source. Docker discovery needs Docker API access; Kubernetes discovery needs cluster permissions. Configure listening endpoints and routing rules. ACME needs domain validation and persistent certificate storage, with DNS-provider credentials for wildcard certificates.

We ran in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, golang:1.24-bookworm, and no secrets. The result covers source installation, build, and tests. Production also needs explicit exposure rules, restricted dashboard access, and a certificate strategy for replicas.

Automatic routing earns its keep when containers move

Deploy a replacement container and the proxy needs to find it before users do. Traefik watches Docker, Kubernetes, and other infrastructure providers, then updates routing as services change. That solves a recurring chore for teams whose backends move or scale during deployments. The Traefik README also lists WebSocket and gRPC support, access logs, and metrics. Automatic discovery is the reason I'd choose it.

Our checkout contained 2,345 files and about 271,814 lines of source in 32 MB. This is a substantial Go project to work on. Operators can use the published binary or official container image, so the source tree's size doesn't describe the runtime footprint. For a few fixed backends, I'd need a specific discovery problem before accepting Traefik's configuration model.

Discovery still needs routing rules and startup settings

Traefik separates startup configuration, which defines listening endpoints and provider connections, from routing configuration, which describes how requests reach services. Docker labels can supply a hostname rule beside the container definition. Routing changes reload without restarting the proxy. You still decide which applications to expose and how to secure them. The README's suggestion that pointing at an orchestrator is enough understates those decisions. The configuration introduction explains the split more clearly.

Installing the source pulled 795 packages in our sandbox. That is a contributor setup cost, not a requirement to install every package separately on a gateway host. The packaged runtime is a different route to adoption. Neither route chooses your domains, application network, or certificate policy. Review those choices alongside the service configuration.

What happened when we ran it

Our run installed Traefik in 179 seconds and built it in 326 seconds at commit 6e722fe on October 10, 2026. We used a fresh Debian container with 3 CPUs, 8 GB of RAM, and the golang:1.24-bookworm image, without elevated privileges or secrets. Both steps succeeded. Those timings describe this source checkout on this box, not the time needed to deploy a published image.

The test command failed with exit 1 after 418 seconds. The lab summary records 152 passed and 8 failed out of 160. The supplied log tail shows successful Go package results for several load balancers, TCP, TLS, types, and UDP, followed by the final FAIL. It doesn't name the failing cases or show their errors. The excerpt gives no cause. Our scan found 16 CI workflow files and a Dockerfile, but no tests directory. The passing package lines establish that checks ran despite that directory signal. Our measurement setup covers source installation, compilation, and the test command. It supplies no request-throughput or live certificate-issuance result.

Docker discovery requires access beyond an application network

The Docker provider reference warns that unrestricted Docker API access can expose the host if Traefik is compromised. Discovery requires a permitted API endpoint, and the default configuration exposes containers through Traefik unless you disable it. Set exposedByDefault=false and enable intended services explicitly. The dashboard guidance also calls for restricted, authenticated access because the API reveals configuration. A working route leaves both access decisions unresolved.

Our unprivileged container with 8 GB of RAM provides no evidence that a particular Docker access policy is sufficient. If your platform forbids the proxy from reaching Docker's API, use another provider, such as a file, or choose a proxy that fits your existing deployment process. File configuration is supported, but it gives up the automatic Docker discovery that makes Traefik attractive in the first place.

Built-in ACME leaves certificate operations to you

The ACME reference requires certificate storage and a configured domain-validation challenge. Wildcards need DNS validation and the relevant provider credentials. For highly available Kubernetes deployments, the documentation recommends a certificate controller such as cert-manager when staying with open-source Traefik. Treat issuance and renewal as a separate operational responsibility. Deploying additional proxy replicas doesn't establish that certificate challenges will reach the right instance.

The 32 MB checkout we measured is disposable. Certificate storage needs to outlive the container, so back up issuance state deliberately. Open issue 14035 requests support for supplying an existing private key to the ACME resolver and reports trouble after losing acme.json. That's a user report, separate from our run. Teams requiring a fixed, pre-audited issuance key should confirm their certificate workflow before adopting the built-in resolver.

Patch upgrades can change routing and monitoring

Release v3.7.14 shipped on October 6, 2026, with a prominent migration-guide link. Its migration instructions describe changed generated resource names and Gateway API precedence when routes match equally well. Dashboards and alerts tied to those names need attention. These are concrete upgrade costs for an operator who expects patch replacements to preserve every observed behavior.

The repository's last push was October 8, 2026. GitHub listed 65,148 stars and 950 open issues and PRs, with issue and pull-request updates continuing through October 11. That shows active maintenance, alongside a substantial queue. Our 8 failed results remain a separate finding about commit 6e722fe. Recent activity doesn't explain them, and the October 6 release isn't proof that a different deployment will pass.

Caddy is easier to justify for fixed sites

Caddy is my first comparison for fixed sites where automatic HTTPS matters more than orchestrator discovery. NGINX makes sense when serving files and keeping familiar explicit proxy configuration are priorities. Compare HAProxy when the job centers on deliberately configured load balancing. Traefik earns the extra attention when deployment metadata should drive routes.

Before switching real traffic, require the deployment to demonstrate backend replacement and certificate recovery. Our 152 passing results don't answer either question. Verify that the intended hostname reaches the replacement service, an unapproved container stays unreachable, and certificate state survives recreation. Keep your existing gateway until that replacement and recovery drill passes.

Alternatives

ProjectWhat it isPick it when
Caddy gh↗A web server with automatic HTTPS and explicit site configuration.pick this instead when a few fixed sites need HTTPS without orchestrator-driven discovery.
NGINX gh↗A web server and reverse proxy configured through explicit files.pick this instead when static files and an existing NGINX operating process matter more than automatic discovery.
HAProxyA proxy centered on load balancing and explicit backend configuration.pick this instead when you want to control a load-balancing configuration directly rather than derive it from service metadata.

What people are saying

  1. [github-trending] traefik/traefik

Sources

  1. Traefik README
  2. Startup and routing configuration
  3. Docker provider access and exposure defaults
  4. ACME certificate configuration and Kubernetes caveats
  5. Traefik v3.7.14 release
  6. Traefik v3.7.14 migration changes
  7. Existing private key request for ACME, issue 14035
  8. Traefik repository activity and metadata

More dev tools reviews

rufus · linux-insides · cat-catch · date-fns · okhttp · the-craft-of-selfteaching · the whole board →