Traefik es un proxy inverso HTTP de código abierto y un equilibrador de carga que lo ayuda a implementar microservicios fácilmente. Puede integrarlo fácilmente con los componentes de su infraestructura, incluidos Docker, Kubernetes, Docker Swarm, Rancher, AWS y muchos más. Si desea ejecutar varias aplicaciones en el mismo host de Docker, puede usar Traefik como proxy inverso para exponer los puertos 80 y 443 al resto del mundo.
En este tutorial, le mostraremos cómo instalar y configurar Traefik como proxy inverso en CentOS 8.
Requisitos
- Un servidor que ejecuta CentOS 8.
- Un nombre de dominio válido apuntado con la IP de su servidor.
- Se configura una contraseña de root en el servidor.
Instalar Docker y Docker Compose
Primero, deberá instalar la última versión de Docker y Docker Compose en su sistema. De forma predeterminada, Docker no está disponible en el repositorio predeterminado de CentOS 8. Por lo tanto, deberá agregar el repositorio Docker CE en su sistema. Puede agregarlo con el siguiente comando:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Una vez creado el repositorio, instale Docker CE con el siguiente comando:
dnf install docker-ce --nobest -y
Una vez que Docker esté instalado, inicie el servicio Docker y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start docker
systemctl enable docker
Para instalar Docker Compose, deberá instalar Curl y descargar el binario de Docker Compose en su 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, deberá crear una nueva red Docker para ejecutar el contenedor traefik. Puede crearlo con el nombre "web" ejecutando el siguiente comando:
docker network create web
A continuación, verifique su red con el siguiente comando:
docker network ls
Deberías obtener el siguiente resultado:
NETWORK ID NAME DRIVER SCOPE 76a9475e5ab0 bridge bridge local 2a3d79f64747 host host local 4c9123229eaa none null local 0b6e010b43d0 web bridge local
Instalar y configurar Traefik Proxy
Antes de comenzar, deberá instalar httpd-tools para generar la contraseña cifrada. Puede instalar esta herramienta con el siguiente comando:
dnf install httpd-tools -y
Una vez instalado, genera la contraseña cifrada con el siguiente comando:
htpasswd -nb admin my_password
Deberías obtener el siguiente resultado:
admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0
A continuación, cree un nuevo archivo de configuración de Traefik con el siguiente comando:
nano traefik.toml
Agregue las siguientes líneas, incluido su nombre de dominio válido, su 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"
Guarde y cierre el archivo cuando haya terminado. Luego, cree un archivo vacío para almacenar su información de Let's Encrypt.
touch acme.json
A continuación, otorgue el permiso adecuado a este archivo con el siguiente comando:
chmod 600 acme.json
Crear un archivo de composición de Docker
A continuación, deberá crear un nuevo archivo docker-compose.yml y definir su dominio, puerto, red y volumen.
Puedes crearlo con el siguiente comando:
nano docker-compose.yml
Agregue 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
Guarde y cierre el archivo cuando haya terminado.
Crear contenedor Traefik Docker
En este punto, el archivo de configuración de Traefik y Docker Compose está listo. Ahora, construya el contenedor Traefik con el siguiente comando:
docker-compose up -d
Deberías obtener el siguiente resultado:
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, verifique el contenedor en ejecución con el siguiente comando:
docker ps
Deberías obtener el siguiente resultado:
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
Acceder a la interfaz web de Traefik
Ahora, abra su navegador web y acceda a la interfaz web de Traefik usando la URL https://traefik.linuxbuz.com. Se le pedirá que proporcione el nombre de usuario y la contraseña:
Proporcione el nombre de usuario como administrador y la contraseña que generó anteriormente y haga clic en Firmar en botón. Debería ver el tablero de Traefik en la siguiente pantalla:
Haga clic en SALUD pestaña. Debería ver el estado de salud del contenedor Traefik en la siguiente pantalla:
Conclusión
¡Felicidades! Ha instalado correctamente el proxy Traefik en CentOS 8. Para obtener más información, visite la documentación de Traefik.