Kubernetes Network Policy Türleri ve Örnekler

ergün elvan bilsel
3 min readJun 1, 2024

Kubernetes, kapsayıcıların sorunsuz bir şekilde yönetilmesini ve dağıtılmasını sağlayan açık kaynaklı bir platformdur. Kubernetes ağ politikaları (Network Policies), podlar arasındaki ve podlar ile diğer ağ bileşenleri arasındaki trafiği kontrol etmek için kullanılır. Bu makalede, Kubernetes ağ politikalarının türlerini, uygulamalarını ve çeşitli örnekleri detaylandıracağız.

1. Giriş

Kubernetes, kapsayıcıların yönetimini ve ölçeklenmesini kolaylaştıran bir orkestrasyon aracıdır. Ağ politikaları, Kubernetes’te ağ trafiğini kontrol etmek için kullanılan güçlü araçlardır. Bu politikalar, güvenliği artırmak ve ağ trafiğini optimize etmek için podlar arasındaki iletişimi kontrol eder.

2. Kubernetes Ağ Politikalarının Türleri

Kubernetes ağ politikaları, iki ana türe ayrılır: Ingress (Giriş) politikaları ve Egress (Çıkış) politikaları. Ayrıca, bazı politikalar hem ingress hem de egress trafiğini kontrol edebilir.

2.1. Ingress (Giriş) Politikaları

Ingress politikaları, belirli bir pod’a dışarıdan gelen trafiği kontrol eder. Bu politikalar, podlara yalnızca belirli kaynaklardan gelen trafiğe izin vermek için kullanılır.

Örnek 1: Belirli Podlardan Giriş Trafiğine İzin Verme

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-ingress-from-frontend
namespace: default
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 80

Bu politika, default isim alanındaki backend etiketine sahip podlara, frontend etiketine sahip podlardan gelen 80 numaralı porttaki TCP trafiğine izin verir.

2.2. Egress (Çıkış) Politikaları

Egress politikaları, bir pod’dan dışarıya doğru giden trafiği kontrol eder. Bu politikalar, podlardan yalnızca belirli hedeflere giden trafiğe izin vermek için kullanılır.

Örnek 2: Belirli IP Bloklarına Çıkış Trafiğine İzin Verme

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress-to-database
namespace: default
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 192.168.0.0/16
ports:
- protocol: TCP
port: 5432

Bu politika, default isim alanındaki backend etiketine sahip podlardan, 192.168.0.0/16 IP bloğundaki 5432 numaralı portta bulunan veritabanı sunucusuna giden TCP trafiğine izin verir.

2.3. Hem Ingress Hem Egress Politikaları

Bazı durumlarda, hem giriş hem de çıkış trafiğini kontrol etmek gerekebilir. Bu tür politikalar, daha kapsamlı bir güvenlik sağlar.

Örnek 3: Belirli Podlardan Giriş ve Belirli IP Bloklarına Çıkış Trafiğini İzin Verme

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: frontend-policy
namespace: default
spec:
podSelector:
matchLabels:
app: frontend
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: backend
ports:
- protocol: TCP
port: 80
egress:
- to:
- ipBlock:
cidr: 192.168.1.0/24
ports:
- protocol: TCP
port: 3306

Bu politika, frontend etiketine sahip podlara, backend etiketine sahip podlardan gelen 80 numaralı porttaki TCP trafiğine izin verir. Ayrıca, frontend podlarının 192.168.1.0/24 IP bloğundaki 3306 numaralı portta bulunan MySQL sunucusuna giden TCP trafiğine izin verir.

3. Uygulama ve Kullanım Örnekleri

Kubernetes ağ politikalarının uygulanması, ağ güvenliğini artırmak ve ağ trafiğini optimize etmek için gereklidir. Aşağıda, çeşitli kullanım senaryolarına ilişkin örnekler verilmiştir.

3.1. Güvenlik Gruplarının Tanımlanması

Ağ politikaları, podlar arasında güvenlik grupları oluşturmak için kullanılabilir. Örneğin, yalnızca belirli mikro hizmetlerin birbirleriyle iletişim kurmasına izin veren politikalar tanımlanabilir.

3.2. Trafik Yönetimi ve Optimizasyonu

Ağ politikaları, ağ trafiğini optimize etmek için kullanılabilir. Örneğin, yoğun trafikli hizmetlerin belirli podlara yönlendirilmesi ve diğer podların bu trafikten korunması sağlanabilir.

Ağ Gecikmesi ve Performans

Ağ politikalarının uygulanması, ağ gecikmesi üzerinde de etkili olabilir. Ek kontrol ve filtreleme mekanizmaları, ağ trafiğinin işlenmesi süresini uzatabilir, bu da gecikmeye neden olabilir.

  • Filtreleme Gecikmesi: Ağ politikalarının uygulanması, her bir paketin politikalar doğrultusunda filtrelenmesini gerektirir. Bu ek adım, ağ paketlerinin işlenme süresini uzatabilir ve gecikmeye yol açabilir.
  • Yönlendirme Gecikmesi: Politikaların uygulanması, trafiğin belirli yollar üzerinden yönlendirilmesini gerektirebilir. Bu, ağdaki yönlendirme sürelerini artırabilir.

Ağ Bant Genişliği Kullanımı

Ağ politikaları, belirli trafik yollarını kısıtlayarak veya yönlendirerek ağ bant genişliği kullanımını etkileyebilir. Politikaların uygulanması, belirli yolların yoğun kullanılmasına neden olabilir, bu da bant genişliği kullanımını optimize etme gereğini doğurabilir.

  • Yoğunluk Dağılımı: Belirli politikaların uygulanması, belirli ağ yollarının daha yoğun kullanılmasına neden olabilir. Bu, ağda dengesiz bant genişliği kullanımına yol açabilir.
  • Trafik Yönlendirme: Belirli trafik yollarının kısıtlanması, alternatif yolların daha fazla kullanılmasına neden olabilir. Bu, ağ bant genişliği kullanımını etkileyebilir.

Ölçeklenebilirlik

Ağ politikalarının karmaşıklığı ve sayısı arttıkça, Kubernetes kümesinin ölçeklenebilirliği üzerinde de etkileri olabilir. Politikaların yönetimi ve uygulanması, büyük ölçekli dağıtımlarda zorluklar yaratabilir.

  • Politika Yönetimi: Büyük ölçekli dağıtımlarda, çok sayıda ağ politikasının yönetimi karmaşık hale gelebilir. Bu, yönetim yükünü artırabilir.
  • Uygulama Performansı: Çok sayıda politikanın uygulanması, ağ performansını ve sistemin genel ölçeklenebilirliğini olumsuz etkileyebilir.

Sonuç

Kubernetes ağ politikalarının uygulanması, ağ güvenliğini ve trafiğin yönetimini iyileştirmek için önemli avantajlar sunar. Ancak, bu politikaların kaynak kullanımı üzerinde de belirli etkileri vardır. CPU ve bellek kullanımı artışı, ağ gecikmesi, bant genişliği kullanımı ve ölçeklenebilirlik gibi faktörler, ağ politikalarının uygulanmasında dikkate alınması gereken önemli unsurlardır. Bu etkilerin anlaşılması, Kubernetes ağ politikalarının etkin ve verimli bir şekilde kullanılmasına yardımcı olabilir.

--

--