Guía de Docker: Instalación de Traefik: un proxy inverso moderno para microservicios

Instalar Docker en Ubuntu

Traefik es un proxy inverso HTTP moderno y un equilibrador de carga para microservicios. Traefik facilita la implementación de todos los microservicios, integrados con componentes de infraestructura existentes como Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, etc.

Traefik funciona como un enrutador para todas sus aplicaciones de microservicios, enrutando todas las solicitudes de los clientes al destino correcto de los microservicios.

En este tutorial, le mostraré paso a paso cómo instalar y configurar el proxy inverso moderno Traefik como un contenedor Docker en Ubuntu 18.04 LTS (Bionic Beaver).

requisitos previos

  • Ubuntu 18.04
  • Privilegios de ra√≠z

¬ŅLo que haremos?

  1. Instalar Docker en Ubuntu 18.04
  2. Instalar Docker Compose
  3. Crear red Docker personalizada
  4. Instalar y configurar Traefik
  5. Pruebas

Paso 1: instale Docker en Ubuntu 18.04

Para esta gu√≠a, utilizaremos la √ļltima versi√≥n de Docker que se puede instalar desde el repositorio oficial de Docker.

Agregue la clave de la ventana acoplable y el repositorio con el siguiente comando.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

El comando ‘add-apt-repository’ actualizar√° autom√°ticamente todos los repositorios.

Instalar Docker en Ubuntu

Ahora instale la √ļltima versi√≥n de docker-ce.

sudo apt install docker-ce

Una vez completada la instalación, inicie el servicio docker y habilítelo para que se inicie cada vez que se inicie el sistema.

systemctl start docker
systemctl enable docker

La edición comunitaria de docker se instaló en el sistema Ubuntu 18.04, verifique la versión de docker instalada.

docker version

Comprobar la versión de la ventana acoplable

Adicional: ejecución de Docker para usuarios no root

El contenedor Docker se puede ejecutar con un usuario no root. Solo necesitamos agregar el usuario al grupo docker.

Agregue el usuario ‘mohammad’.

useradd -m -s /bin/bash mohammad

Ahora agregue el usuario ‘mohammad’ al grupo docker, luego reinicie el servicio docker.

usermod -a -G docker mohammad
systemctl restart docker

Pruebe ejecutando el docker hello-world.

docker run -it hello-world

Y el siguiente es el resultado.

Ejecutando Docker para usuarios no root

Paso 2: instalar Docker Compose

Docker-Compose es una herramienta de l√≠nea de comandos para definir y administrar aplicaciones docker de m√ļltiples contenedores.

Docker Compose es un script de python, se puede instalar f√°cilmente con el comando python pip o con el comando apt desde el repositorio de Ubuntu. Con componer, podemos ejecutar m√ļltiples contenedores Docker con un solo comando.

Instale docker compose desde el repositorio usando el comando apt a continuación.

sudo apt install docker-compose

Una vez completada la instalación, verifique la versión de Docker Compone.

docker-compose version

Docker compose 1.17 se instaló en Ubuntu 18.04.

Instalar Docker Compose

Paso 3: crear una red Docker personalizada

En este tutorial, el contenedor traefik se ejecutar√° en la red personalizada de Docker. Por lo tanto, debemos crear una nueva red personalizada de Docker en el servidor.

Compruebe la red acoplable disponible en el sistema.

docker network ls

Ahora cree una nueva red personalizada llamada ‘proxy’ para el contenedor traefik.

docker network create proxy

Y obtendr√° una cadena aleatoria del nombre del contenedor de red. Compruebe de nuevo la red disponible.

docker network ls

A continuación se muestra el resultado.

Crear red Docker personalizada

Se ha creado la red acoplable personalizada denominada ‘proxy’ para traefik.

Paso 4: instale y configure el proxy inverso de Traefik

En este paso, crearemos el contenedor traefik con HTTPS letsencrypt habilitado (usando un nombre de dominio ‘traefik.hakase-labs.io) y redirigiremos autom√°ticamente HTTP a HTTPS en traefik.

Preinstalación Traefik

Antes de crear toda la configuraci√≥n de traefik, debemos instalar ‘apache2-utils’ para generar la contrase√Īa htpasswd cifrada y crear el nuevo directorio traefik.

