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. 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?
- Instalar Docker en Ubuntu 18.04
- Instalar Docker Compose
- Crear red Docker personalizada
- Instalar y configurar Traefik
- 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.
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 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.
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.
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.
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:
- Estamos creando un nuevo contenedor llamado ‘traefik’ basado en la imagen acoplable ‘traefik:latest’.
- El contenedor ‘traefik’ se ejecutará en la red docker personalizada denominada ‘proxy’ y expondrá los puertos externos HTTP 80 y HTTPS 443.
- El contenedor montará la configuración de traefik ‘traefik.toml’ y ‘acme.json’, incluido el archivo docker sock.
- 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’.
Cree el contenedor usando el comando docker compose a continuación.
docker-compose up -d
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.
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.
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.