Traefik, mucho mas que un proxy inverso

Traefik fue para mi todo un descubrimiento. Son de esos servicios de los que piensas, *¿como he podido sobrevivir *tecnológicamente* antes sin esto?*. Es por esta razón, por la que he decidido dedicar un completo tutorial a este increíble servicio, para que aquellos que todavía no lo conocen, tengan la oportunidad de sacarle el máximo provecho.

Si no conoces Traefik, y por simplificar al máximo, indicarte que se trata de un enrutador. Una herramienta que te permite conectar distintas url con el servicio que tu quieras. Básicamente un proxy inverso dinámico.

Imagina que tienes varios servicios funcionando en tu VPS o en tu servidor, y quieres que asignar a cada uno de esos servicios una url, por ejemplo servicio1.dominio.com a tu servicio1, servicio2.dominio.com a tu servicio2 y así sucesivamente. Traefik se encarga de hacer esto de forma auto mágica. En cuanto a ¿que servicios pueden ser?, simplemente, los que tu quieras.

Sin embargo, esta solo es una de las habilidades de Traefik, y la razón de este tutorial, en el que descubrirás esta herramienta y las posibilidades que ofrece.

Traefik, mucho mas que un proxy inverso

Traefik, mucho mas que un proxy inverso

Requisitos

Antes de nada, indicarte los requisitos que tienes que tener en cuenta para lanzarte al maravilloso mundo de Traefik. Y es que para utilizar Traefik, necesitarás por una parte unos mínimos conocimientos de contenedores, por lo menos para el enfoque que le voy a dar, que es dirigido básicamente a Docker. Esto no quiere decir que descarte adentrarme en otros proveedores.

Dado que necesitas conocimientos de contenedores Docker, necesitas una máquina Linux para poder trabajar con ambas tecnologías. Esta máquina puede ser tu propia máquina, o bien, utilizar un VPS o cualquier otro servidor.

Todo lo que vas a ver en este tutorial está realizado sobre un VPS con Ubuntu 20.04.1, aunque cuando empecé a redactar el tutorial, ese VPS corría un Ubuntu 18.04, de LTS en LTS.

¿Que es Traefik?

Como te he indicado en la introducción, Traefik es un enrutador. Una herramienta que se encarga de conectar servicios con rutas. Y se encarga de hacerlo, de forma sencilla y cómoda.

Es sencillo, imagina que tienes un contenedor docker que está sirviendo NextCloud y otro contenedor en el que tienes funcionando WordPress. Puedes definir dos rutas, una llamada https://nextcloud.tudominio.com y otra ruta que sea https://wordpress.tudominio.como. Cuando tu realices una llamada a una de estas dos rutas Traefik se encargará de dirigir el tráfico al contenedor correcto y de forma precisa. Pero además, todo esto lo puedes hacer sobre la marcha, sin necesidad de detener Traefik cada vez que pongas en marcha un nuevo servicio.

Esto es así, porque Traefik, entre otras muchas cosas, se encarga de realizar un descubrimiento automático, tanto de servicios, como de la configuración de esos servicios, a base de inspeccionar la infraestructura en la que reside Traefik.

El logo de traefik

Algunos conceptos importantes

A continuación, un par de conceptos importantes. Incluyo el nombre original en inglés, y mi traducción, para que no haya lugar a dudas de a que me refiero.

  • Edge Router (enrutador de borde). Traefik es un Edge Router; esto significa que es la puerta a tu plataforma. Se encarga de interceptar cada petición que se realiza y enrutarla al servicio correcto. Traefik, sabe la lógica y las reglas que determinan que servicio es el encargado de gestionar cada petición.
  • Auto Service Discovery (servicio de auto descubrimiento). Mientras que los proxies tradicionales necesitan una configuración concreta que contiene las rutas a cada uno de los servicios, en el caso de Traefik, estas rutas son extraídas directamente de los propios servicios. De esta manera, cuando tu levantas, despliegas, un nuevo servicio, en él, indicas la información que Traefik necesita para gestionar el enrutamiento hacia el mismo.

Por ejemplo, pongamos que tienes dos páginas en WordPress en sus correspondientes contenedores. A la hora de desplegarlas, tu añadirás la información necesaria, para que Traefik sepa como llevar las peticiones a esos servicios. Una vez levantado el contendor, Traefik, se encarga de extraer esa información, y sin necesidad de detenerse, empezar a dirigir el tráfico a un WordPress o al otro.

Traefik, monitoriza la infraestructura sobre la que está asentado, de forma que sabe cuando se despliega un nuevo servicio, por ejemplo en un contenedor, en este caso. Una vez sabe que se ha desplegado el contenedor, extrae la información que necesita para dirigir el tráfico a ese nuevo servicio.

Pero ¿que pasa cuando detienes un servicio? Como te digo, dado que Traefik, está monitorizando la infraestructura, cuando detengas un servicio, se dará cuenta de esto, y dejará e enrutar tráfico al mismo.

Donde reside la magia

  • Rules (reglas). Para determinar que ruta está asociada que servicio, Traefik utiliza reglas. Estas reglas, como verás en siguientes capítulos de este tutorial, pueden ser desde palabras o expresiones regulares en el encabezado de la petición, o en la propia ruta. Pero no solo esto, sino que ademas podrás combinar diferentes reglas.
  • Middleware (lo de enmedio). Traefik es capaz de modificar o incluso enriquecer una determinada petición antes de que llegue al servicio destino. Por ejemplo, puede añadir un mecanismo de autenticación previo, limitar el número de peticiones, reintentar la petición en caso de que se produzca un error.

¿Y como realiza Traefik el auto descubrimiento? Esto lo hace en base a la infraestructura sobre la que reside. Para ello, es necesario que indiques a Traefiek, el provider (proveedor) que sustenta la infraestructura.

Existen diferentes proveedores, como puede ser Docker, Kubernetes, Rancher, Consul, Redis, etc.

Conclusión

El objeto de este capítulo era mostrar una introducción de las interesantes características que aporta Traefik, cuyo objetivo básico es simplificar tu vida digital, haciendo mucho mas sencillo, correr diferentes servicios en una misma máquina.

En el siguiente capítulo, ya entrarás en harina, instalando Traefik y desplegando tus primeros contenedores bajo el amparo de este proxy inverso, para asentar todas las ideas y conceptos que has visto en este primer capítulo de introducción.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *