Traefik
Traefik - это современный HTTP-обратный прокси и балансировщик нагрузки, который используется для управления веб-приложениями. Он предоставляет функциональность маршрутизации трафика и балансировки нагрузки между различными экземплярами приложений.
Traefik является инструментом, который помогает разработчикам и системным администраторам упростить процесс управления и масштабирования веб-приложений. Он может автоматически обнаруживать новые контейнеры или сервисы, которые вы запускаете, и настраивать маршрутизацию трафика к ним.
Traefik также предоставляет удобную панель управления, где вы можете просматривать статистику и настраивать различные параметры работы прокси.
Основное преимущество Traefik заключается в его интеграции с контейнерными технологиями, такими как Docker и Kubernetes. Он может легко интегрироваться с вашими контейнерами и автоматически обновлять маршруты при добавлении или удалении контейнеров.
Traefik также поддерживает различные функции безопасности, такие как SSL-шифрование и аутентификация клиентов.
Первым шагом нужно установить Docker и Docker compose в систему.
Создать Docker-сеть с именем "traefik", которая будет использоваться для связи с другими контейнерами.
Создать пароль для входа в dashboard traefik:
Для вставки пароля нужно заменить знаки $ на $$.
Создать папку 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 является мощным инструментом для управления трафиком в вашей сети и облегчения работы с веб-приложениями.