EKS Üzerinde Multi-Tenant Yapı: Tek Kümede Çok Müşteri
EKS Üzerinde Multi-Tenant Yapı
Her müşteri veya proje için ayrı bir EKS kümesi kurmak maliyetli ve yönetimi zor olabilir. Bunun yerine, tek bir büyük kümeyi birden fazla kiracıya (Tenant) paylaştırmak (Multi-Tenancy) daha verimlidir.
Ancak Kubernetes varsayılan olarak "güvenli bir komşuluk" sunmaz. İzolasyonu sağlamak için şu katmanları oluşturmalısınız:
1. Namespace İzolasyonu
Her tenant için ayrı bir Namespace oluşturun. Bu, kaynakların mantıksal ayrımını sağlar.
2. Ağ İzolasyonu (Network Policies)
Tenant A'nın podlarının Tenant B'nin veritabanına erişmesini engellemek için Network Policy kullanın. "Varsayılan olarak Namespace dışına çıkışı yasakla" (Default Deny) kuralı uygulayın.
3. Kaynak Kotaları (Resource Quotas)
Bir tenant'ın tüm CPU/RAM'i tüketip diğerlerini aç bırakmasını (Noisy Neighbor) engellemek için her Namespace'e ResourceQuota ve LimitRange tanımlayın.
4. RBAC ve Erişim
Her tenant'a sadece kendi namespace'ini yönetebileceği bir Role ve RoleBinding atayın. Küme geneli (ClusterRole) yetkiler vermeyin.
5. Node İzolasyonu (Opsiyonel)
Çok hassas izolasyon gerekiyorsa, Node Selector veya Taint/Toleration kullanarak, Tenant A'nın podlarının sadece Tenant A'ya ayrılmış node'larda çalışmasını sağlayabilirsiniz (Hard Multi-tenancy).
Bu yapı, AWS Danışmanlığı verdiğimiz SaaS firmalarının altyapı maliyetlerini %40-%60 oranında düşürmektedir.