Cómo instalar y utilizar Traefik como proxy inverso con Docker en CentOS 8

Traefik es un proxy inverso HTTP de código abierto y un equilibrador de carga que te ayuda a desplegar microservicios fácilmente. Puedes integrarlo fácilmente con tus componentes de infraestructura, como Docker, Kubernetes, Docker Swarm, Rancher, AWS y muchos más. Si quieres ejecutar varias aplicaciones en el mismo host Docker, puedes utilizar Traefik como proxy inverso para exponer los puertos 80 y 443 al resto del mundo.

En este tutorial, te mostraremos cómo instalar y configurar Traefik como proxy inverso en CentOS 8.

Requisitos previos

  • Un servidor con CentOS 8.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada el servidor.

Instalar Docker y Docker Compose

En primer lugar, tendrás que instalar la última versión de Docker y Docker Compose en tu sistema. Por defecto, Docker no está disponible en el repo por defecto de CentOS 8. Así que tendrás que añadir el repositorio de Docker CE en tu sistema. Puedes añadirlo con el siguiente comando:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Una vez creado el repo, instala Docker CE con el siguiente comando:

dnf install docker-ce --nobest -y

Una vez instalado el Docker, inicia el servicio Docker y permite que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start docker
systemctl enable docker

Para instalar Docker Compose, tendrás que instalar Curl y descargar el binario de Docker Compose en tu sistema. Puedes hacerlo con el siguiente comando:

dnf install curl
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Crear red Docker

A continuación, tendrás que crear una nueva red Docker para ejecutar el contenedor traefik. Puedes crearla con el nombre «web» ejecutando el siguiente comando:

docker network create web

A continuación, verifica tu red con el siguiente comando:

docker network ls

Deberías obtener la siguiente salida:

NETWORK ID          NAME                DRIVER              SCOPE
76a9475e5ab0        bridge              bridge              local
2a3d79f64747        host                host                local
4c9123229eaa        none                null                local
0b6e010b43d0        web                 bridge              local

Instalar y configurar el proxy Traefik

Antes de empezar, necesitarás instalar httpd-tools para generar la contraseña encriptada. Puedes instalar esta herramienta con el siguiente comando:

dnf install httpd-tools -y

Una vez instalada, genera la contraseña encriptada con el siguiente comando:

htpasswd -nb admin my_password

Deberías obtener la siguiente salida:

admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0

A continuación, crea un nuevo archivo de configuración de Traefik con el siguiente comando:

nano traefik.toml

Añade las siguientes líneas, incluyendo, tu nombre de dominio válido, tu contraseña segura y el puerto:

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "traefik.linuxbuz.com"
watch = true
network = "web"

Guarda y cierra el archivo cuando hayas terminado. A continuación, crea un archivo vacío para almacenar la información de Let’s Encrypt.

touch acme.json

A continuación, da el permiso adecuado a este archivo con el siguiente comando:

chmod 600 acme.json

Crear un archivo Docker Compose

A continuación, tendrás que crear un nuevo archivo docker-compose.yml y definir tu dominio, puerto, red y volumen.

Puedes crearlo con el siguiente comando:

nano docker-compose.yml

Añade las siguientes líneas:

version: '3'

services:

  traefik:
    image: traefik:1.7.21-alpine
    command: --docker --docker.domain=linuxbuz.com
    ports:
      - 80:80
      - 443:443
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.linuxbuz.com"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
   web:
    external: true

Guarda y cierra el archivo cuando hayas terminado.

Construye el contenedor Docker de Traefik

En este punto, el archivo de configuración de Traefik y Docker Compose está listo. Ahora, construye el contenedor Traefik con el siguiente comando:

docker-compose up -d

Deberías obtener la siguiente salida:

Unable to find image 'traefik:1.7.21-alpine' locally
1.7.21-alpine: Pulling from library/traefik
c9b1b535fdd9: Pull complete 
c141e361698e: Pull complete 
2573c02b6f16: Pull complete 
1619fb3841d1: Pull complete 
Digest: sha256:0e4ac8ae724603898620dbd5eb9cda7ec05f405d25476eb0d32b716b490ba079
Status: Downloaded newer image for traefik:1.7.21-alpine
27e735357bb3b7d2d253ff78ddf6e78896851420eff399e8ade23affc7ff0bf7

A continuación, verifica el contenedor en ejecución con el siguiente comando:

docker ps

Deberías obtener la siguiente salida:

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
7604696507a5        traefik:1.7.21-alpine   "/entrypoint.sh --do…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik

Accede a la interfaz web de Traefik

Ahora, abre tu navegador web y accede a la interfaz web de Traefik utilizando la URL https://traefik.linuxbuz.com. Se te pedirá que proporciones un nombre de usuario y una contraseña:

Inicio de sesión de Traefik

Proporciona el nombre de usuario como admin y la contraseña que has generado anteriormente y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Traefik en la siguiente pantalla:

Panel de control de Traefik

Haz clic en la pestaña SALUD. Deberías ver el estado de salud del contenedor Traefik en la siguiente pantalla:

Estadísticas de tráfico de Traefik

Conclusión

Enhorabuena! has instalado con éxito el proxy Traefik en CentOS 8. Para más información, visita la documentación de Traefik.

También te podría gustar...