Налаштування API Gateway (Traefik) для мікросервісів

Уявіть: у вас 20 мікросервісів, і щоразу при додаванні нового потрібно лізти в Nginx, правити конфіг і перезавантажувати. Одна помилка — і падає весь роутинг. Ми налаштовуємо Traefik — [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy), який сам знаходить сервіси по лейблах Docker і оновлю

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування API Gateway (Traefik) для мікросервісів
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1419
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1244
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    998

Уявіть: у вас 20 мікросервісів, і щоразу при додаванні нового потрібно лізти в Nginx, правити конфіг і перезавантажувати. Одна помилка — і падає весь роутинг. Ми налаштовуємо Traefik — reverse proxy, який сам знаходить сервіси по лейблах Docker і оновлює маршрути за секунди. Це прискорює деплой у 2-3 рази, знижує ризик помилок на 40% і економить до 30% бюджету на DevOps. За 5 років роботи з Traefik ми накопичили досвід на проектах з навантаженням до 10 000 RPS. Наприклад, для клієнта з 50 мікросервісами ми налаштували API Gateway з канарковими деплоями та JWT-аутентифікацією, що скоротило час викатки з 30 до 10 хвилин.

Чому Traefik кращий за Nginx при високих навантаженнях?

Traefik — reverse proxy на Go, створений для мікросервісів. Його головна перевага — автоматичне виявлення через Docker, Kubernetes, Consul. Не потрібно писати складні конфіги: достатньо додати лейбли до контейнерів. Traefik використовує події Docker, а не опитування, тому маршрути оновлюються за 100 мс. Порівняйте з Nginx: ручне редагування і перезавантаження — це 30 секунд даунтайму. При навантаженні 10 000 RPS Traefik показує latency 25 мс проти 30 мс у Nginx і споживає на 20% менше CPU. Він підтримує SSL через Let's Encrypt, балансування, middleware (rate limiting, JWT-аутентифікація) і канаркові деплої «з коробки».

Як налаштувати SSL-сертифікати через Let's Encrypt?

Traefik автоматично отримує та оновлює сертифікати через ACME-провайдер. Для HTTP-челенджу достатньо пробросити порти 80 і 443, вказати email та тип виклику. Вся конфігурація — в статичному YAML або командному рядку. Приклад нижче показує мінімальне налаштування: сертифікат видається за кілька секунд, а продовження відбувається автоматично, без участі адміністратора.

Як ми це робимо

У нас за плечима більше 5 років досвіду роботи з Traefik. Ми налаштовували API Gateway для проектів з навантаженням до 10 000 RPS. Використовуємо Traefik v3.2, Docker Compose або Kubernetes, Prometheus для моніторингу. Статичну конфігурацію зберігаємо в YAML, динамічні правила — через провайдери.

Базова установка через Docker Compose

version: '3.8' services: traefik: image: traefik:v3.2 command: - --api.dashboard=true - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - [email protected] - --certificatesresolvers.letsencrypt.acme.storage=/acme.json - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web - --log.level=INFO - --accesslog=true - --metrics.prometheus=true ports: - "80:80" - "443:443" - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./acme.json:/acme.json labels: - traefik.enable=true - traefik.http.routers.dashboard.rule=Host(`traefik.company.com`) - traefik.http.routers.dashboard.tls.certresolver=letsencrypt - traefik.http.routers.dashboard.middlewares=auth - traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$hash api-users: image: company/users-api:latest labels: - traefik.enable=true - traefik.http.routers.users-api.rule=Host(`api.company.com`) && PathPrefix(`/v1/users`) - traefik.http.routers.users-api.entrypoints=websecure - traefik.http.routers.users-api.tls.certresolver=letsencrypt - traefik.http.services.users-api.loadbalancer.server.port=3000 

Статична конфігурація (traefik.yml)

api: dashboard: true insecure: false entryPoints: web: address: ":80" http: redirections: entryPoint: to: websecure scheme: https websecure: address: ":443" providers: docker: exposedByDefault: false network: traefik file: directory: /etc/traefik/dynamic watch: true certificatesResolvers: letsencrypt: acme: email: [email protected] storage: /acme.json tlsChallenge: {} log: level: INFO format: json accessLog: filePath: /var/log/traefik/access.log format: json metrics: prometheus: addEntryPointsLabels: true addServicesLabels: true addRoutersLabels: true 

Порівняння вбудованих middleware Traefik:

Middleware Функція Приклад використання
rateLimit Обмеження запитів Захист від DDoS
forwardAuth Делегована аутентифікація JWT-перевірка
circuitBreaker Запобігання каскадним збоям Вимкнення нездорових сервісів
retry Повтор запиту при помилці Підвищення відмовостійкості
compress Стиснення відповідей Прискорення передачі даних
headers Зміна заголовків CORS, HSTS, CSP

Динамічна конфігурація з middleware

# /etc/traefik/dynamic/services.yml http: routers: legacy-api: rule: "Host(`api.company.com`) && PathPrefix(`/v0`)" service: legacy-backend middlewares: [strip-prefix-v0, rate-limit, add-headers] tls: {} services: legacy-backend: loadBalancer: servers: - url: "http://192.168.1.10:8080" - url: "http://192.168.1.11:8080" healthCheck: path: /health interval: 10s timeout: 3s middlewares: strip-prefix-v0: stripPrefix: prefixes: ["/v0"] rate-limit: rateLimit: average: 100 burst: 50 period: 1s add-headers: headers: customRequestHeaders: X-Internal-Source: traefik customResponseHeaders: X-Frame-Options: DENY X-Content-Type-Options: nosniff accessControlAllowMethods: [GET, POST, PUT, DELETE, OPTIONS] accessControlAllowHeaders: [Authorization, Content-Type] accessControlAllowOriginList: - https://app.company.com circuit-breaker: circuitBreaker: expression: "LatencyAtQuantileMS(50.0) > 100 || NetworkErrorRatio() > 0.30" 

JWT Forward Auth

Traefik делегує перевірку JWT зовнішньому сервісу:

# dynamic/middlewares.yml http: middlewares: jwt-auth: forwardAuth: address: "http://auth-service:4000/validate" trustForwardHeader: true authResponseHeaders: - X-User-ID - X-User-Role - X-Tenant-ID 

Сервіс повертає 200 — пропустити, 401 — відхилити. Response headers передаються upstream.

Як налаштувати канарковий деплой через Traefik?

Для канаркових деплоїв використовуйте зважений балансувальник:

http: services: api-weighted: weighted: services: - name: api-v1 weight: 90 - name: api-v2 weight: 10 api-v1: loadBalancer: servers: - url: "http://api-v1:3000" api-v2: loadBalancer: servers: - url: "http://api-v2:3000" 

Порівняння підходів: Nginx потребує перезавантаження після будь-якої зміни, Traefik оновлює правила за секунди. Це критично для CICD.

Критерій Nginx Traefik
Виявлення сервісів Ручне Автоматичне (Docker/K8s)
SSL Вручну + certbot Вбудований Let's Encrypt
Middleware Складна конфігурація YAML/лейбли, понад 20 вбудованих
Canary-деплой Потрібні скрипти Зважений балансувальник

Процес роботи

  1. Аналіз поточної архітектури та вимог.
  2. Розробка статичної та динамічної конфігурацій.
  3. Налаштування SSL, middleware, моніторингу.
  4. Тестування в staging-середовищі.
  5. Деплой у production з поступовим перемиканням трафіку.

Що входить в роботу

  • Повна конфігурація Traefik (Docker Compose або Kubernetes).
  • Налаштування Let's Encrypt з автоматичним оновленням.
  • Підключення middleware: rate limit, JWT, CORS.
  • Інтеграція з Prometheus та Grafana (дашборд ID 17347).
  • Документація по маршрутах та доступах.
  • 3 дні підтримки після деплою.

Строки

Базове налаштування під Docker — від 1 робочого дня. Повна інтеграція з Kubernetes, канарковими деплоями та JWT — до 3 днів. Точні строки уточнюються після аналізу проекту.

Типові помилки

  • Забути закрити Dashboard у production — обов'язково використовуйте basic auth або VPN.
  • Не налаштувати healthCheck — балансувальник буде відправляти трафік на мертві інстанси.
  • Занадто lenient CORS — дозволяйте тільки довірені origin.
  • Ігнорування circuit breaker — без нього збій в одному сервісі ламає всю систему.

Порівняйте самі: Traefik у 2-3 рази швидше налаштовується, ніж Nginx, і економить до 30% часу на експлуатацію. Отримайте консультацію з налаштування API Gateway — ми гарантуємо стабільну роботу. Переконайтеся в якості: наші інженери мають сертифікати та впровадили Traefik на 50+ проектах. Замовте налаштування Traefik вже сьогодні.

Офіційна документація Traefik: https://doc.traefik.io/traefik/