İçeriğe geç
Guides 6 dk okuma 901 görüntülenme

Traefik

Traefik'in Docker ve Kubernetes için ters proxy ve yük dengelemeyi nasıl basitleştirdiğini, otomatik servis keşfi ve SSL yönetimini nasıl sunduğunu öğrenin.

Traefik

Traefik, Docker ve Kubernetes gibi orkestratörlerle doğrudan entegre olarak servislerinize giden rotaları otomatik olarak keşfeden ve yapılandıran, dinamik bir ters proxy ve yük dengeleyici olarak çalışan açık kaynaklı bir Edge Router'dır.

Temel Kavramlar

Traefik, dinamik bir yapılandırma modeliyle çalışır; böylece arka uç servisleri değiştiğinde dosyaları elle güncelleme ve servisleri yeniden başlatma ihtiyacı ortadan kalkar. Bu gerçek zamanlı uyum yeteneği, birbirine bağlı birkaç bileşen sayesinde sağlanır.

Provider'lar

Provider'lar, Traefik'in altyapınızla etkileşime girmesini sağlayan bağlayıcılardır. Alttaki orkestratörün API'sini yeni container'lar, servisler veya deployment'lar gibi değişiklikler için izlerler.
Yaygın provider'lar:
* Docker: Docker daemon olaylarını ve container label'larını izler.
* Kubernetes: Kubernetes API'sini Ingress, IngressRoute, Service ve Endpoint kaynakları için izler.
* File: Yapılandırmayı statik YAML veya TOML dosyalarından okur.
* Consul, etcd, ZooKeeper: Dinamik yapılandırma için key-value store'larla entegre olur.

Yönlendirme Yapılandırması

Traefik, gelen istekleri tanımlı bir yönlendirme akışıyla işler:

  • EntryPoint'ler: Traefik'in dinlediği portları tanımlayan ağ dinleyicileridir (örneğin 80 portunda web, 443 portunda websecure).
  • Router'lar: Router'lar gelen istekleri tanımlı kurallara göre analiz eder (örneğin Host(), PathPrefix(), Headers()). Bir istek router'ın kuralıyla eşleşirse iletilir. Router'lar ayrıca hangi EntryPoint'leri dinleyeceklerini belirtir ve Middleware uygulayabilirler.
  • Middleware'ler: İstekleri servise ulaşmadan önce ya da yanıtları istemciye gönderilmeden önce değiştirebilen bileşenlerdir. Zincirlenebilirler.
  • Servisler: Servisler, gerçek arka uç uygulama örneklerine nasıl ulaşılacağını tanımlar. Bir servis genellikle uygulamanızın bir veya daha fazla IP adresine ve portuna işaret eder. Traefik, istekleri bir servisin birden fazla örneği arasında dengeleyebilir.

Akış şöyledir: İstek -> EntryPoint -> Router -> Middleware(ler) -> Servis -> Arka uç uygulaması.

Öne Çıkan Özellikler

Otomatik Servis Keşfi

Traefik, Docker ve Kubernetes gibi orkestratörlerle doğrudan entegre olur. Metadata'yı (örneğin Docker label'ları, Kubernetes annotation'ları veya Custom Resource'lar) okuyarak servisleri otomatik keşfeder ve yönlendirme yapılandırmasını herhangi bir manuel müdahale ya da yeniden başlatma gerektirmeden dinamik olarak günceller. Bu, ayrı proxy yapılandırma dosyaları tutma ihtiyacını ortadan kaldırır.

SSL/TLS Sonlandırma

Traefik, SSL/TLS sonlandırma için yerleşik destek sunar. ACME (Automatic Certificate Management Environment) protokolü üzerinden Let's Encrypt kullanarak sertifikaları otomatik olarak sağlayabilir ve yenileyebilir; HTTP-01, TLS-ALPN-01 ve DNS-01 doğrulamalarını destekler. Özel sertifikalar da yapılandırılabilir.

