GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

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

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

  • Ubuntu 18.04
  • Privilegios de raíz

¿Qué haremos?

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

Paso 1:instalar 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.

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

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.

Paso 2:instalar Docker Compose

Docker-Compose es una herramienta de línea de comandos para definir y administrar aplicaciones docker de varios 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 composición de la ventana acoplable.

docker-compose version

Docker compose 1.17 se instaló en Ubuntu 18.04.

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. Comprueba de nuevo la red disponible.

docker network ls

A continuación se muestra el resultado.

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

Paso 4:instalar y configurar Traefik Reverse Proxy

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 de 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 panel traefik.

htpasswd -nb mohammad password

Guarda el resultado en tu nota.

mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.

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 vim editor.

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 Traefik Docker Compose

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 traefik 'traefik.toml' y 'acme.json', incluido el archivo docker sock.
  4. Configuración de etiquetas para traefik, el nombre de dominio de la interfaz 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.

Crear contenedor Traefik

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

cd traefik/
ls -lah

Todos los archivos de configuración 'traefik.toml', 'docker-compose.yml' y 'acme.json'.

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

docker-compose up -d

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

docker-compose ps

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

Paso 5 - Prueba

Abra su navegador web y escriba el nombre de dominio traefik en la barra de direcciones. El mío 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.

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.

Página de estado de salud de Traefik.

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


Docker
  1. Una guía para ejecutar un proxy inverso para HTTP(S), SSH y MySQL/MariaDB usando NGINX

  2. Qué es un contenedor Docker:una guía introductoria para principiantes

  3. Proxy inverso con Nginx:una guía de configuración paso a paso

  4. Una guía para principiantes de LXD:configuración de un proxy inverso para alojar varios sitios web

  5. Instalación de Docker (Ubuntu)

¡Cree un proxy inverso NGINX en Docker y aprenda 1 nueva habilidad!

Guía completa para eliminar imágenes de Docker

Comandos de Docker para gestionar el ciclo de vida de los contenedores (guía definitiva)

Instalación de Docker en macOS

40 comandos de red Linux útiles para administradores de sistemas modernos

NGINX como proxy inverso para aplicación de nodo o angular