Traefik

Traefik - это современный HTTP-обратный прокси и балансировщик нагрузки, который используется для управления веб-приложениями. Он предоставляет функциональность маршрутизации трафика и балансировки нагрузки между различными экземплярами приложений.

Traefik является инструментом, который помогает разработчикам и системным администраторам упростить процесс управления и масштабирования веб-приложений. Он может автоматически обнаруживать новые контейнеры или сервисы, которые вы запускаете, и настраивать маршрутизацию трафика к ним.

Traefik также предоставляет удобную панель управления, где вы можете просматривать статистику и настраивать различные параметры работы прокси.

Основное преимущество Traefik заключается в его интеграции с контейнерными технологиями, такими как Docker и Kubernetes. Он может легко интегрироваться с вашими контейнерами и автоматически обновлять маршруты при добавлении или удалении контейнеров.

Traefik также поддерживает различные функции безопасности, такие как SSL-шифрование и аутентификация клиентов.

Первым шагом нужно установить Docker и Docker compose в систему.

Создать Docker-сеть с именем "traefik", которая будет использоваться для связи с другими контейнерами.

docker network create traefik

Создать пароль для входа в dashboard traefik:

htpasswd -mb admin password

Для вставки пароля нужно заменить знаки $ на $$.

Создать папку traefik и файл docker-compose.yml в этой папке. В docker-compose.yml вставить следующий код:

version: '3.8'

services:
traefik:
image: traefik:v2.11
command:
- "--providers.docker=true"
- "--providers.docker.exposedByDefault=false"
- "--api.dashboard=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.email=my-email@mail.ru"
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/etc/traefik/acme"
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.entrypoints=web"
- "traefik.http.routers.dashboard.entrypoints=websecure"
- "traefik.http.routers.dashboard.rule=Host(`traefik.villagecoder.ru`)"
- "traefik.http.routers.dashboard.tls=true"
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=dashboard-auth"
- "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$Dfd1$$DfIeSxa4$$T2gaSdfAsDf/HfuiJJd0."

networks:
default:
name: traefik
external: true

Сеть traefik нужно включать во все docker-compose.yml файлы, чтобы traefik видел их.

Также нужно добавить labels на всех docker-compose.yml файлах.

version: "3.8"

services:

php-coder:
build:
context: docker/php
container_name: "php-coder"
image: "php-coder"
restart: always
volumes:
- .:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.http.routers.php-coder.rule=Host(`villagecoder.ru`)"
- "traefik.http.services.php-coder.loadbalancer.server.port=80"
- "traefik.http.routers.php-coder.entrypoints=websecure"
- "traefik.http.routers.php-coder.tls.certresolver=letsencrypt"
- "traefik.http.routers.php-coder.tls=true"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"

networks:
default:
name: traefik
external: true

Создать папку letsencrypt в папке traefik

В целом, Traefik является мощным инструментом для управления трафиком в вашей сети и облегчения работы с веб-приложениями.

traefik docker контейнеризация виртуализация разработка развертывание веб-сервер
Поделиться