Traefik, Load Balancer y Reverse Proxy para Docker

Traefik, Load Balancer y Reverse Proxy para Docker

Traefik está entre Reverse Proxy y Load Balancer, es fácil de utilizar, es dinámico, es automático, es muy rápido y es de código abierto. En el blog ya hemos hablado anteriormente sobre él, pero, hoy venimos con un caso práctico.

Imaginemos que tenemos un conjunto de microservicios desplegados en nuestra infraestructura. Probablemente utilizaremos un servicemesh y/o un orquestador para administrarlos, aunque, si deseamos que nuestros usuarios accedan a algunos desde Internet, tendremos que utilizar un Reverse Proxy y configurarlo mediante hosts virtuales o rutas, por ejemplo:

  • api.domain.com
  • domain.com/web

Bien, por ejemplo en el siguiente Diagrama tenemos unos ejemplos, facilitados por la misma gente de Traefik que complementas las dos rutas propuestas anteriormente:

Internet Private Network by Traefik

Si nos fijamos con más detalle, podremos ver las ventajas de Traefik, el cual ejercerá de nuestro routing hacia los distintos “backend” que utilizaremos. Es decir, conectaremos una série de “Frontends” con “Backends” mediante puntos de acceso (rutas). Veamos:

Frontend vs Backend by Traefik

Por ejemplo podemos identificar algunos Entrypoints como:

  • Puertos (80, 443 …),
  • SSL (Certificados, claves, autenticación,…),
  • Redirección a otro punto de entrada (redireccionar HTTP a HTTPS).

Configurando nuestro primer Traefik

Levantar un Docker de Traefik es bastante simple, por ejemplo podemos configurar un docker-compose.yml y levantar unos simples servicios que publiquen por un puerto 80 una web estática y que, mediante una ruta, podamos validar que funcionar correctamente. Veamos:

traefik:
image: traefik
command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/null:/traefik.toml

http1:
image: katacoda/docker-http-server
labels:
- "traefik.backend=http1"
- "traefik.frontend.rule=PathPrefixStrip: /http1"

http2:
image: katacoda/docker-http-server:v2
labels:
- "traefik.backend=http2"
- "traefik.frontend.rule=PathPrefixStrip: /http2"

Tras hacer un docker-compose up -d del fichero anteriormente creado, podremos ver rápidamente, mediante nuestro prompt, que se han levantado los servicios.

$ docker-compose up -d
Creating traefik_machine2_1 ...
Creating traefik_traefik_1 ...
Creating traefik_machine1_1 ...
Creating traefik_machine2_1
Creating traefik_traefik_1
Creating traefik_traefik_1 ... done

Ahora, mediante un navegador, podremos indicar nuestra URL y colocar tras de ella /http1 y/o /http2 y veremos nuestras páginas estáticas publicadas.

Si queremos indagar más sobre Traefik, recomendar su documentación: https://docs.traefik.io/basics/.

Hoy no venimos con una recomendación literaria, hoy venimos recomendando la 2ª generación de Amazon Echo:

NOTA: Recuerda que si pulsas en el enlace, me gano una pequeña comisión sin que a ti te cueste nada extra y me estarás ayudando con los costes de mantenimiento del Blog.

Comentarios, opiniones y valoración: Me gustaría saber qué tienes que decir a través de las redes sociales.

Autor: Joakim Vivas

comments powered by Disqus