İçeriğe geç
Traefik v3 Reverse Proxy Kurulumu: Otomatik TLS ve Ingress

Traefik v3 Reverse Proxy Kurulumu: Otomatik TLS ve Ingress

4 dk okuma Ağ Yönetimi

Traefik, modern altyapılarda yaygın kullanılan reverse proxy ve load balancer çözümlerinden biri. v3 sürümüyle birlikte Kubernetes entegrasyonu, otomatik TLS yönetimi ve gelişmiş middleware desteği gibi önemli özellikler sunuyor.

Docker Ortamında Kurulum

Docker kullanarak Traefik v3 kurulumu en pratik yöntemlerden biri. Aşağıdaki docker-compose dosyası temel yapılandırmayı içeriyor:

services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./certs:/certs
    restart: unless-stopped
    networks:
      - web

Bu yapılandırmada Docker socket'i okunabilir olarak bağlanıyor. Traefik bu sayede Docker daemon'a erişerek container değişikliklerini dinamik olarak takip edebiliyor. Sertifika dosyaları için ayrı bir dizin oluşturulması öneriliyor.

Temel Yapılandırma Dosyası

Traefik v3, YAML tabanlı yapılandırma kullanıyor. Aşağıdaki örnek temel ayarları içeriyor:

api:
  dashboard: true
  insecure: true

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"
    http:
      tls:
        certResolver: letsencrypt

certificatesResolvers:
  letsencrypt:
    acme:
      email: admin@domain.com
      storage: /certs/acme.json
      httpChallenge:
        entryPoint: web

Bu yapılandırma HTTP trafiğini otomatik olarak HTTPS'e yönlendiriyor. Let's Encrypt sertifika yenileme için gerekli dizin ve dosya izinlerinin doğru ayarlanması gerekiyor. acme.json dosyasının izinleri 600 olarak ayarlanmalı.

Kubernetes Üzerinde Kurulum

Kubernetes ortamında Helm ile kurulum tercih ediliyor. Öncelikle Helm repository eklenmeli:

helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik -n traefik --create-namespace

values.yaml dosyası ile özelleştirme yapılabiliyor. Aşağıdaki örnek dashboard, HTTPS yönlendirme ve sertifika resolver ayarlarını içeriyor:

ingressRoute:
  dashboard:
    enabled: true

ports:
  web:
    redirectTo: websecure
  websecure:
    tls:
      enabled: true

additionalArguments:
  - "--certificatesresolvers.letsencrypt.acme.email=admin@domain.com"
  - "--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json"
  - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"

persistence:
  enabled: true

Sertifikaların pod restart sonrası kaybolmaması için persistence ile kalıcı volume bağlanması gerekiyor. Traefik v3'ün Kubernetes entegrasyonu IngressClass mekanizmasını kullanıyor. Varsayılan olarak traefik ismiyle oluşturuluyor.

Ingress Tanımlama

Kubernetes üzerinde Ingress kullanımı şu şekilde:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: websecure
    traefik.ingress.kubernetes.io/router.tls: "true"
spec:
  ingressClassName: traefik
  rules:
  - host: myapp.domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp-service
            port:
              number: 80

Annotations bölümünde entrypoint ve TLS ayarları belirtiliyor. Router seviyesindeki bu ayarlar Ingress nesnesinin kendisinde değil annotation katmanında taşınıyor.

Otomatik TLS Yönetimi

Let's Encrypt entegrasyonu ile Traefik otomatik olarak sertifika alıp yenileyebiliyor. HTTP-01 challenge yöntemi en yaygın kullanılan tercih. Yukarıdaki yapılandırmada httpChallenge bölümü bu işlevi görüyor.

Sertifikaların saklandığı acme.json dosyası JSON formatında. İlk çalıştırmada boş olarak oluşturulmalı:

touch acme.json
chmod 600 acme.json

Traefik başlatıldığında Let's Encrypt sunucularıyla iletişime geçerek ilk sertifikayı alıyor. Yenileme işlemi arka planda otomatik yapılıyor.

Middleware Yapılandırma

Traefik v3'te middleware'ler istek işleme zincirini oluşturuyor. Sık kullanılan örnekler:

  • BasicAuth: Temel kimlik doğrulama için
  • RateLimit: İstek sınırlama için
  • StripPrefix: Path prefix kaldırma için
  • RedirectRegex: URL yönlendirme için

Kubernetes ortamında Middleware CRD'si kullanılıyor. v3 ile birlikte CRD'lerde traefik.io API grubu geçerli; eski traefik.containo.us grubu v3'te çalışmıyor:

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: strip-prefix
spec:
  stripPrefix:
    prefixes:
      - /api
      - /v1

Ingress annotation'ında bu middleware referans veriliyor.

Service Yapılandırma

Traefik v3, Docker labels veya Kubernetes service annotation'ları ile otomatik keşif yapıyor. Docker Compose'ta label kullanımı:

services:
  webapp:
    image: nginx:latest
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.webapp.rule=Host(`app.domain.com`)"
      - "traefik.http.routers.webapp.tls=true"
      - "traefik.http.services.webapp.loadbalancer.server.port=80"

Bu yaklaşım ile her yeni container otomatik olarak Traefik tarafından keşfedilip load balancer havuzuna ekleniyor.

Traefik v3, reverse proxy ihtiyaçları için güçlü bir çözüm sunuyor. Otomatik TLS, dinamik yapılandırma ve Kubernetes entegrasyonu öne çıkan özellikler. Kurulum süreci oldukça basit, label veya annotation tabanlı yapılandırma ile hızlıca devreye alınabiliyor. Let's Encrypt entegrasyonu sayesinde manuel sertifika işlemleri tarih oluyor. Hem Docker hem Kubernetes ortamlarında sorunsuz çalışması, altyapı bağımsızlığı açısından avantaj sağlıyor.