Cloud native routing done
What do you like best?
I've had the joy of setting up traefik as reverse proxy for prometheus and grafana.
It's a great piece of software, written in Golang and open source. Let me explain what it makes so unique compared to Nginx/Apache/Haproxy.
traefik provides different way for configuration. You can feed it with YAML, JSON or TOML. There is no custom format, like in Nginx.
If you ever wrote a custom Ansible module for Nginx you know what I mean... with Traefik you can just pipe the YAML 1 to 1 to the traefik configuration. For configuration purposes Traefik provides an API and a nice dashboard, which helps for debugging. Traefik also provides natively prometheus metrics (something that nginx or apache do not) and I think that the router/middleware/service concept is pretty unique. Right now I am testing it in Kubernetes Environment and I am convinced so far, that I am going to use it as Ingress.
What do you dislike?
While working on my reverse proxy setup for prometheus and grafana with traefik I had some difficulties with error debugging and the correct config file format. The configuration can be either in YAML, TOML or JSON and provides different elements like routers, middlewares and services. This concept is new for somebody who comes from the Nginx/Apache world and it might be difficult to fully understand it. During my setup I encountered a few situations, where I had the feeling that the debugging/logging output is not mature enough. I would like to have more verbose debugging. I am used to nginx, nginx can specify the exact error why something is not working. With traefik, however, this is far more difficult. Sometimes it's not clear why the middleware or why the service is not catching up the specific router. I wish there would be an explanation for the debugging output and maybe an in-depth guide for debugging and traefik troubleshooting.
What problems are you solving with the product? What benefits have you realized?
I've used Traefik as reverse proxy for Grafana and Prometheus. I've realized that the configuration is far shorter, but equal verbose as for Nginx. It also has sane TLS defaults, that is a big bonus!