For the complete documentation index, see llms.txt. This page is also available as Markdown.

Demo

Teoriyi geride bıraktık, şimdi sıra eBPF'in sağladığı o muazzam observability kendi gözlerimizle görmekte. Bu laboratuvar çalışmasında, kapalı bir kutu gibi duran Kubernetes cluster'ımızın içini şeffaf bir cama dönüştüreceğiz.

Hubble'ı aktif edecek, metrikleri Prometheus ve Grafana'ya bağlayacak, ardından oluşturduğumuz güvenlik kurallarının (Network Policies) trafiği nasıl kestiğini saniye saniye izleyeceğiz.


🏗️ Demo Topolojisi ve Veri Akışı

Bu çalışmada sistemin arka planında şu akış gerçekleşecek:

  [ Admin Pod ] ──(HTTP İstekleri)──▶ [ Demo Pod ]
        │                                  │
        └──────( eBPF Sensörleri Yakalar )─┘

                [ Hubble Relay ] (Veriyi Toplar)

          ┌─────────────┼─────────────┐
          ▼             ▼             ▼
   [ Hubble UI ]   [ Grafana ]   [ Hubble CLI ]
  (Servis Haritası) (Metrikler)  (Canlı Terminal)

Hazırsanız terminal başına geçelim!


1. Mevcut Durumu Analiz Etmek (Ön Kontrol)

cluster'ımızda Cilium (v1.15.3+) halihazırda kurulu, Prometheus ve Grafana ise cilium-monitoring isimli namespace içinde bekliyor. Ancak Hubble bileşenleri varsayılan olarak kapalıdır.

Önce sistemin mevcut durumunu teyit edelim:

Çıktıda Hubble Relay: disabled yazdığını göreceksiniz. Cilium sağlıklı çalışıyor ama veri toplamıyor.

Grafana ve Prometheus'un ayakta olduğundan emin olalım:

Her ikisinin de Running statüsünde olduğunu doğrulamalıyız.


2. Hubble'ı Uyandırmak (Helm Upgrade)

Şimdi cluster'a, "Artık uyuma, Relay'i, UI'ı ve Prometheus metriklerini aktif et" diyeceğiz. Bunu helm upgrade komutuyla, mevcut ayarları bozmadan (--reuse-values) tek seferde yapıyoruz:

Birkaç dakika bekleyip durumu tekrar kontrol edelim:

Artık Hubble Relay: OK ve Hubble UI: OK ibarelerini görmelisiniz.


3. Hubble UI'ı Dışarı Açmak (NodePort ile)

Varsayılan kurulumda Hubble UI bir ClusterIP servisidir (Sadece cluster içinden erişilebilir). Grafik arayüzü tarayıcımızdan görebilmek için (eğer port-forward kullanmak istemiyorsak) servisi NodePort'a çevirmeliyiz.

Açılan editörde spec kısmını bulup type: ClusterIP satırını type: NodePort olarak değiştirelim ve dışarıdan erişeceğimiz portu (Örn: 30000) belirtelim:

Artık tarayıcınızdan http://<Node_IP_Adresiniz>:30000 adresine girerek interaktif hizmet haritasına ulaşabilirsiniz.

⚠️ Güvenlik Uyarısı: NodePort kullanmak, o portu dış dünyaya açmak demektir. Gerçek production ortamlarında bunun yerine şifrelenmiş (HTTPS) ve kimlik doğrulamalı bir Ingress kullanmalısınız.


4. Trafik Simülasyonu ve Politikaları Test Etmek

Görselleştirilecek veri yaratmak için sisteme biraz trafik sokalım. Bir önceki konudan hatırlayacağınız üzere; /api yoluna (path) sadece X-API-KEY: abc123 başlığı (header) olan admin pod'ları erişebiliyordu.

Bu kuralı (CiliumNetworkPolicy) uyguladıktan sonra, sistemi test edelim:

✅ Başarılı İstek (İzin Verilen):

❌ Başarısız İstek (Engellenen):

API anahtarını eklemeden istek atalım:


5. İzleme: Hubble UI ve Grafana'da Neler Oluyor?

Bu testleri yaptıktan sonra iki farklı ekrandan harika veriler okuyabilirsiniz:

  • Grafana Paneli (cilium-monitoring): Dashboard'a girdiğinizde "Forwarded vs Dropped" (İletilen vs Düşürülen) grafiğinde, az önce API keysiz attığınız isteğin kırmızı bir "Drop" barı olarak yükseldiğini görebilirsiniz.

  • Hubble UI (<Node_IP>:30000): admin ve demo kutucukları arasında gidip gelen okları göreceksiniz. Engellenen istekler haritada kırmızı bir hat olarak, başarılı olanlar ise yeşil olarak çizilir.


6. Hubble CLI: Terminalin Derinliklerine İnme

Grafik arayüzler harikadır, ancak sistem yöneticileri terminalde yaşamayı sever. Hızlı bir "troubleshooting" (sorun giderme) yapmak isterseniz, cluster içindeki herhangi bir Cilium ajanının (pod) içine girip doğrudan canlı akışı okuyabilirsiniz.

Etkili Filtreleme Komutları:

Ekranda binlerce paket akıyorsa, aradığınızı bulmak için hubble observe komutunu harika parametrelerle daraltabilirsiniz:

Last updated