Instale ‘apache2-utils’ usando el comando apt a continuaci√≥n.

sudo apt install apache2-utils -y

Ahora ejecute el comando htpasswd a continuaci√≥n para generar una nueva contrase√Īa para la autenticaci√≥n del tablero traefik.

htpasswd -nb mohammad password

Mantenga el resultado en su nota. Publicidad

mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.

Instalar y configurar el proxy inverso de Traefik

A continuaci√≥n, inicie sesi√≥n con el usuario ‘mohammad’.

su - mohammad

Cree un nuevo directorio llamado ‘traefik’ para toda la configuraci√≥n de traefik.

mkdir -p traefik/
cd traefik/

Crear configuración de Traefik

Vaya al directorio ‘traefik’ y cree un nuevo archivo de configuraci√≥n ‘traefik.toml’ usando el editor vim.

cd traefik/
vim traefik.toml

Pegue la configuración a continuación.

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#mohammad and password
[web]
address = ":8080"
[web.auth.basic]
users = ["mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi."]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "traefik.hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

Guardar y Salir.

Nota:

Toda la informaci√≥n sobre la configuraci√≥n est√° en la secci√≥n de comentarios ‘#…‘.

Crear secuencia de comandos de composición de Traefik Docker

Ahora cree el script yml docker-compose.

vim docker-compose.yml

Pegue la configuración a continuación.

version: '3'

services:

  traefik:
    image: traefik:latest
    command: --docker --docker.domain=hakase-labs.io
    ports:
      - 80:80
      - 443:443
    networks:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.hakase-labs.io"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
  proxy:
    external: true

Guardar y Salir.

Nota:

  1. Estamos creando un nuevo contenedor llamado ‘traefik’ basado en la imagen acoplable ‘traefik:latest’.
  2. El contenedor ‘traefik’ se ejecutar√° en la red docker personalizada denominada ‘proxy’ y expondr√° los puertos externos HTTP 80 y HTTPS 443.
  3. El contenedor montar√° la configuraci√≥n de traefik ‘traefik.toml’ y ‘acme.json’, incluido el archivo docker sock.
  4. Configuración de etiquetas para traefik, el nombre de dominio de frontend y el puerto traefik.

Configuración Letsencrypt ACME

La configuraci√≥n acme en ‘traefik.toml’ se usa para generar autom√°ticamente el SSL letsencrypt. Y es necesario para el archivo de almacenamiento ‘acme.json’.

Cree un nuevo archivo JSON ‘acme.json’ y cambie el permiso a ‘600’.

touch acme.json
chmod 600 acme.json

Todos los registros sobre la información de SSL letsencrypt se guardarán en el archivo.

Construir contenedor Traefik

Ahora estamos listos para construir nuestro propio contenedor traefik usando los archivos de configuración anteriores.

cd traefik/
ls -lah

Todos los archivos de configuraci√≥n ‘traefik.toml’, ‘docker-compose.yml’ y ‘acme.json’.

Construir contenedor Traefik

Cree el contenedor usando el comando docker compose a continuación.

docker-compose up -d

Construya el contenedor usando docker compose

Cuando esté completo, compruebe el contenedor en ejecución.

docker-compose ps

Y pondr√° en funcionamiento el contenedor Traefik, expondr√° los puertos externos HTTP y HTTPS.

Contenedor Traefik en funcionamiento

Paso 5 – Prueba

Abra su navegador web y escriba el nombre de dominio traefik en la barra de direcciones. El mio es:

http://traefik.hakase-labs.io/

Ser√° redirigido a la conexi√≥n HTTPS y se le pedir√° la autenticaci√≥n de nombre de usuario y contrase√Īa.

Autenticaci√≥n basada en contrase√Īa

Inicie sesi√≥n con el usuario ‘mohammad’ y la contrase√Īa es ‘contrase√Īa’.

Y obtendrá el tablero de Traefik como se muestra a continuación.

Tablero Traefik

P√°gina de estado de salud de Traefik.

P√°gina de estado de Traefik Health

El proxy inverso HTTP moderno de Traefik se instaló como un contenedor Docker en Ubuntu 18.04.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *