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. Muchos se preguntan «traefik que es» y aquí explicaremos que 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 traefik 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), conocido también como «traefik ubuntu».

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 la instalación de «traefik ubuntu», 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 ‘#…‘.

La capacidad de «traefik retry» es una característica importante que permite a Traefik intentar nuevamente enviar una solicitud en caso de un error de red, asegurando una mayor resiliencia y disponibilidad de su arquitectura de microservicios.

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 *