
Kubernetes'e geçiş, çoğu zaman düşünülenden daha karmaşık. Zor olan K8s'in kendisi değil; etrafında verilmesi gereken onlarca mimari karar. Son 3 yılda 9 farklı şirketi K8s'e taşıdık — fintech'ten e-ticarete, 10 mikroservislik yapılardan 100'ün üzerindekilere. İşte her projede tekrar eden 7 ders.
1. Stateful İş Yüklerini Erken Düşünün
Database'ler, queue'lar, file storage — bunları K8s içinde mi yoksa managed servislerde mi tutacağınızı projenin başında karar verin. Bizim varsayılan tavsiyemiz net: stateless servisleri taşıyın, veritabanını managed serviste (RDS, Cloud SQL) bırakın. K8s operatörleri olgunlaşıyor ama 7/24 veritabanı operasyonu ayrı bir uzmanlık; migration'ın ortasında öğrenilecek bir şey değil.
2. Observability Önce, Migration Sonra
Prometheus, Grafana ve distributed tracing kurulmadan migration başlatmayın. Sebep basit: eski ortamın baseline metrikleri elinizde yoksa, taşıma sonrası "sistem yavaşladı mı?" sorusuna veriyle cevap veremezsiniz ve her tartışma hisse dayanır. Önce ölçün, sonra taşıyın, sonra karşılaştırın.
3. CI/CD Yeniden Yazılır
Eski deployment script'leriniz büyük ihtimalle çöpe gidecek; bunu kabul edin ve baştan zaman ayırın. Deneyimimizde CI/CD'nin yeniden kurulması, toplam migration eforunun yaklaşık üçte birini alıyor. Helm mi Kustomize mi kararını erken verin ve GitOps'u (örneğin Argo CD) birinci günden kurun — cluster'a elle dokunulmasını baştan engellerseniz, config drift diye bir sorununuz hiç olmaz.
4. Maliyet Sürprizleri
Egress traffic, persistent volume'lar, control plane ücretleri, boşta bekleyen node'lar — TCO'yu migration'dan önce modelleyin. Acı gerçek şu: cluster autoscaler ve doğru ayarlanmış resource request/limit değerleri olmadan, K8s eski VM kurulumunuzdan daha pahalıya gelebilir. Maliyet görünürlüğü için namespace bazlı etiketleme ve bir maliyet aracını (Kubecost vb.) ilk haftadan ekleyin.
5. Network Policy
Default deny + explicit allow. Gördüğümüz cluster'ların çoğu düz bir ağla canlıya çıkıyor: herhangi bir pod ele geçirildiğinde tüm servislere erişebiliyor. Namespace bazlı izolasyonu ve servisler arası açık izin listelerini ilk günden kurun; canlıya çıktıktan sonra sıkılaştırmak, her seferinde bir şeyleri kırma riskini taşır.
6. Image Boyutları
Multi-stage Docker build'lerle image boyutlarını %70'in üzerinde küçültebilirsiniz; base olarak distroless veya alpine düşünün. Bu bir estetik tercih değil: küçük image, hızlı pod başlatma demek — yani autoscaling gerçekten işe yaradığında (trafik patlamasında) saniyeler kazanırsınız. Bonus: daha küçük saldırı yüzeyi ve daha hızlı güvenlik taramaları.
7. Disaster Recovery
Velero ile cluster yedekleri ve çoklu-region stratejisi. Ama asıl test şu soru: "Bu cluster'ı sıfırdan kaç saatte ayağa kaldırabiliyoruz?" Cevabı tatbikatla doğrulanmamış her DR planı, kağıt üzerinde kalmış demektir. Cluster'ınız Terraform gibi IaC ile tarif edilmemişse bu süre günlerle ölçülür. DR planınız migration tamamlanmadan hazır ve test edilmiş olmalı.
Sonuç
Kubernetes hedef değil, araç. Doğru planlanırsa ölçeklenme ve taşınabilirlik kazandırır; plansız girilirse pahalı bir karmaşıklık katmanı olur. Migration yol haritanızı çizerken bu 7 maddeyi bir ön kontrol listesi olarak kullanın — ya da bu yoldan 9 kez geçmiş Avva Mobile ekibiyle bir keşif görüşmesi yapın.



