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
Hacker News Yorumları