Kubernetes ve Docker ile Ölçeklenebilir Mikroservis Mimarisi Kurulumu
Geleneksel monolitik yazılım mimarileri, yüksek trafik altında ve hızlı yayın süreçlerinde esneklik kaybına yol açar. Cloud-native dönüşümün merkezinde yer alan Kubernetes (K8s), konteynerize edilmiş uygulamaların dağıtımını, ölçeklenmesini и yönetimini otomatikleştirir.
1. Kubernetes Temel Bileşenleri
Kubernetes kümesi (cluster), Master Node (Control Plane) ve Worker Node olmak üzere iki ana katmandan oluşur. Pod'lar, uygulamanızın en küçük çalıştırılabilir birimleridir.
"Konteyner orkestrasyonu, altyapı karmaşıklığını soyutlayarak geliştiricilerin yalnızca kod kalitesine odaklanmasını sağlar."
Örnek Deployment YAML Yapılandırması
Aşağıdaki yapılandırma dosyası, bir Nginx web sunucusunu 3 ayrı Pod üzerinde yatayda otomatik ölçeklendirilecek şekilde tanımlar:
kind: Deployment
metadata:
name: gtr-web-deployment
spec:
replicas: 3
selector:
matchLabels:
app: gtr-web
template:
metadata:
labels:
app: gtr-web
spec:
containers:
- name: nginx
image: nginx:1.25-alpine
ports:
- containerPort: 80
2. Pod Auto-Scaling ve Yük Dengelenmesi
Horizontal Pod Autoscaler (HPA), işlemci (CPU) ve bellek (RAM) kullanım oranlarına göre Pod sayısını dinamik olarak artırır veya azaltır.
| Strateji | Avantajı | Kullanım Senaryosu |
|---|---|---|
| Horizontal Scaling (HPA) | Sıfır Kesinti, Yüksek Esneklik | Değişken Trafik Yükleri |
| Vertical Scaling (VPA) | Doğrudan Kaynak Verimliliği | Veritabanı / Cache Servisleri |
| Cluster Autoscaler | Fiziksel Sunucu Maliyet Optimizasyonu | Bulut Sağlayıcı Altyapıları |
3. Helm Chart İle Paket Yönetimi
Karmaşık Kubernetes manifest dosyalarını tek bir paket üzerinden yönetmek için Helm kullanılır. Helm chart'ları sayesinde sürüm kontrolleri (rollback) ve ortam bazlı (staging/production) değişkenler kolayca konfigüre edilebilir.
- Ingress Controller: HTTP/HTTPS trafiğini doğru küme içi servislere yönlendirir.
- ConfigMap & Secrets: Hassas şifre и yapılandırma verilerini uygulama kodundan ayırır.
- Prometheus & Grafana: Küme performansını ve kaynak kullanımını anlık izler.
Sonuç
Kubernetes ile oluşturulan cloud-native altyapılar, yüksek erişilebilirlik (High Availability) ve kesintisiz canlıya alma (Zero-Downtime Deployment) avantajı sunar.