Traefik v2 para Docker es una herramienta potente y flexible para poder llevar acabo la administracion del tráfico y enrutar las solicitudes en entornos modernos nativos de la nube. Se ha convertido en una opción popular para muchas organizaciones que están adoptando microservicios y contenedores.
Traefik está diseñado para funcionar sin problemas con sistemas de orquestación de contenedores como Docker y Kubernetes, y tiene soporte integrado para múltiples proveedores de descubrimiento de servicios como Docker, Consul y Kubernetes. Esto significa que Traefik puede descubrir automáticamente nuevos servicios y enrutar el tráfico hacia ellos sin necesidad de ninguna configuración manual.
Además de su proxy inverso central y la funcionalidad de balanceo de carga, Traefik también incluye funciones como terminación SSL, controles de estado, disyuntores y un panel web para monitorear y administrar su infraestructura. También está diseñado para ser altamente configurable y extensible, con un poderoso sistema de complementos que le permite agregar funciones personalizadas según sea necesario.
¿Cómo funciona Traefik?
Traefik es un proxy inverso que se encuentra entre las solicitudes de los clientes y los servicios de back-end que manejan esas solicitudes. Funciona al inspeccionar las solicitudes entrantes y usar un conjunto de reglas para determinar cómo enrutar la solicitud al servicio de backend apropiado.
Cuando llega una solicitud, Traefik primero la inspecciona y extrae información como la URL, los encabezados de la solicitud y otros metadatos. Luego usa esta información para determinar qué servicio de back-end debe manejar la solicitud. Las reglas de enrutamiento de Traefik se pueden basar en varios factores, como el nombre de host, la ruta o los valores de encabezado en la solicitud entrante.
Una vez que Traefik ha determinado el servicio de back-end adecuado, reenvía la solicitud a ese servicio y luego devuelve la respuesta al cliente. Traefik también puede realizar operaciones adicionales, como terminación de SSL, equilibrio de carga y controles de estado en los servicios de backend.
Una de las ventajas clave de Traefik es su capacidad para descubrir y enrutar automáticamente el tráfico a los servicios de back-end sin necesidad de configuración manual. Esto se logra a través del soporte de Traefik para proveedores de descubrimiento de servicios como Docker, Kubernetes y Consul. Cuando se agregan o eliminan nuevos servicios, Traefik puede detectar automáticamente estos cambios y ajustar su enrutamiento en consecuencia.
En general, Traefik es una herramienta potente y flexible que proporciona una amplia gama de funciones para gestionar el tráfico y enrutar las solicitudes en entornos modernos nativos de la nube. Su capacidad para descubrir y enrutar automáticamente el tráfico a los servicios de back-end lo convierte en una opción atractiva para las organizaciones que están adoptando microservicios y contenedores.
Empezando
Para Implementar Traefik v2 para Docker, siga estos pasos:
Paso 1. Instale Docker en su máquina
Si aún no lo ha hecho, descargue e instale Docker desde el sitio web de Docker Oficia, esta instalación dependerá del sistema operativo en cual vayas a trabajar con Docker.
Puede seguir los pasos de instalación y los sistemas operativos que soportan Docker desde aquí
Paso 2. Crea una red Docker
Debe crear una red Docker que Traefik pueda usar para comunicarse con sus otros contenedores Docker. Abra una terminal o símbolo del sistema y ejecute el siguiente comando:
docker network create traefik
Paso 3. Crea un archivo de configuración
Debe crear un archivo de configuración para Traefik que especifique cómo debe enrutar el tráfico. Cree un nuevo archivo llamado traefik.yml y agregue la siguiente configuración:
api:
dashboard: true
entryPoints:
http:
address: ":80"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
letsencrypt:
acme:
email: <your-email>
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: http
En este archivo de configuración, estamos configurando Traefik para escuchar en el puerto 80 y enrutar el tráfico a los contenedores de Docker. También estamos configurando Let’s Encrypt para emitir automáticamente certificados SSL para nuestros dominios.
Paso 4. Ejecute Traefik
Ahora puede ejecutar Traefik usando el siguiente comando:
docker run -d -p 80:80 -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PWD/traefik.yml:/traefik.yml \
-v $PWD/letsencrypt:/letsencrypt \
--network traefik \
--name traefik \
traefik:v2.5
Este comando iniciará Traefik en un contenedor Docker, montará el archivo de configuración y el almacenamiento Let’s Encrypt, y lo conectará a la red traefik.
Una vez que Traefik esté en funcionamiento, debería poder acceder al tablero de Traefik navegando a http://localhost:8080/dashboard/
.
Paso 5. Configura tus aplicaciones
Ahora puede configurar sus aplicaciones Docker para usar Traefik como proxy inverso. Para hacer esto, debe agregar algunas etiquetas al archivo Docker Compose de su aplicación:
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`myapp.local`)"
- "traefik.http.services.myapp.loadbalancer.server.port=80"
En este ejemplo, le decimos a Traefik que enrute el tráfico a un contenedor con el nombre de host myapp.local en el puerto 80.
¡Eso es todo! Con la configuración de Traefik, puede agregar fácilmente certificados SSL y enrutar el tráfico a sus contenedores Docker.
Aquí hay un archivo docker-compose.yml de ejemplo que usa Traefik como un proxy inverso:
version: '3'
services:
traefik:
image: traefik:v2.5
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80" ports: - "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
whoami:
image: containous/whoami
labels: - "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.local`)"
- "traefik.http.services.whoami.loadbalancer.server.port=80"
En este ejemplo, estamos definiendo dos servicios: traefik y whoami. El servicio traefik es el propio proxy inverso de Traefik, y el servicio whoami es un servidor HTTP simple que será enrutado por Traefik.
Hemos definido el servicio traefik con la configuración necesaria para habilitar el proveedor de Docker y establecer el punto de entrada en el puerto 80. También hemos mapeado los puertos y volúmenes necesarios.
Para el servicio whoami, agregamos algunas etiquetas específicas de Traefik que le indican a Traefik que enrute el tráfico al servicio whoami usando el nombre de host whoami.local.
Con esta configuración, si ejecuta docker-compose up, debería poder acceder al servicio whoami navegando a http://whoami.local en su navegador web. Traefik enrutará automáticamente el tráfico al contenedor whoami. También puede acceder al tablero de Traefik en http://localhost:8080/dashboard/ .
Conclusión:
Listo!
Con esta configuración ya puede Implementar Traefik v2 para Docker de forma local o en producción y asi puede realizar el despliegue de sus aplicaciones mediante docker-compose sin tener tanto problema eligiendo la red en la que se haya montado traefik.
¿Desea obtener ayuda para la implementación, modificación o ampliar la funcionalidad de como Implementar Traefik v2 para Docker? Enviar una solicitud de servicio pagado