diagram-projectNetwork Policies Overview

En basit tabirle, cluster içindeki trafik ışıkları veya güvenlik görevlileridir. Hangi Pod'un nereye gidebileceğini veya hangi Pod'un kimden veri alabileceğini belirleyen kurallar bütünüdür. Bu kurallar ancak Calico veya Cilium gibi bir CNI kuruluysa çalışır; standart boş bir Kubernetes bunları anlayamaz.

2. Kurallar Neye Göre Yazılır?

Bir kural yazarken hedefi 3 farklı şekilde seçebilirsin:

  • podSelector: Etiketlere (label) göre çalışır. "Sadece app: frontend etiketine sahip Pod'lara izin ver" diyebilirsin.

  • namespaceSelector: "Sadece team: frontend isimli Namespace içindeki Pod'lardan gelen trafiği kabul et" diyebilirsin.

  • ipBlock: Daha fiziksel bir kuraldır. "172.17.0.0/16 IP bloğundan gelenlere izin ver" diyebilirsin.

3. Trafiğin Yönü (Ingress ve Egress)

Kuralları yazarken trafiğin yönünü belirtmek zorundasın:

  • Ingress (Geliş): Dışarıdan veya başka Pod'lardan, benim Pod'uma doğru gelen trafiktir.

  • Egress (Gidiş): Benim Pod'umdan çıkıp dışarıya (veya başka Pod'a) giden trafiktir.

4. Örnek Bir YAML Kod Bloğu İncelemesi

(Not: Bu kural uygulandığında, app1 Pod'u bu yazılanlar DIŞINDAKİ tüm trafiğe kapatılır - Default Deny).

circle-info

Kısa bir ek bilgi: Eğer podSelector'ın başındaki tire (-) işaretini silseydin, o zaman VE (AND) olarak çalışırdı (Yani sadece frontend namespace'indeki app2 podlarına izin verirdi). Tire işareti olduğu için VEYAdır.

5. Varsayılan (Default) Kurallar Atamak

Sistem yöneticilerinin en çok kullandığı yöntemdir. Bir ortama yeni bir Pod eklendiğinde güvenliği şansa bırakmamak için "Her Şeyi Yasakla" (Default Deny) kuralı yazılır.

6. Standart Network Policy'nin Sınırları

Bu standart kuralların bazı yetersizlikleri vardır:

  • Sadece IP ve Port seviyesinde (Layer 3 ve Layer 4) çalışır. "Sadece HTTP GET isteklerine izin ver" gibi uygulama seviyesinde (Layer 7) kurallar yazamazsın.

  • Kuralların işleyip işlemediğini veya engellenen trafiği sana log olarak göstermez (Loglama özelliği yoktur).

  • Doğrudan bir Service objesini hedef alamazsın, sadece etiket (label) seçebilirsin.

Peki bu sınırları nasıl aşıyoruz? İşte tam burada önceki konularımızda işlediğimiz Cilium veya Calico gibi gelişmiş CNI araçları devreye giriyor. Örneğin Cilium, standart kuralın yapamadığı Layer 7 HTTP filtrelemeyi ve Hubble ile loglamayı mümkün kılar.

Last updated