Sevgili dostum, Kubernetes’i sen yaptın
(macchaffee.com)-
Arkadaşa mektup
- Kubernetes’ten kaçınmaya çalışırken sonunda benzer bir sistem kurmuş olduğunu anlatıyor.
- Arkadaşı, basit konteyner çalıştırma için “sıkıcı teknoloji”yi seçmek istedi, ancak sonunda karmaşık betikler ve yapılandırmalar yüzünden sorunlar yaşadı.
- Docker Compose’a geçmenin de tüm sorunları çözmediğini; dağıtım, rolling update, rollback ve scaling için ayrı çözümlere ihtiyaç duyulduğunu fark etti.
-
Sunucu ölçekleme ve ağ karmaşıklığı
- İkinci bir sunucuya genişleme ihtiyacı hissetti.
- Servis keşfi için Tailscale gibi overlay network’leri kullanmayı denedi.
- Ağ karmaşıklığını çözmeye çalışırken sonunda daha fazla sorunla karşılaştı.
-
Bakım ve otomasyon
- Betikleri yazan kişi tatile gittiğinde ya da işten ayrıldığında, karmaşık yapılandırmayı ve belgelenmemiş ayar değişikliklerini kimin yöneteceği sorusu ortaya çıktı.
- Özel betiklerin bakım sorununu çözmek için Ansible kullanarak VM’leri immutable ve sürüm kontrollü hale getirdi.
- Kubernetes kullanmadığı için bakımın daha kolay olacağını düşündü.
-
Konteyner oluşturma ve güvenlik sorunları
- Programatik olarak başka konteynerler oluşturma gereksinimi ortaya çıktı.
- Docker socket’ini web uygulamasına mount etmenin güvenlik açısından riskli olması nedeniyle, bunu çözmek için ayrı bir servis yazdı.
- Docker API’sinin yalnızca güvenli kısımlarını açığa çıkaran ayrı bir servis yazarak sorunu çözdü.
-
Sonuç
- Sonunda Kubernetes’e benzer bir sistem inşa etmiş olduğunu fark etti.
- Standart yapılandırma formatı, dağıtım yöntemi, overlay network, servis keşfi, immutable node’lar ve API server içeren karmaşık bir sistemi tamamladı.
- Sonunda Kubernetes’e benzer bir sistem inşa etmiş olduğunu fark etti.
-
PS
- Kubernetes’in yerine daha iyi çözümler olabileceği ihtimalini reddetmiyor.
- Ancak, Kubernetes’i karmaşık diye damgalamadan önce, çözmeye çalıştığı problemleri yeterince anlamayı tavsiye ediyor.
8 yorum
Dağıtım devir teslimini çözmek için Kubernetes’in devreye alınmasından bahsedilmesini pek anlayamıyorum.
Bakım ve otomasyon kod seviyesinde kolayca yapılabiliyor.
Infra as code da mümkün.
EKS gibi yönetilen k8s hizmet ortamlarında load balancer da var ve Route 53 entegrasyonu da mümkün, ancak self-hosted k8s'te ne bir load balancer implementasyonu oluyor ne de DNS entegrasyonu yeterince esnek oluyor. k8s yönetim ekibinin ayrı olduğu şirketlerde bahsettiğiniz avantajlar gerçekten geçerli olabilir.
İlk bakışta iyi bir çözüm gibi görünse de, pratikte kullanınca her durumda çalışmıyor.
k8s yönetim ekibi olmasa da kullanımı kolay. EKS kullanırsanız yeterli.
Bu, sadece kaynak kodu verirsen devir teslimin tamamlandığını iddia etmekle aynı şey değil mi? İş kılavuzu ve işin yürütülme geçmişi hâlâ gerekli gibi görünüyor.
Infrastructure as Code zaten sadece kaynak kodunu verip işi bitirmek için var. Tabii ki hangi kod olursa olsun, temel düzeyde dokümantasyonun yapılmış olması gerekir.
Kaynak kodu iyi yazılmışsa ve belgeler iyi hazırlanmışsa mümkündür.
İş kılavuzu ile işin yürütülme geçmişinin ayrıca bulunması faydalı olabilir, ancak bu bu yazıdan farklı bir konu gibi görünüyor.
Hacker News görüşü
Birden fazla şirkette shell script kullanarak dağıtımı başarıyla gerçekleştirme deneyimi var
Kubernetes, YAML dosyalarını yönetmek için iki ya da üç tam zamanlı çalışan gerektiriyor
Basit olanın kırılgan olduğu düşüncesi yanlıştır
Kubernetes’in gerekli olmadığı durumlar da vardır
Shell script’lerle iptables kurallarını ve sysctl düzenlemelerini kolayca yönetmek mümkündür
Kubernetes’i eleştirmek profesyonellik dışı değildir
Kendi geliştirilmiş bir sistemin tüm kısıtlarının maliyet, genel amaçlı bir çözümün tüm esnekliğinin de avantaj olduğu varsayımı yanlıştır
Kubernetes’in sorunu, sayısız açık kaynak kütüphanenin sistemi anlamayı zorlaştırması ve bug’lara yol açmasıdır
Kubernetes’in öğrenme eğrisini aşmış olanlar, karmaşıklığın o kadar da kötü olmadığını söylüyor