GCP’de Kubernetes Load Balancer ile Pod Maruz Kalması (Imperatif Yöntem)
Google Kubernetes Engine (GKE) üzerinde çalışan bir pod’unuzu dış dünyaya nasıl açacağınızı merak ediyor musunuz? Bu makale, Google Cloud Platform’da (GCP) Kubernetes load balancer servisi kullanarak pod’larınızı güvenli ve ölçeklenebilir bir şekilde nasıl maruz bırakabileceğinizi, adım adım, imperative yöntemle anlatmaktadır. GKE’nin sunduğu güçlü yeteneklerden yararlanarak uygulamalarınızı geniş kitlelere ulaştırmanın yollarını keşfedeceğiz. Bu rehber, yeni başlayanlardan deneyimli Kubernetes kullanıcılarına kadar herkes için faydalı bilgiler sunmaktadır.
GKE ve Load Balancer Hizmetleri Nedir?
Öncelikle, bazı temel kavramları açıklığa kavuşturalım. Google Kubernetes Engine (GKE), Google Cloud Platform’da yönetilen bir Kubernetes hizmetidir. Kubernetes, konteynerleştirilmiş uygulamalarınızı yönetmek ve ölçeklendirmek için kullanılan açık kaynaklı bir platformdur. Bir pod, Kubernetes’te uygulamanızın çalıştığı en küçük birimidir. Birden fazla konteyner içerebilir, ancak genellikle tek bir konteyner içerir. Load balancer ise, gelen trafiği birden fazla pod arasında dağıtan bir ağ bileşenidir. Bu, uygulamanızın yüksek erişilebilirliğini ve ölçeklenebilirliğini sağlar. GCP’nin sunduğu load balancer servisi, bu dağıtımı otomatik ve verimli bir şekilde yönetir.
Bu makalede, imperative yöntem kullanarak bir load balancer servisi oluşturacağız. Imperative yöntem, Kubernetes’in kaynaklarını doğrudan tanımlayıp oluşturmayı içerir. Bu, declarative yöntemin aksine, her bir adımın ayrı ayrı tanımlanması anlamına gelir. Declarative yaklaşımın avantajlarına rağmen, imperative yaklaşım bazı durumlarda daha fazla kontrol sağlar ve belirli senaryolar için daha uygundur.
Kubernetes Temelleri: Podlar ve Servisler
Kubernetes’in mimarisini anlamak, load balancer’ı etkin bir şekilde kullanmak için elzemdir. Pod’lar, uygulama konteynerlerinizin çalıştığı en temel birimlerdir. Birden çok pod’dan oluşan bir uygulamayı düşünürsek, bunların dış dünyadan erişilebilir olması için bir “servis” tanımlamamız gerekir. Servisler, birden fazla pod’u soyutlayarak tek bir giriş noktası sunar. Load balancer, bu servis ile entegre olarak gelen trafiği pod’lar arasında dengeli bir şekilde dağıtır. Bu mimari, uygulamanın yüksek erişilebilirliğini ve ölçeklenebilirliğini sağlar. Örneğin, bir pod arızalandığında, load balancer otomatik olarak trafiği diğer çalışan pod’lara yönlendirir.
Ayrıca, Kubernetes’in namespace kavramı da önemlidir. Namespace’ler, kaynakları mantıksal olarak gruplandırmak için kullanılır. Bu, farklı takımların veya projelerin kaynaklarını birbirinden ayırmak için faydalıdır. Load balancer servisi oluştururken, hangi namespace’te çalıştığını belirlemek önemlidir.
Adım Adım: GCP’de Load Balancer ile Pod Maruz Bırakma
Şimdi, adım adım bir load balancer servisi oluşturarak pod’umuzu dış dünyaya açalım. Bu örnekte, bir Node.js uygulamasını kullanacağız, ancak aynı prensipler diğer uygulamalar için de geçerlidir.
1. Adım: Kubernetes Kümesi Oluşturma
Öncelikle, GCP konsolunu kullanarak bir GKE kümesi oluşturmalısınız. Küme oluşturma sırasında, “Cluster networking” bölümünde, bir load balancer oluşturmayı seçmeniz gerekecektir. Bu adım, kümeniz için gerekli olan alt yapıları oluşturacaktır. Daha fazla bilgi için Google Cloud Platform’un resmi dokümantasyonuna bakabilirsiniz.
2. Adım: Pod’u Oluşturma
Ardından, çalıştırmak istediğiniz pod’u oluşturmanız gerekmektedir. Aşağıdaki kubectl komutu, bir Node.js uygulamasını çalıştıran bir pod oluşturur. Bu örnekte, 8080 numaralı port’u dinleyen bir Node.js uygulamasını varsayıyoruz.
kubectl create deployment my-app --image=nginx:latest --replicas=3
3. Adım: Service Oluşturma
Pod'unuzu dış dünyaya açmak için bir Kubernetes Service oluşturmalısınız. Aşağıdaki komut, bir LoadBalancer tipi servis oluşturur. Bu, GCP'nin otomatik olarak bir load balancer oluşturmasını sağlar. type: LoadBalancer kısmı bu işlemi tetikler. --port seçeneği, pod'un hangi portunu dış dünyaya açacağınızı belirtir. --target-port seçeneği ise, pod içinde hangi portun dinlendiğini belirtir.
kubectl expose deployment my-app --type=LoadBalancer --port=80 --target-port=8080
4. Adım: Load Balancer IP Adresini Alma
Servis başarıyla oluşturulduktan sonra, kubectl get service komutu ile load balancer'ın IP adresini alabilirsiniz. Bu IP adresi, uygulamanıza dış dünyadan erişmenizi sağlar.
kubectl get service my-app
Bu komut, benzer aşağıdaki çıktıyı verecektir:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-app LoadBalancer 10.98.240.105 35.197.155.42 80:30000/TCP 3m
EXTERNAL-IP alanındaki adres, uygulamanıza erişmek için kullanacağınız kamuya açık IP adresidir.
İleri Düzey Konular: Güvenlik ve Ölçeklendirme
Uygulamanızın güvenliğini sağlamak için, load balancer ile birlikte güvenlik duvarı kuralları kullanmanız önemlidir. GCP'nin sunduğu firewall kuralları ile belirli IP adreslerinden veya portlardan gelen trafiği filtreleyebilirsiniz. Bu, yetkisiz erişimi engellemenize yardımcı olur. Daha güvenli bir yapı için, HTTPS kullanarak trafiği şifrelemeniz önerilir.
Uygulamanızın ölçeklenebilirliğini sağlamak için, Kubernetes'in otomatik ölçeklendirme özelliklerini kullanabilirsiniz. Bu, uygulamanızın talebe göre otomatik olarak ölçeklenmesini sağlar. Yük arttığında, Kubernetes otomatik olarak yeni pod'lar oluşturur ve yük azaldığında, gereksiz pod'ları kaldırır. Bu, kaynakların verimli kullanılmasını ve maliyetlerin azaltılmasını sağlar. Ayrıca, bu sayede yüksek erişilebilirlik de garanti altına alınmış olur.
Gerçek Dünya Senaryoları: Vaka Analizleri
Bir e-ticaret uygulamasını ele alalım. Bu uygulama, yüksek trafik hacmi ile başa çıkabilmelidir. Kubernetes ve load balancer kullanarak, uygulamanın ölçeklenebilirliğini ve yüksek erişilebilirliğini sağlayabiliriz. Yük arttığında, Kubernetes otomatik olarak yeni pod'lar oluşturarak talebi karşılar. Load balancer ise, gelen trafiği bu pod'lar arasında dengeli bir şekilde dağıtır. Bu sayede, uygulamanın performansı düşmeden, yüksek trafik hacmiyle başa çıkılabilir.
Bir diğer örnek ise, bir oyun sunucusudur. Oyun sunucuları, düşük gecikme süresi gerektirir. Kubernetes ve load balancer kullanarak, oyun sunucusunun yüksek erişilebilirliğini ve düşük gecikme süresini sağlayabiliriz. Load balancer, oyuncuları en yakın ve en az yüklü sunucuya yönlendirerek, düşük gecikme süresi sağlar.
Sonuç
Bu makalede, GCP'de Kubernetes load balancer servisi kullanarak pod'larınızı dış dünyaya nasıl açacağınızı anlattık. Adım adım bir rehber sunarak, imperative yöntem ile load balancer'ı nasıl kullanacağınızı gösterdik. Ayrıca, ileri düzey konular ve gerçek dünya senaryoları ile konuyu daha detaylı ele aldık. GCP'nin sunduğu bu güçlü araçlar sayesinde, uygulamalarınızın yüksek erişilebilirliğini, ölçeklenebilirliğini ve güvenliğini sağlayabilirsiniz. Daha fazla bilgi için (https://fatihsoysal.com) inceleyebilirsiniz.
Sıkça Sorulan Sorular
- Load balancer'ın maliyeti nedir? Load balancer'ın maliyeti, kullanılan kaynaklara ve trafiğe bağlı olarak değişir. Detaylı fiyatlandırma bilgileri için Google Cloud Platform'un fiyatlandırma sayfasına bakabilirsiniz.
- HTTPS nasıl yapılandırılır? HTTPS yapılandırması için, bir SSL sertifikası oluşturmanız ve Kubernetes'te secret olarak tanımlamanız gerekir. Daha sonra, servis tanımlamanızda bu secret'ı kullanarak HTTPS trafiğini etkinleştirebilirsiniz.
- Hata ayıklama nasıl yapılır? Hata ayıklama için,
kubectl describe servicevekubectl describe podkomutlarını kullanarak servis ve pod'ların durumunu inceleyebilirsiniz. Ayrıca, pod'ların loglarını inceleyerek sorunları tespit edebilirsiniz. - Farklı load balancer türleri var mı? Evet, GCP farklı load balancer türleri sunar. Bunlar arasında, internal load balancer ve external load balancer bulunur. Uygulamanızın gereksinimlerine göre uygun load balancer türünü seçmeniz önemlidir.
- Ölçeklendirme stratejileri nelerdir? Kubernetes, çeşitli ölçeklendirme stratejileri sunar. Bunlar arasında, otomatik ölçeklendirme, manuel ölçeklendirme ve HPA (Horizontal Pod Autoscaler) bulunur. Uygulamanızın gereksinimlerine göre uygun ölçeklendirme stratejisini seçmeniz önemlidir.
Yazar: Fatih Soysal