Goodbye!
Photo by Nareeta Martin on Unsplash

Dram ve Gözyaşı: Kubernetes Docker Desteğini Kaldırıyor

Sevi Karaköse
Intertech
Published in
4 min readDec 10, 2020

--

Kubernetes geliştiricileri “Sakin olun, bu kulağa geldiği kadar kötü bir şey değil” derken, ben de kısaca neler olduğunu bir toparlamak istedim.

Kubernetes v1.20, 8 Aralık 2020 tarihinde yayınlandı ve Kubernetes’in gelmiş geçmiş en havalı release’i olarak adlandırılıyor. Bunu da en yoğun feature içeren release olması ve inovasyonun yukarı giden bir trende işaret etmesiyle açıklıyorlar.

Docker konusuna gelirsek, sizi hemen sakinleştireyim, v1.22'nin çıkışı 2021 sonlarına tahminleniyor ve o zamana kadar da Docker desteklenecek. Dolayısıyla önümüzde yaklaşık 1 senelik bir zaman aralığı mevcut. 8 Aralık’ta v1.20 ile gelense sadece bir uyarı mesajı şimdilik. Yine de bu hamle, cloud-native komünitesi içerisinde büyük ses getirdi ve şu an -ben de dahil olmak üzere- herkes bu konu hakkında yazıyor veya konuşuyor.

CNCF Ambassador’larından Kat Cosgrove, aydınlatıcı bir Twitter thread oluşturmuş

Peki 2021 sonunda çıkacak release’de ne olacak?

Kubernetes, çekirdeğindeki 3. parti özelliklerden kurtulmaya çalışıyor ve Kubernetes api’si ile docker engine arasındaki bağlantıyı kuran dockershim’i bu bahsedilen release’de projesinden çıkarıyor. Peki dockershim’in hikayesi nedir? Kubernetes temel olarak container runtime adı verdiğimiz bir bileşen ile image’larınızı indiriyor ve çalıştırıyor. Bir zamanlar Docker neredeyse defakto iken, Kubernetes içerisinde Docker desteği built-in idi fakat zamanla bu tip bağımlılıklardan kurtulmayı başardılar. Bir yandan da Kubernetes geliştiricileri, Docker dışında pek çok farklı runtime desteklemeye çabalarken — çünkü talep ediliyor — her birinin kendine göre çeşitli zorlukları olduğu ve bu işi daha yönetilebilir kılabilmek için, Container Runtime Interface’i devreye aldılar. Bu, Kubernetes’in daha genişletilebilir olması için yapılan bir hamleydi. Fakat ne yazık ki, Docker sevilen bir seçenek olsa da, halen CRI uyumlu değil. Eğer CRI uyumlu değilseniz yine de Kubernetes üzerinde çalışabiliyorsunuz, sadece arada “shim” adı verilen bir katmana ihtiyacınız oluyor. Kubernetes uzun süredir bu desteği yani dockershim’i kendi projesi içerisinde sürdürmeye devam ediyordu, ancak artık çekirdeğindeki fazlalıklardan kurtuluyor.

