Налаштування Kubernetes Ingress Controller (Traefik)
Traefik цікавий тим, що вміє автоматично виявляти сервіси і конфігурувати себе без перезапуску. Там, де Nginx вимагає анотацій і іноді reload, Traefik перебудовує routing на льоту. Це робить його особливо зручним у динамічних середовищах — багато сервісів, часті деплої, автоматичний TLS через ACME. Наш досвід: понад 10 років роботи з Kubernetes та 50+ проєктів з Traefik. Ми допоможемо вам розгорнути Traefik Ingress Controller під ключ: від базового встановлення до production-готової конфігурації з моніторингом та документацією.
Головна точка болю: IngressRoute vs стандартний Ingress
Traefik підтримує два режими конфігурації: стандартний Kubernetes Ingress і власні CRD — IngressRoute, Middleware, TLSOption. Якщо почати з Ingress-об'єктів, багато можливостей Traefik недоступні або реалізуються через анотації, які швидко стають нечитабельними.
Типові граблі при міграції з Nginx: розробник додає анотацію traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd, middleware існує в іншому неймспейсі, і маршрут мовчки не застосовується. У логах Traefik при --log.level=DEBUG буде middleware "default-redirect-https@kubernetescrd" does not exist — але тільки на рівні debug, не error.
Другий частий сценарій: Let's Encrypt сертифікати не випускаються. Traefik намагається пройти ACME HTTP-01 challenge, але challenge-роут недоступний ззовні — або firewall, або DNS ще не оновився, або entryPoints налаштовані неправильно і Traefik слухає не на 80 порту. kubectl logs -n traefik deployment/traefik | grep acme покаже спроби та помилки.
Як ми вирішуємо ці проблеми
Наш підхід — комбінація GitOps, Helm та чіткого розподілу namespace. Конфігурація зберігається в Git, автоматично застосовується через ArgoCD. Для виключення помилок namespace ми впроваджуємо правило: всі Middleware створюються в тому ж namespace, що й IngressRoute, або посилаються з повним ім'ям namespace-name@kubernetescrd. Let's Encrypt challenge перевіряється на будь-якому порту 80 — ми гарантуємо, що entryPoint web відкритий у security group і не заблокований.
Чому варто обрати Traefik, а не NGINX?
| Критерій | Traefik | NGINX Ingress |
|---|---|---|
| Виявлення сервісів | Автоматичне (watch) | Через annotation + reload |
| Підтримка ACME | Вбудована, автоматичне отримання сертифікатів | Потрібен cert-manager |
| Налаштування правил | IngressRoute CRD або анотації | Анотації на Ingress |
| Метрики | Prometheus з коробки | Потрібен exporter |
| Hot-reload конфігурації | Миттєвий, без restarts | reload nginx (втрати з'єднань) |
| Learning curve | Середня (знайомство з CRD) | Низька (стандартний Ingress) |
Traefik виграє в динамічних середовищах: він швидше реагує на зміни, не потребує перезавантажень і простіше інтегрується з сучасними практиками GitOps.
Встановлення та конфігурація
Helm — єдиний розумний спосіб. Покрокове налаштування:
- Додайте репозиторій Traefik.
- Створіть values-файл з ключовими параметрами.
- Виконайте
helm upgrade --install.
Приклад traefik-values.yaml
---
deployment:
replicas: 2
additionalArguments:
- "[email protected]"
- "--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
persistence:
enabled: true
size: 128Mi
ingressClass:
enabled: true
isDefaultClass: true
ports:
web:
exposedPort: 80
websecure:
exposedPort: 443
metrics:
exposedPort: 8080
Ключові секції traefik-values.yaml:
---
additionalArguments:
- "[email protected]"
- "--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
persistence:
enabled: true
size: 128Mi
ingressClass:
enabled: true
isDefaultClass: true
acme.json має лежати на persistent volume — інакше при кожному рестарті Traefik буде перевипускати сертифікати і швидко впреться в rate limit Let's Encrypt (50 сертифікатів на тиждень на домен).
Як налаштувати автоматичний TLS в Traefik?
Для автоматичного TLS достатньо вказати certificatesresolvers і посилатися на нього в IngressRoute. Наш досвід показує, що 80% проблем пов'язані з неправильним entryPoint або відсутністю persistent volume. Ми завжди перевіряємо, що порт 80 відкритий ззовні, і використовуємо storage для acme.json.
Dashboard та observability
Traefik має вбудований dashboard на порту 8080. У production його потрібно або закрити від зовнішнього доступу (аутентифікація через BasicAuth Middleware), або взагалі вимкнути — там видна вся конфігурація роутерів, що небажано публічно.
Метрики Prometheus доступні з коробки через аргумент --metrics.prometheus. Grafana dashboard — ID 17346, покриває request rate, latency, активні з'єднання по роутерах.
Типові помилки та їх вирішення
| Помилка | Причина | Рішення |
|---|---|---|
| Middleware не застосовується | Посилання з іншого namespace без @kubernetescrd |
Використовуйте повне ім'я namespace-name@kubernetescrd |
| Сертифікати не випускаються | HTTP-01 challenge не проходить (firewall, DNS) | Перевірте entryPoint web на порту 80, забезпечте зовнішній доступ |
| Перевипуск сертифікатів при кожному рестарті | Немає persistent volume для acme.json | Підключіть PVC розміром 128Mi |
| Dashboard доступний всім | Немає аутентифікації | Закрийте порт 8080 або налаштуйте BasicAuth Middleware |
Що входить у роботу
- Розгортання Traefik через Helm з усіма налаштуваннями (persistent volume, ingressClass, metrics).
- Налаштування автоматичного TLS з Let's Encrypt, включаючи провайдери DNS-01 для wildcard-сертифікатів (опціонально).
- Створення IngressRoute для 3–5 сервісів з типовими middleware (redirect, rate limit, auth basic).
- Інтеграція з Prometheus/Grafana, надання дашборду та алертів.
- Документація з конфігурації, runbook для чергових.
- Передача знань команді: сесія Q&A.
Строки орієнтовно
Базове встановлення з автоматичним TLS та IngressRoute для 3–5 сервісів: 1 день. Повна конфігурація з middleware-стеком (rate limiting, auth, headers), моніторингом та документацією: 2–3 дні. Час залежить від складності правил маршрутизації та необхідності інтеграції з існуючим CI/CD.
Зв'яжіться з нами, щоб обговорити ваш проект та отримати консультацію з оптимальної конфігурації Traefik. Замовте попередню оцінку поточної інфраструктури — ми запропонуємо план міграції.







