Esta publicación trata sobre Traefik para Docker Containers.
Introducción a la configuración
Cómo ocurre la magia
Traefik para contenedores Docker
Si aún no tiene Docker instalado, puede encontrar instrucciones para Ubuntu o Debian. Esta guía utiliza docker-compose para ejecutar Traefik, por lo que es necesario instalar también docker-compose. Las dos guías vinculadas lo ayudarán a configurar docker-compose en su propio host.
Empecemos configurando Traefik.
Primero, cree algunos archivos y un directorio de carpetas para nuestros contenedores:
mkdir -p /opt/containers/traefik
mkdir /opt/containers/traefik/data
touch /opt/containers/traefik/data/traefik.yml
touch /opt/containers/traefik/data/acme.json
chmod 600 /opt/containers/traefik/data/acme.json
Generar contraseña segura
Cree archivos de configuración y configure una contraseña cifrada para acceder al panel de control de traefik. Puede utilizar la utilidad htpasswd para crear la contraseña cifrada. Para usar la utilidad htpasswd, instale la utilidad con el siguiente comando
$ sudo apt-get install -y apache2-utils
Luego ejecute el siguiente comando para generar la contraseña segura
$sudo htpasswd -nb unixcop unixcop@123
unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe/
He usado "unixcop@123" para cifrar. Puedes tener tus propias suposiciones. El usuario se toma como "unixcop", puede reemplazarlo con su propio nombre de usuario.
Copie la salida generada automáticamente y guárdela en algún lugar, ya que necesitamos usar esta contraseña cifrada en el archivo de configuración de Traefik para configurar la autenticación básica para el tablero de Traefik
traefik.yml
A continuación, abrimos nuestro archivo de configuración traefik recién creado con un editor de su elección.
vim /opt/containers/traefik/data/traefik.yml
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: [email protected] # CHANGE HERE
storage: acme.json
httpChallenge:
entryPoint: http
Crea un docker-compose.yml
archivo donde definirá un reverse-proxy
servicio que utiliza la imagen oficial de Traefik:
docker-compose.yml
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.domain.tld`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.domain.tld`)"
- "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
networks:
proxy:
external: true
Con nuestro docker-compose.yml estamos definiendo el contenedor acoplable Traefik con todas las configuraciones y archivos de configuración. Para poner en marcha Traefik, solo necesita ajustar algunas configuraciones:
- reemplace ambos
traefik.domain.tld
con su propio nombre de dominio. Este dominio debe ser un subdominio como traefik.ae3.ch por ejemplo. Posteriormente podrá acceder a Traefik Dashboard con este (sub)dominio.
Crear red Docker para Traefik
Es una buena idea configurar una red acoplable separada que sea utilizada por Traefik y todos los demás contenedores acoplables que le gustaría poner a disposición de Traefik.
Para crear esta red acoplable, todo lo que necesita hacer es pegar el siguiente comando en su CLI:
docker network create proxy
Ejecutar Traefik
docker-compose up -d
Después de unos segundos, puede verificar y acceder a su Tablero de Traefik en su Dominio personalizado que ingresó en su docker-compose.yml