İçeriğe geç
Traefik

Traefik; Containous (sonradan Traefik Labs) tarafından geliştirilen, konteyner çağı için tasarlanmış L7 reverse proxy ve yük dengeleyicidir. Geleneksel reverse proxy’lerin aksine konfigürasyon dosyasıyla statik tanım yerine, çalışma ortamından (Docker, Kubernetes, Consul, ECS) dinamik servis keşfi yapar.

Bir servisin yeni bir replica’sı çalıştığında Traefik bunu konfigürasyon değişikliği veya reload olmadan otomatik tanır ve yük dağıtmaya başlar. Bu özellik özellikle blue-green / canary deploy’lerde, yatay ölçeklendirmede ve mikroservis ortamlarında geliştirici deneyimini ciddi iyileştirir.

Mono’nun yaklaşımı

Mono ekibi Traefik’i hem K8s ingress controller olarak hem de VM/Docker host ortamlarında reverse proxy olarak kullanır. Standart kurulum kararları:

  • TLS: Let’s Encrypt + DNS-01 challenge (Cloudflare); wildcard sertifika *.example.com.
  • Provider önceliği: K8s’te kubernetescrd (IngressRoute), VM’de file provider; ikisinin paralel çalıştığı hibrit kurulumlar mümkün.
  • Middleware kütüphanesi: Standart Mono middleware paketi — auth (forward-auth → Keycloak), rate-limit, security headers, gzip/brotli sıkıştırma, retry.
  • Observability: Prometheus metrikleri açık, access log JSON formatta Loki’ye, Tempo ile request tracing.
  • Sticky session: Stateful uygulamalar için cookie-based; stateless’ler için least-conn veya weighted round-robin.

Tipik kurulum

K8s’te IngressRoute CRD ile route tanımlanır. Bir uygulama deployment’ı oluşturulduğunda IngressRoute manifest’i de aynı paket içinde geldiği için dağıtım = route güncellemesi atomik şekilde olur.

Docker host’ta servis label’ları (traefik.http.routers.web.rule) kullanılır; docker compose dosyası tek başına route + TLS yönetimini içerir.

Yaygın sorunlar ve çözümler

  • 404 sorunu route doğru görünüyor: TLS ile HTTP arasındaki entrypoint farkı. Her iki entrypoint için ayrı router (HTTP redirect dahil).
  • ACME rate-limit: Test ortamında staging endpoint kullanın (caServer: https://acme-staging-v02.api.letsencrypt.org/directory); CI’da sertifika cache’i.
  • Yavaş ilk istek: Connection pooling ve keep-alive ayarları (forwardingTimeouts); upstream responseHeaderTimeout artırılır.
  • Memory artışı: Erken sürümlerde access log buffer’ı problem olabiliyordu; v3+ ile çözüldü, eski sürümleri yükseltin.
  • WebSocket kopması: read/write timeout‘ları yeterli değil. Idle WebSocket’ler için forwardingTimeouts.idleConnTimeout: 1h.

İlgili hizmetlerimiz

Sıkça sorulan sorular

Nginx-Ingress yerine neden Traefik?
Dinamik konfigürasyon — manifest değiştiğinde reload gerekmez. Otomatik Let’s Encrypt entegrasyonu native. Geliştirici dostu UI ve Prometheus metrikleri out-of-box. K8s öncesi de Docker/Compose’la rahat çalışır. Olgunluk arayan büyük kurumlarda Nginx-Ingress hâlâ yaygın.
TLS sertifikalarını nasıl yönetir?
ACME (Let’s Encrypt) entegrasyonu yerleşik: HTTP-01, TLS-ALPN-01 veya DNS-01 (wildcard için). Production’da Mono önerisi: DNS-01 + Cloudflare/Route53 entegrasyonu, certificatesResolvers üzerinden yönetilir.
Çoklu küme/cluster nasıl?
Tek Traefik birden fazla provider’ı (K8s + Docker + File) aynı anda dinleyebilir. Kümeler arası federasyon için Traefik Hub ticari çözümü var; Mono müşterileri için çoğu zaman bölge başına ayrı Traefik + GeoDNS daha sade.
Middleware ne zaman kullanılır?
Auth, rate limit, header rewrite, IP whitelist, retry, circuit breaker — hepsi middleware. Bir route’a sırayla zincirlenebilir. Kurumsal kullanımda forward-auth middleware ile merkezi authn/authz (Keycloak/Authelia) çok yaygın.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.