Yük Dengeleme

Traefik bir yük dengeleyici olarak çalışır ve gelen trafiği bir servisin birden fazla örneği arasında dağıtır.
Kullanılabilir yük dengeleme stratejileri:
* Round Robin: İstekleri sırayla her sunucuya dağıtır.
* Weighted Round Robin: Trafik dağılımını kontrol etmek için sunuculara ağırlık atanmasına izin verir.
* Sticky Sessions: Belirli bir istemciden gelen isteklerin her zaman aynı sunucuya yönlendirilmesini sağlar.

Middleware'ler

Middleware'ler, istekleri veya yanıtları değiştirmek için esnek bir yol sunar. Belirli router'lara ya da global olarak uygulanabilirler.
Yaygın middleware örnekleri:
* Kimlik doğrulama: Basic authentication (BasicAuth), Digest authentication.
* Rate Limiting: Bir istemcinin belirli bir süre içinde yapabileceği istek sayısını kontrol eder.
* Header düzenleme: İstek/yanıt header'larını ekleme, kaldırma veya değiştirme.
* Yönlendirmeler: HTTP'den HTTPS'e yönlendirme, kalıcı yönlendirmeler.
* IP beyaz/kara listesi: İstemci IP adreslerine göre erişimi kısıtlama.

Panel

Traefik, yapılandırılmış router'lara, servislere ve middleware'lere gerçek zamanlı genel bakış sunan web tabanlı bir panel içerir. Yöneticilerin aktif yapılandırmayı incelemesine ve trafiği izlemesine olanak tanır.

Docker ile Traefik

Traefik'i Docker ile entegre etmek, Traefik'i bir container olarak çalıştırmayı ve Docker daemon soketine erişmesine izin vermeyi gerektirir. Servis yapılandırması genellikle uygulama container'ları üzerindeki Docker label'ları ile yönetilir.

Örnek docker-compose.yml Kurulumu

Aşağıdaki örnek, Traefik ve örnek bir whoami uygulamasının kurulumu için bir docker-compose.yml dosyasını gösterir.

version: '3.8'

