логотип PurpleSchool
логотип PurpleSchool

Настройка Traefik в Docker

Автор

Алексей Иванов

Введение

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

Установка и настройка Traefik в Docker

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

Установка Traefik через Docker Compose

Первым шагом будет установка Traefik с помощью Docker Compose. Docker Compose — это инструмент, который упрощает создание и управление многоконтейнерными Docker приложениями. Мы воспользуемся им для развертывания Traefik.

Создайте файл docker-compose.yml в вашем проекте и добавьте в него следующий код:

version: '3.3'

services:
  traefik:
    image: traefik:v2.4 # Используем образ Traefik версии 2.4
    command:
      - "--api.insecure=true" # Включаем API интерфейс для мониторинга
      - "--providers.docker=true" # Включаем поддержку Docker
      - "--entrypoints.web.address=:80" # Настраиваем веб-входную точку на порт 80
    ports:
      - "80:80" # Прокидываем порт 80 на хост
      - "8080:8080" # Прокидываем порт 8080 для доступа к API
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock" # Даем доступ к Docker демону

Теперь, с помощью Docker Compose, запустим Traefik. Выполните команду в терминале:

docker-compose up -d # Запустим Traefik в режиме демона

Команда docker-compose up -d разворачивает сервисы в фоновом режиме.

Настройка маршрутизации

Следующим шагом будет настройка маршрутизации для ваших сервисов. Traefik умеет автоматически обнаруживать Docker-контейнеры и настраивать маршрутизацию. Чтобы это происходило, нужно использовать Docker метки (labels). Давайте посмотрим на пример.

Добавьте следующий сервис в ваш docker-compose.yml:

services:
  whoami:
    image: containous/whoami # Простой HTTP сервер, служащий для отладки
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)" # Правило маршрутизации по хосту
    networks:
      - web

Теперь, перезапустите все сервисы:

docker-compose up -d

После перезапуска вы сможете зайти на http://whoami.localhost и увидеть ответ от сервера, который подтверждает, что маршрут настроен корректно.

Управление безопасностью с помощью SSL

Traefik поддерживает автоматическое получение SSL-сертификатов от Let's Encrypt. Это позволяет обеспечить безопасность вашего трафика.

Добавьте следующие строки в секцию command вашего Traefik в файле docker-compose.yml:

- "--certificatesresolvers.le.acme.httpchallenge=true" # Включаем HTTP-01 валидатор от Let's Encrypt
- "--certificatesresolvers.le.acme.email=youremail@example.com" # Используем ваш электронный адрес
- "--certificatesresolvers.le.acme.storage=/acme.json" # Указываем файл для хранения сертификатов

Создайте пустой файл acme.json:

touch acme.json
chmod 600 acme.json # Устанавливаем права доступа

Мониторинг

Traefik предоставляет веб-интерфейс для мониторинга, доступный по умолчанию на http://localhost:8080/dashboard/. Вы можете переключаться между различными вкладками, чтобы следить за состоянием ваших маршрутов и выявлять проблемы.

Заключение

Вы успешно настроили Traefik в Docker. Traefik предложил вам гибкость и удобство использования, которые могут быть особенно полезны при работе с динамически изменяемыми окружениями. Благодаря его возможностям автоматической маршрутизации и интеграции с SSL вы сможете более эффективно управлять вашими приложениями и обеспечивать высокий уровень безопасности. Теперь у вас в арсенале есть мощный инструмент, который может облегчить управление трафиком в ваших проектах.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile