Traefik es un Edge Router de código abierto, hace que la publicación de sus servicios sea una experiencia fácil y divertida. Recibe solicitudes en nombre de su sistema y descubre qué componentes son responsables de manejarlas.
Lo que distingue a este router, además de sus muchas funciones, es que descubre automáticamente la configuración adecuada para sus servicios (containers). La magia sucede cuando inspecciona la infraestructura, donde encuentra información relevante y descubre qué servicio debe atender qué solicitud.
Dependencias usadas:
- Docker
- Docker-compose
- Git
Deploy Traefik
$ git clone https://github.com/tomasmetal23/traefikv2-with-letsencrypt.git && cd traefikv2-with-letsencrypt
Primero editaremos el archivo traefik.toml y agregaremos nuestro email para recibir los mensajes sobre los certificados .
Procederemos a modificar el archivo traefik_dynamic.toml, pero antes vamos a crear las credenciales para el dashboard. Introduciremos nuestro usuario y contraseña, el cual encriptaremos en https://www.htaccesstools.com/htpasswd-generator/ y agregamos el subdomain con el cual podremos acceder al dashboard.
Creamos el archivo que funciona como deposito de los certificados SSL
$ touch acme.json
$ chmod 600 acme.json
Deploy traefik with docker-compose
$ docker network create web
$ docker-compose up -d
Deploy with docker run
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PWD/traefik.toml:/traefik.toml \
-v $PWD/traefik_dynamic.toml:/traefik_dynamic.toml \
-v $PWD/acme.json:/acme.json \
-p 80:80 \
-p 443:443 \
--network web \
--name traefik \
traefik:latest
Portainer Container Management with Traefik labels
Hagamos un deploy de portainer con las labels en el docker-compose, de esta forma podremos ejemplificar.
$ mkdir -p stacks/portainer && cd stacks/portainer && nano docker-compose.yml
version: "3"
services:
portainer:
image: portainer/portainer-ce
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/data/portainer:/data
networks:
- web
#traefik labels
labels:
- "traefik.enable=true"
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.rule=Host(`portainer.tudomain.com`)"
- "traefik.http.routers.portainer.tls.certresolver=lets-encrypt"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
command: -H unix:///var/run/docker.sock
networks:
web:
external: true
Finalmente, guardamos el docker-compose.yml con este contenido y procedemos a ejecutar docker-compose
$ docker-compose up -d
Referencias
Otros artículos
Administrador de sistemas, un curioso amante de las tecnologías.