services:
  traefik:
    image: traefik:v2.10
    command:
      - --api.dashboard=true
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false # Yalnızca traefik.enable=true olan servisleri yayınla
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.myresolver.acme.tlschallenge=true # Let's Encrypt için
      - --certificatesresolvers.myresolver.acme.email=your-email@example.com
      - --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json # Sertifikalar için kalıcı depolama
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080" # Traefik panelini yayınla
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro" # Provider erişimi için Docker soketini bağla
      - "./letsencrypt:/letsencrypt" # ACME sertifikaları için kalıcı depolama
    labels:
      # Panel servisinin kendisi için Traefik'i etkinleştir
      - "traefik.enable=true"
      # Traefik paneli için router
      - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.yourdomain.com`)"
      - "traefik.http.routers.traefik-dashboard.entrypoints=websecure"
      - "traefik.http.routers.traefik-dashboard.service=api@internal" # Dahili Traefik API servisi
      - "traefik.http.routers.traefik-dashboard.tls.certresolver=myresolver"
      # Panel için basic authentication middleware'i (gerçek htpasswd hash'i ile değiştirin)
      - "traefik.http.routers.traefik-dashboard.middlewares=dashboard-auth@docker"
      - "traefik.http.middlewares.dashboard-auth.basicauth.users=user:$$apr1$$YOUR_HTPASSWD_HASH"
    networks:
      - web

  whoami:
    image: traefik/whoami
    labels:
      - "traefik.enable=true" # Bu servis için Traefik'i etkinleştir
      - "traefik.http.routers.whoami.rule=Host(`whoami.yourdomain.com`)" # Yönlendirme kuralını tanımla
      - "traefik.http.routers.whoami.entrypoints=websecure" # websecure (HTTPS) üzerinde dinle
      - "traefik.http.routers.whoami.tls.certresolver=myresolver" # Let's Encrypt resolver'ını kullan
    networks:
      - web

networks:
  web:
    external: true # Web'e açık tüm servisler için harici bir ağ kullan

Not: docker-compose up -d komutunu çalıştırmadan önce harici ağı docker network create web ile oluşturun.
dashboard-auth için htpasswd hash'ini echo $(htpasswd -nb user password) ile üretin.

Kubernetes ile Traefik

Traefik, Kubernetes ile API'si üzerinden entegre olur; standart Ingress kaynaklarını ve gelişmiş yapılandırmalar için kendi Custom Resource Definition'larını (CRD) kullanır. Önerilen kurulum yöntemi Helm'dir.

Helm ile Kurulum

helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik \
  --namespace traefik \
  --create-namespace \
  -f values.yaml

values.yaml dosyası genellikle Traefik'in EntryPoint'lerini, Provider'larını ve ACME resolver'larını (örneğin Let's Encrypt için myresolver) yapılandırır.

Custom Resource Definition (CRD) ile Yapılandırma

Traefik, Kubernetes yeteneklerini kendi CRD'leriyle genişletir ve standart Ingress'ten daha fazla kontrol sunar:
* IngressRoute: Yönlendirme kurallarını, entry point'leri ve ilişkili servisleri, TLS yapılandırması ve middleware'ler dahil olmak üzere tanımlar. Standart Kubernetes Ingress'ine göre daha güçlü bir alternatiftir.
* Middleware: IngressRoute'lara uygulanabilen, yeniden kullanılabilir istek/yanıt düzenleyicilerini tanımlar.
* TraefikService: Yük dengeleme stratejileri ve harici servisler dahil olmak üzere arka uç servislerinin daha ayrıntılı tanımlanmasına olanak tanır.

Örnek Kubernetes Yapılandırması

Bu örnek, bir whoami uygulaması için Kubernetes Deployment, Service ve IngressRoute kaynaklarını gösterir.

# whoami-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: whoami
  labels:
    app: whoami
spec:
  replicas: 2
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami
        image: traefik/whoami
        ports:
        - containerPort: 80

---
# whoami-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: whoami
spec:
  selector:
    app: whoami
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

---
# whoami-ingressroute.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: whoami-ingressroute
spec:
  entryPoints:
    - websecure # 'websecure' entry point'inin Traefik'in Helm values dosyasında tanımlı olduğu varsayılır
  routes:
    - match: Host(`whoami.yourdomain.com`)
      kind: Rule
      services:
        - name: whoami # Kubernetes 'whoami' Service'ine işaret eder
          port: 80
  tls:
    certResolver: myresolver # Let's Encrypt için 'myresolver' tanımının Traefik'in Helm values dosyasında olduğu varsayılır

Karşılaştırma: Traefik ile Geleneksel Proxy'ler (Nginx/HAProxy)

Özellik Traefik Nginx/HAProxy (geleneksel)
Yapılandırma modeli Dinamik, API tabanlı, otomatik keşif Statik dosyalar, manuel güncelleme, reload/restart gerektirir
Servis keşfi Docker, K8s, Consul vb. için yerleşik Harici araçlar (örneğin consul-template) veya manuel yapılandırma gerektirir
SSL/TLS yönetimi Otomatik Let's Encrypt entegrasyonu Manuel kurulum, otomasyon için harici araçlar veya script'ler
Dinamik ortamlarda karmaşıklık Düşük, doğal entegrasyon, basit label/CRD Yüksek, otomasyon için karmaşık script veya orkestrasyon gerekir
Panel Yerleşik web arayüzü Genellikle yok, üçüncü taraf izleme araçları
Birincil kullanım senaryosu Mikroservisler, kısa ömürlü container'lar, cloud-native ortamlar Kararlı, uzun ömürlü servisler, yüksek performanslı edge proxy

İzleme ve Panel

Traefik paneli, mevcut yönlendirme yapılandırmasını görselleştirmek ve Traefik'in durumunu izlemek için grafik bir arayüz sunar. Bir web tarayıcısı üzerinden, genellikle 8080 portundan erişilebilir (Docker örneğinde yapılandırıldığı gibi). Güvenlik açısından paneli basic authentication gibi bir middleware ile korumak standart uygulamadır.

En İyi Uygulamalar

  • Traefik'i izole edin: Güvenliği artırmak ve yönetimi kolaylaştırmak için Traefik'i özel bir ağda veya ayrı bir Kubernetes namespace'inde çalıştırın.
  • Paneli güvenceye alın: Traefik panelini her zaman kimlik doğrulama ile (örneğin BasicAuth middleware'i) koruyun ve yalnızca yetkili kişilere açık olduğundan emin olun.
  • ACME için kalıcı depolama: Let's Encrypt sertifikaları için ACME depolama yolunun (örneğin /letsencrypt/acme.json) kalıcı depolamaya bağlandığından emin olun. Bu, container yeniden başlatıldığında veya yeniden dağıtıldığında sertifika kaybını önler.
  • En az yetki: Docker soketini (/var/run/docker.sock) bağlarken Traefik'in gereken en az yetkiyle çalıştığından emin olun. Yazma erişimi gerekmiyorsa salt okunur bağlama (:ro) kullanmayı değerlendirin.
  • exposedbydefault=false: Docker provider'ları için --providers.docker.exposedbydefault=false ayarı, güvenlik ve yönetim açısından iyi bir uygulamadır. Bu, yayınlanması gereken container'larda açıkça traefik.enable=true label'ı bulunmasını gerektirir.
Güncellendi: 04.03.2026
Kategoriye dön

Bunları da okuyun

Guides 2 dk

Nike SNKRS için Proxy: Sınırlı Sürümler ve Çoklu Katılım

Nike SNKRS'ta birden fazla hesapla çekilişlere katılmak, IP limitlerini aşmak ve ban yemeden sınırlı sürümleri kapmak için residential veya mobil proxy kullanın. Hangi türü seçmeli ve nasıl kurmalı.

Guides 2 dk

iPhone'da Proxy Nasıl Kurulur (Wi-Fi ve SOCKS5)

iPhone'da proxy'yi yerleşik Wi-Fi ayarlarından (HTTP/HTTPS) veya SOCKS5 ile hücresel kapsama için Shadowrocket gibi bir uygulamayla kurun. Adım adım iOS kurulumu ve bilinmesi gereken kısıtlar.

Guides 3 dk

Tinder için proxy: çoklu hesap ve ban'lerden kaçınma

Birden fazla profil işletmek ve IP shadowban'lerinden kaçınmak için Tinder'da mobil veya residential proxy kullanın. Mobilin neden kazandığı, kurulumu ve proxy'nin şehri neden değiştirmediği.

Guides 2 dk

StockX için proxy: fiyat takibi ve hesap yönetimi

StockX'te fiyatları izlemek, birden fazla hesap çalıştırmak ve drop'ları yasaklanmadan kapmak için residential, ISP veya mobil proxy kullanın. Hangi türü seçeceğinizi ve nasıl kuracağınızı anlatıyoruz.

Guides 3 dk

OpenAI API için Proxy: Erişim, Hız Limitleri ve Kurulum

OpenAI API'yi residential veya ISP proxy üzerinden yönlendirerek desteklenen bölgelere erişin, 429 hız limitlerinden kaçının ve hesapları izole edin. Hangi proxy'yi seçmeli ve Python kurulum örnekleri.

Guides 1 dk

E2E testleri için Cypress'te proxy kurulumu

Cypress'te proxy kurulumu: HTTP_PROXY değişkenleri, cy-proxy-middleware ve coğrafi konuma bağlı içeriğin test edilmesi.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.