3 puan yazan GN⁺ 2024-05-06 | 1 yorum | WhatsApp'ta paylaş

Konteyner kullanmasanız bile Traefik’e bakmanız gereken nedenler

Traefik’in bilinen yönleri

  • Traefik’in hedefi, mikroservis dünyasına yardımcı olmaktır
  • Birçok YouTuber, Docker veya Kubernetes gibi konteyner altyapılarını sahip olduklarını paylaşıyor
  • Traefik bir konteyner içinde çalışır; Docker socket’ını Traefik konteynerine mount ederek Traefik ile yayınlamak istediğiniz diğer konteynerleri otomatik olarak tespit edebilir
  • Etiketler aracılığıyla belirli bir konteyner için proxy davranışı yapılandırılabilir
  • Traefik, Let's Encrypt’ten TLS sertifikalarını otomatik olarak ister ve yeni bir konteynerin ortaya çıkmasını hemen algıladığında servisi kullanılabilir hale getirir

Konteyner kullanılmasa da Traefik’in faydalı olması

Yaygın yanlış anlama: Konteyner motoru gerekmiyor

  • Traefik’in bir konteyner motorunda çalışması gerekmez ve servisin de bir konteyner motorunda çalışmasına gerek yoktur
  • Traefik Go (Golang) ile yazılmıştır ve tek bir ikili dosya olarak derlenmiştir
  • Golang ile yazılmış ve tek bir binary olarak derlenen bir yazılımla karşılaşınca gerçekten iyi bir his alırım
  • Dağıtımı kolay ve tam kontrol sizde kalır