Haberin sansasyon yaratmasından hemen sonra, Docker ve Mirantis, dockershim’i Kubernetes dışında birlikte yaşatacaklarını açıkladılar. Mirantis de kim derseniz, Docker’ın Enterprise bileşenlerini 2019 sonunda satın alan cloud provider. Kubernetes içerisindeki dockershim’i bırakıp, bu yeni shim’e geçerek sorunun giderileceğini yazmışlar. Ancak henüz bunun nasıl yapılacağını bilemiyoruz. (https://github.com/Mirantis/cri-dockerd Merak edenler için, repo şu an boş 🤨)

Peki Docker desteği kaldırıldığında kimler etkilenecek?

  • Eğer kendi Kubernetes cluster’ınızı kurduysanız ve üzerinde Docker runtime kullanıyorsanız, containerd ve CRI-O gibi desteklenen bir container runtime’a geçmeniz gerekiyor.
  • Eğer Kubernetes üzerinde çalışabilmek için bir şekilde dockershim bağımlılığınız varsa, Mirantis’in sürdüreceği yeni dockershim’i kullanmanız gerekiyor.

Aslında anladığım kadarıyla etkilenenler yalnızca bundan ibaret.

Peki etkilenmeyenler?

  • Docker’ı bayıla bayıla bilgisayarlarında kullanan, güzel UX’inden ve sürekli gelen güncellemelerinden faydalanan sayısız developerdan biriyseniz, Docker’ı gönül rahatlığıyla kullanmaya devam edebilirsiniz, hiçbir sorun yok.
  • GKE, EKS, AKS gibi managed bir Kubernetes cluster yönetiyorsanız, containerd default runtime olduğu için yine etkilenmeyeceksiniz. Eğer nodelarınızda özelleştirmeleriniz çoksa, servis sağlayıcınızla bir konuşmanız öneriliyor.
  • kindseverler. kind, makinanızda docker kullansa da, nodelar içerisinde containerd kullandığı için bu değişiklikten etkilenmediğini açıkladı.

Peki Docker neden halen CRI desteklemiyor?

Bunun yanıtını bir süredir düşünüyorum. Zira Docker, zamanında kendi içerisinden gerekli kısımları çıkarıp containerd’yi oluşturmuş ve bu sayede ilk CRI uyumlu runtime’ı elde etmişti. Sonra da bu projeyi CNCF’e bağışlamıştı.

Süregelen bu tartışmalar öyle bir noktaya vardı ki, bana kalırsa bunları Docker kendisi ilk elden yanıtlamak istediği için bu akşam ilk kez “Docker All-Hands Community Meeting” adında bir etkinlik host etti. Docker üst yönetimi; geliştiriciler ve komüniteyle bir araya geldi, öncelikle strateji ve vizyonunu anlattı, 2020'de nelerle uğraştığından bahsetti, sonra da sorular aldı. Aşağıya etkinlik öncesi toplanan soruları eklemek isterim. “Docker is dead” ciddiyetinde ifadeler kullanılmış.

Etkinlikte bu sorular tek tek yanıtlandı. 1 saatlik toplantıyı özetlemek gerekirse, Docker development lifecycle’a odaklanmak, developer’ın en yakın dostu olmaya devam etmek ve güçlü olduğu alanları parlatmak gibi bir strateji ile hareket ediyor. Mirantis satın alması sonrasında orada kalan kısımlar; yani Docker Swarm, Docker Enterprise ve şimdi Mirantis’in sahip çıktığı dockershim odağında değil. “Docker is dead” sorusu okunurken VP of Engineering Jean-Laurent de Morlhon bayağı bir güldü 😊 Soruyu ise VP of Product Donnie Berkholz yanıtladı: “Kubernetes üzerinde Docker kullanmak istiyorsanız, shim’e ihtiyacınız var. Mirantis bunun desteğini vermeye devam edecek. Biz ise arka planda containerd projesi üzerinde çalışmaya ve destek vermeye devam edeceğiz.”

Docker All-Hands Community Meeting

Konuyu çok da dağıtmadan, etkinlikte müjdelenenlerden aklımda kalanları da paylaşayım:

  • Şanslı bir grubun yüzünü güldürecek haber: Apple Silicon için Docker şu an experimental aşamada, yakında geliyor.
  • Docker Desktop artık devasa update’leri ile gün içerisinde çalışırken belalımız olmayacak. Daha kullanıcı dostu bir yaklaşımla, delta updateler alacağız.
  • Artık Docker, stable ve edge release hatlarını birleştirip, tek bir release hattı üzerinden devam edecek.
  • Canımız ciğerimiz docker-compose hayatına docker compose olarak devam edecek. Jon Snow gibi sürekli babasını ispat zorunda kalmayacak.
  • Docker Hub çevresinde yoğun bir çalışma başlamış gibi görünüyor. İstenen image’ların rahat bulunamaması, güvenli olmaması, ne içerdiğinin net olmaması gibi sıkıntılar var. Bu nedenle Docker Hub Tool isminde bir CLI tool tanıtıldı. Docker ile Docker Hub’ın daha rahat entegrasyonu amaçlanmış.

Bu etkinlik bana, Docker’ın hali hazırda ne kadar fazla ürünü olduğunu (Mirantis’te bıraktıklarını da sayarsak) ve bunlardan bazılarında çok güçlüyken, bazılarında debelenmesinin gerçekten gereksiz olduğunu hatırlattı. Developerların günlük hayatlarında rakipsizken, kalkıp orkestrasyon konusuna odaklanması oldukça gereksizmiş. Kubernetes’teki bu gelişme Docker yöneticilerini pek etkilemişe de benzemiyor. Şu anki hamleler çok dramatik görünse de, Docker’ın ölmeye hiç niyeti yok ve gücünü tek bir yerde odaklamakta da çok haklı.

Etkinliğe linkten ulaşabilirsiniz…

--

--