Traefik: Proxy inverso y balanceador de carga para Docker

Traefik: Proxy inverso y balanceador de carga para Docker

Traefik es un proxy inverso y balanceador de carga que se integra nativamente con Docker y Kubernetes, así como con otras tecnologías de cluster como Mesos o Amazon ECS.

En este post vamos a utilizar Traefik como proxy inverso hasta una instalación de WordPress realizada mediante Docker y docker-compose . Utilizaremos el dominio canonigos.me  que apuntará mediante un wildcard DNS a una instancia EC2 en AWS.

Prerrequisitos

Partimos de una instancia con direccionamiento público y sistema operativo Debian 10 64bits.

Instalación de [crayon-668d3c9c715e6006406573-i/]  y [crayon-668d3c9c715e7147512576-i/]

Vamos a instalar Docker y la herramienta docker-compose  en nuestro host:

Configurando Traefik por primera vez: Accediendo al Dashboard

Una vez tenemos el entorno preparado para instalar contenedores docker, vamos a configurar una carpeta en nuestro directorio de usuario para poder desplegar Traefik.

El siguiente paso será editar el fichero docker-compose.yml . En él definiremos la versión del contenedor a utilizar, en este caso la etiqueta será latest . También definiremos que los puertos que expondrá serán 80  y 443 . Definiremos volúmenes y ficheros a importar dentro del contenedor (configuración estática, dinámica y fichero para letsencrypt). También usaremos una red llamada proxy  que daremos de alta más adelante para usarla con los contenedores.

Por último, una parte importante son las etiquetas con las que configuraremos este despliegue. Éstas definirán el dominio a usar ( traefik.canonigos.me ), el entrypoint  que hemos llamado websecure y que irá dirigido contra el Dashboard de Traefik ( service=api@internal ) y la red que tendrá agregada el contenedor ( proxy ).

Una vez configurado el fichero docker-compose.yml , pasamos a editar la configuración estática de Traefik:

Y, por último, editaremos la configuración dinámica. En ella, definiremos las cabeceras por defecto para las conexiones SSL hasta nuestro middleware, la capa de autenticación mediante basic-auth y los ciphers, así como la versión que usará nuestra capa TLS.

Para la autenticación hemos utilizado el paquete apache2-utils , solicitando una clave de la siguiente forma:

Antes de terminar, debemos recordar crear la red proxy  que hemos definido en los distintos ficheros de configuración:

Arrancando Traefik por primera vez

Y llegó el momento esperado, vamos a levantar Traefik mediante docker-compose . En nuestro caso hemos configurado un Wildcard DNS para que cualquier host del dominio canonigos.me  vaya a la IP de nuestra instancia EC2 en Amazon.

También hemos habilitado Let’s Encrypt y Traefik se encargará mediante los resolvers configurados de generar un certificado válido de forma automática para el hostname elegido, en nuestro caso traefik.canonigos.me .

Para comprobar el buen funcionamiento de nuestra configuración, si accedemos a http://traefik.canonigos.me  debería redirigirnos a la url asegurada mediante el certificado. De igual forma, nos solicitará el par usuario/contraseña configurado mediante el basic-auth.

Para comprobarlo en consola, usaremos mi querido amigo httpie :

Por si no te lo crees, aquí te dejo una captura del Dashboard de nuestro Traefik recién instalado.

Traefik: Qué es, cómo configurarlo y ponerlo en marcha

En el siguiente post desplegaremos un WordPress mediante Docker y lo enrutaremos automáticamente mediante labels  a través de Traefik, dotándolo de certificado de seguridad Let’s Encrypt.

Deja una respuesta

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