Yaygın yanlış anlama: Ayar dosyası da destekleniyor

  • Konteyner kullanmadığınızda konteyner etiketlerini kullanamazsınız, fakat etiketler kafa karıştırıcı ve okunması zor olabilir
  • Traefik ayrıca yapılandırma dosyasıyla da ayarlanabilir
  • Traefik, sertifika sağlayıcılarını (ör. Let's Encrypt) ve giriş noktalarını (Traefik’in dinlediği portlar) içeren “statik” yapılandırmayı, yönlendiricileri, servisleri ve ara katman yazılımlarını (middleware) içeren “dinamik” yapılandırmadan ayırır
  • Traefik, dosya sistemi olaylarını dinleyebilir ve dinamik bölümü anında yeniden yükleyebilir

Belgeleri iyi hazırlanmış

  • Traefik’in üzerinde durduğu tüm kavramları net bir biçimde açıklar
  • İlgili sayfanın başında seçtiğiniz örnek kurulum yöntemi için yapılandırma örnekleri vardır
  • Doküman çoğu ihtiyacı karşılar
  • Kenar çubuğu yardımcı olur

Traefik sağlam ve iyi tasarlanmış görünüyor

  • Traefik, kurgunuz mantığa aykırıysa uyarı verir ve hâlâ rastgele sorun çıkarmıyor
  • Traefik varsayılan olarak çok log tutmuyor gibi görünse de, bir isteğin nasıl işlendiğini kolayca anlamanızı sağlar ve sinirlenmeden hızlıca başlayabilirsiniz

Gerçekten beğendiğim özellikler

TLS passthrough ve PROXY protokolü

  • Traefik, TLS passthrough ile HAProxy’in PROXY protokolünü (gelen ve giden) destekler
  • TLS passthrough, trafiği kendi TLS sertifikasını sunan web servislerine iletebilmeniz anlamına gelir
  • Proxy’de TLS sonlandırmasına girmeden, servisin doğrudan Let's Encrypt’ten istek göndermesini sağlar
  • PROXY protokolü, kullanıcının önce proxy’ye geldiği noktada kaybolan bilgileri daha güvenli taşımak için bir yöntemdir
  • PROXY protokolü hedef serviste de desteklenmelidir; Apache2 ve Nginx (dolayısıyla PHP) için geçerlidir ve protokolü destekleyen servis listesi artıyor

Traefik kullanırken beğenilmeyen noktalar

Kimlik doğrulama

  • NGINX’te belirli servisleri Azure AD ile korumak için Vouch Proxy kullanıyorum
  • Traefik, NGINX’in authentication’una benzer bir ForwardAuth sunuyor ama Vouch Proxy şu an için Traefik’te çalışmıyor
  • Keycloak örneği dağıtıp AAD ile entegre ettikten sonra ForwardAuth için kullanılabilir; ancak önce bu Keycloak örneğini güvenli ve güncel tutacak şekilde ayarlamanız gerekir
  • traefik-forward-auth sıkça önerilir, ancak son güncellemesi 2020 Haziran’da yapılmış, geliştirici GitHub’da kaybolmuş ve bağımlılıkların güncellenmesi gerekiyor
  • Daha önce oauth2-proxy ile kötü bir deneyimim oldu
  • HTTP2/3, timeout, gövde boyutu ve WebSocket gibi özellikler, kullanıcı ile servis arasındaki tüm proxy’lerde yapılandırma gerektirir; bu nedenle proxy zincirlemek oldukça hata riski taşır
  • Traefik ForwardAuth basit göründüğü için, AAD ile entegre etmek adına basit bir kendi aracınızı yazmanız ya da traefik-forward-auth’i fork edip denetledikten sonra bağımlılıklarını güncellemeniz gerekir

Kullanıcı ajanı ve IP adresi engelleme

  • İç servislerin archive.org tarafından arşivlenmesini istemiyorum
  • robots.txt ve benzeri başlıklar Archive.org için engellemeye çalışmayın, bu nedenle botu engelleme seçeneği yalnızca archive.org_bot kullanıcı ajanını bloklamak ya da IP aralıklarını engellemek
  • Traefik’te kullanıcı ajanı veya IP adresi engellemek yalnızca üçüncü taraf eklentileriyle yapılabilir
  • Üçüncü taraf eklentiler güncellemede göz önünde tutulmalı ve güvenlik açığına sebep olabileceğinden tercih edilmez
  • IPAllowList middleware’i kullanarak IP’leri engelleyebilir ve engellenmesi istenmeyen IP’ler dışında her şeyi izinli bırakabilirsiniz
  • IP aralıklarını hesaplayabilirsiniz, doğrudan bloklamaktan kötü olmayabilir ancak geriye bakarak hangi subnetlerin tam engellendiğini görememek işi hiç de zarif kılmıyor

GN+ görüşü

  • Traefik, konteyner kullanılıp kullanılmamasına bakılmaksızın dikkat çekici bir ters proxy çözümü olarak duruyor. Özellikle Golang ile yazılmış olması ve tek bir ikili dosya olarak derlenmesi, dağıtım ve yönetimini kolaylaştırıyor.
  • Dokümantasyonunun güçlü olması da Traefik’in kavramlarını anlamada ve yapılandırma örnekleri bulmada ciddi bir avantaj sağlayacak gibi görünüyor.
  • TLS passthrough ve PROXY protokolü desteği gibi ileri seviye özellikler de iyi bir şekilde destekleniyor.
  • Ancak kimlik doğrulama tarafında hâlâ tatmin edici bir çözüm yok gibi görünüyor; ya kendi kimlik doğrulama sunucunuzu geliştirmek ya da mevcut projeyi iyileştirmek için yatırım yapmak gerekiyor.
  • Kullanıcı ajanı veya IP engelleme işlevleri de yerleşik gelse iyi olurdu, ancak üçüncü taraf eklenti kullanmak dışında daha zarif bir yol görünmüyor.
  • Traefik, NGINX’in alternatifi olarak dikkate değer bir aday olabilir. Özellikle NGINX ayarları size karmaşık geliyorsa, Traefik’in sadeliği cazip gelebilir.

1 yorum

 
GN⁺ 2024-05-06
Hacker News Yorumları
  • Traefik'in artı ve eksileri karşılaştırıldı
    • Avantaj: Let's Encrypt ile otomatik entegrasyon nedeniyle NGINX'ten Traefik'e geçiş yapıldı
    • Dezavantaj: belgeleme iyi değil, loglama da eksik ve sertifika yeniden üretilmesi zaman zaman başarısız olup üretimde kesintilere neden oluyor
    • Sonunda tekrar NGINX'e dönüldü
  • Traefik yerine Caddy kullanılmasını tercih eden görüşler
    • Caddyfile'ın Traefik'in YAML yapılandırmasından çok daha kolay yönetilebilmesi
    • Çeşitli eklenti desteği (ör. Caddy'nin Coraza WAF eklentisi)
  • Traefik'in NGINX'e göre avantajlı olabileceği kullanım senaryoları üzerine tartışma
    • Birkaç düzine konteyneri olan küçük ölçekli bir Docker host ortamı için NGINX Proxy Manager yeterli
    • K3s'de varsayılan olarak Traefik'in yüklü olması, K8s kümesini hızlıca test için kurmak açısından avantajlı
  • Caddy'den Traefik'e geçmeyi düşünenler için
    • Caddy'nin avantajları: Docker etiketlerine dayalı otomatik yapılandırma, TLS sertifika yönetimi, DNS otomatik ayarı vb.
    • Caddy'nin dezavantajları: iş yükü yeniden başlatıldığında Caddy'nin tamamen yeniden başlaması nedeniyle geçici kesinti yaşanması, wildcard sertifika ayarının karmaşık olması
    • K8s ortamında Traefik kullanma deneyimi iyi olduğu için bunu kişisel projelere de uygulamayı düşünüyorlar
  • Traefik'in dinamik yapılandırmasının ve hata ayıklamasının zor olması nedeniyle Caddy'ye geçişe dair deneyim
    • Caddy'nin basit ve daha az katmanlı olmasıyla yapılandırma çok daha kolay
  • Traefik'i uzun süre kullandıktan sonra statik yapılandırmanın avantajının fark edilmesi
    • Docker etiketleriyle dinamik yapılandırmanın zorluğu ve hata ayıklamanın zahmeti
    • Şablon motoru ile host/hedef/port kombinasyonlarına yönelik basit bir statik yapılandırma dosyası oluşturma
    • Ansible ile yapılandırma dosyası oluşturma ve dağıtımın otomatikleştirilmesi
  • HAProxy ile karşılaştırma
    • 10 yılı aşkın süredir HAProxy kullanıldı ve runtime API ile dinamik yapılandırma gibi özelliklerle bulut çağına göre modernize edildi
  • Traefik kullanırken en büyük avantaj ve dezavantajlar
    • Avantaj: Konfigürasyonun büyük ölçüde Docker etiketleri üzerinden iletilebilmesi sayesinde Traefik ayarını neredeyse hiç değiştirmeye gerek kalmaması
    • Dezavantaj: Traefik'in doğru telaffuzunu bilmek zor ("trey-feek" gibi söylemek geliyor).