Demo
Traefik'in Kubernetes ortamındaki trafiği nasıl mükemmel bir şekilde yönettiğini önceki yazılarımızda konuşmuştuk. Peki bu motoru sistemimize nasıl entegre edeceğiz?
Kubernetes'te Traefik kurmanın iki yolu vardır:
Manuel (Zor) Yol: RBAC yetkilerini (ClusterRole, ServiceAccount), Deployment tanımlarını ve Service (LoadBalancer) YAML dosyalarını tek tek elinizle yazmak.
Helm (Akıllı) Yol: Tüm bu karmaşık dosyaları tek bir paket halinde, sektör standardı olan Kubernetes paket yöneticisi (Helm) ile saniyeler içinde kurmak.
Bu laboratuvarda, production ortamlarının vazgeçilmezi olan Helm yöntemini kullanacağız.
1. Adım: Helm ile Traefik Motorunu Kurmak
Öncelikle Traefik'in resmi Helm deposunu sistemimize ekliyor ve güncelliyoruz:
helm repo add traefik https://traefik.github.io/charts
helm repo updateKurulumun temiz olması için Traefik'e özel bir isim alanı (namespace) yaratalım:
kubectl create namespace traefikVe motoru çalıştırıyoruz! (Not: Eğer bulut ortamındaysanız, bu komut sizin için otomatik olarak bir LoadBalancer IP'si de yaratacaktır).
helm install traefik traefik/traefik --namespace=traefikHer şeyin sağlıklı bir şekilde ayağa kalktığını doğrulamak için kontrol edelim:
kubectl get all -n traefikÇıktıda Traefik Pod'unun Running durumunda olduğunu ve bir LoadBalancer (veya NodePort) servisinin oluştuğunu görmelisiniz.
2. Adım: Test Uygulamasını (Whoami) Ayağa Kaldırmak
Trafiği yönlendirebilmemiz için içeride çalışan bir uygulamaya ihtiyacımız var. Traefik ekibinin geliştirdiği, kendisine gelen HTTP isteklerinin detaylarını ekrana basan çok hafif bir test uygulaması olan whoami'yi kullanacağız.
Aşağıdaki whoami-app.yaml dosyasını oluşturun:
Dosyayı sisteme uygulayın:
Şu an içeride çalışan, dünyadan tamamen izole edilmiş bir uygulamamız ve kapıda bekleyen bir Traefik motorumuz var. Şimdi bu ikisini birbirine bağlayacağız.
3. Adım: Ingress Kuralını Yazmak
Traefik'e "Sana gelen trafiği içerideki whoami servisine yönlendir" emrini vereceğimiz standart Ingress YAML dosyamızı hazırlıyoruz.
Aşağıdaki whoami-ingress.yaml dosyasını oluşturun. (Önceki yazılarımızda bahsettiğimiz IngressClass detayına dikkat edin!)
Dosyayı sisteme uygulayın:
4. Adım: Test ve Logları İzlemek
İşlem tamam! Şimdi dış kapımızın (LoadBalancer veya NodePort) IP adresini öğrenelim:
Tarayıcınızı açıp http://<Sistem-IP-Adresiniz> adresine (veya belirlediğiniz NodePort'a) gittiğinizde, whoami uygulamasının size cevap verdiğini, IP adresinizi ve sunucu detaylarını ekrana bastığını göreceksiniz.
Trafiği Canlı İzlemek İstiyorsanız:
Traefik'in arka planda bu isteği nasıl karşılayıp yönlendirdiğini görmek için terminalden Traefik Pod'unun loglarına canlı olarak bağlanabilirsiniz:
Sayfayı her yenilediğinizde, log ekranına yeni bir HTTP isteğinin (Access Log) düştüğünü görebilirsiniz.
On-prem ortamlarda sana o "dış IP'yi" verecek API yoktur. Dolayısıyla Traefik'in o LoadBalancer servisi sonsuza dek <pending> (bekliyor) durumunda takılı kalır ve sistemine dışarıdan asla erişemezsin.
Bu sorunu çözmek için (eğer MetalLB gibi bir eklentin yoksa), Traefik'in kurulum dosyasındaki (values.yaml) o LoadBalancer ayarını mecburen NodePort olarak değiştirmen gerekir. Böylece sistem sana statik bir IP veremese bile, sunucunun fiziksel IP'si üzerinden örneğin 32080 gibi bir port açarak Traefik motoruna dışarıdan ulaşmanı sağlar.
Yukarıdaki yazımızda Traefik motorunu sistemimize kurmuş ve trafiği nasıl yönlendirdiğimizi konuşmuştuk. Traefik'i anlatırken onun en büyük güçlerinden birinin "Gözlem ve Yönetim Paneli (Dashboard)" olduğundan bahsetmiştik.
Peki körü körüne terminalden komut yazmak yerine, sistemimize giren trafiği, kuralları ve anlık sağlığı görsel bir arayüzden nasıl izleriz? Hatta Traefik'in o meşhur "Hot Reload" özelliğinin gerçekten çalışıp çalışmadığını kendi gözlerimizle nasıl kanıtlarız?
Traefik, sisteminize kurulduğu anda arka planda muazzam bir veri toplar. Hangi porttan kaç kişi giriyor, kurallar (Routers) doğru çalışıyor mu, arkadaki mikroservislerin (Pods) sağlığı ne durumda? Normalde bu veriler güvenlik nedeniyle dış dünyaya tamamen kapalıdır.
Bu laboratuvar çalışmasında, Traefik'in içindeki bu Dashboard'u dışarı açacak ve sistemimizin anlık röntgenini çekeceğiz.
1. Adım: Dashboard'u Dışarı Açmak (NodePort ile)
Traefik API'si ve Dashboard'u, varsayılan olarak pod'un içindeki 9000 portunda çalışır. Buna kendi bilgisayarımızdan erişebilmek için bir Service (NodePort) oluşturmamız gerekiyor.
Aşağıdaki service-dashboard.yaml dosyasını oluşturun:
Dosyayı sisteme uygulayın:
2. Adım: API'yi "Güvensiz" Modda Aktif Etmek
Güvenlik prensipleri gereği Traefik paneli şifresiz erişime kapalıdır. Biz şu an bir test/laboratuvar ortamında olduğumuz için şifreleme ve yetkilendirme (Auth) ayarlarıyla vakit kaybetmeden paneli direkt erişime açacağız. (Uyarı: Bunu asla Production ortamında yapmayın!)
Mevcut Traefik Deployment'ını terminal üzerinden canlı olarak düzenliyoruz:
Açılan metin editöründe, containers altındaki args: (argümanlar) bölümünü bulun ve aşağıdaki iki satırı ekleyin:
Dosyayı kaydedip çıktığınızda Kubernetes, Traefik pod'unu yeni ayarlarla saniyeler içinde yeniden başlatacaktır. Pod'un çalıştığını teyit edin: kubectl get pods -n traefik
3. Adım: Kontrol Paneline Giriş ve Keşif
Artık tarayıcınızı açıp doğrudan http://<Sunucu-IP-Adresiniz>:30000 adresine gidebilirsiniz. Karşınıza Traefik'in modern ve detaylı arayüzü çıkacaktır!
Ekranda önceki yazımızda öğrendiğimiz 4 temel yapı taşını göreceksiniz:
EntryPoints: Traefik'in dünyayı dinlediği kapılar (web: 80, websecure: 443 vb.).
Routers: Yazdığınız Ingress kurallarının listesi (Hangi URL nereye gidiyor?).
Services: Arka planda çalışan uygulamalarınız ve anlık sağlık durumları.
Middlewares: Trafiğe uyguladığınız hız sınırları veya şifre kuralları.
4. Adım: "Hot Reload" Canlı Test Etmek
Geldik en heyecanlı kısma. Traefik'in yeniden başlatılmaya gerek duymadan değişiklikleri anında algıladığını (Hot Reload) özelliğinden bahsetmiştik. Şimdi bunu görsel olarak kanıtlayalım.
Dashboard'da "Services" sekmesini açık tutun ve uygulamanızın (Örn: whoami) üzerine tıklayın. Orada şu an sadece 1 adet sağlıklı uç nokta (endpoint/pod) göreceksiniz.
Şimdi terminale dönün ve içerideki uygulamamızın sayısını aniden 5'e çıkarın:
Hiçbir şeyi yeniden başlatmayın, sayfayı yenilemeyin. Sadece Dashboard'u izleyin. Birkaç saniye içinde Traefik'in yeni açılan 4 Pod'u otomatik olarak keşfettiğini ve listedeki sağlıklı sunucu sayısının canlı olarak 5'e çıktığını göreceksiniz. Trafik anında 5 pod arasında dengelenmeye başlayacaktır.
Last updated