Gelişen internet teknolojilerinin altındaki sunucu ekosisteminin kısa tarihi boyuncu bazı kırılmalar yaşandı. Sanallaştırma teknolojisi bunlardan biridir. Bir diğeri ise container teknolojisidir. Şirketler sanallaştırma öncesinde tüm uygulamalarını fiziksel sunucular üzerinden yaparlardı. Ancak bu sistemler zamanla karmaşıklaştı, basit problemleri bile çözemez hale geldiler.
Bu aşamada CRI-O devreye girdi. CRI-O, “Open Container İnitiative” (OCI) görüntülerini ve çalışma zamanları ortamları, kubernetes için, Container Runtime İnterface’in bir uygulamasıdır. Proje 2016 yılında ‘Red Hat’ şirketi tarafından başlatıldı ve 2019 baharında “Cloud Native Computing Foundation”a devredildi.
CRI-O Nasıl Çalışır ?
CRI-O’nun nasıl çalıştığını ve ilgili teknolojilerle nasıl etkileşime girdiğini anlamak için kapsayıcı tabanlı sanallaştırmanın tarihsel gelişimine bir göz atmak gerekiyor. Geliştirmenin temeli, hafif kapsayıcılara dayalı bireysel uygulamaların sanallaştırılmasını ana akım haline getiren Docker yazılımıydı. Daha önce sanallaştırma öncelikle sanal makinelerin kullanımı anlamına geliyordu. Bir sanal makine, eksiksiz bir işletim sistemi içerirken, bir kaç kapsayıcı, paylaşılan bir işletim sistemi çekirdeğine erişir.
Kubernetes, belirli bir kapsayıcı başlatmak ister. Bunun için CRI-O ile temasa geçer. Arayüz kapsayıcının görüntü ve bellek kitaplıklarını ele alır. Çalışma zamanı aynı anda etkinleştirilir. Çalışma zamanı, kapsayıcı kitaplıklarla etkileşime geçer. Çalışma zamanı, Linux çekirdeğine hangi işlemlerin yürütülmesi gerektiğini söyler. Kapsayıcıları durdurmak temelde aynı şekilde çalışır. Başlat komutu yerine konteyneri durdurma komutu verilir.
Docker’den Kubernetes’e Ve CRI-O’ya
Bir kapsayıcı genellikle, bir mikro hizmet sağlayan tek bir uygulama içerir. Pratik kullanımda, eksiksiz bir uygulama gerçekleştirmek için genellikle çok sayıda konteynerin birlikte kontrol edilmesi gerekir. Tüm kap gruplarının koordineli yönetimi orkestraysan olarak bilinir. Docker ile ilgili temel sorunlardan biri yazılımın monolitik yapılmasıydı. Docker arka plan programı kök haklarıyla çalışır ve çok sayıda farklı görevden sorumludur. Kapsayıcı, görüntüleri çalışma zamanı ortamında yürütmeye ve yeni görüntüler oluşturma görevini yürütür. Gerçek bağımsız alanların bu şekilde birleştirilmesi, diğer şeylerin yanı sıra, yazılım geliştirme ilkesini ihlal eder ve uygulamada güvenlik sorunlarına yol açar.
Bu nedenle bireysel bileşenleri ayırmak için çaba sarf edilmiştir. Kubernetes yayınlandığında, kubernetes arka plan programı kubelet, sabit kodlanmış bir docker çalışma zamanı ortamı içeriyordu. Ancak, diğer çalışma zamanlarını destekleme ihtiyacı kısa sürede ortaya çıktı. Bireysel yönlerin modülerleştirilmesi, basitleştirilmiş bir geliştirmenin yanı sıra arttırılmış güvenliğin de ortaya çıkmasına sebep olur. Farklı çalışma zamanlarını kubernetes ile uyumlu hale getirmek için bir ara yüz tanımlandı. Container Runtime İnterface yani CRI-O bu ara yüzün bir uygulamasıdır.
CRI-O Nerelerde Kullanılır ?
CRI-O şu anda esas olarak Red Hat’in Open Shift ürün serisinin bir parçası olarak kullanılmaktadır. Tüm büyük sağlayıcıların bulut platformları için Open Shift uygulamaları mevcuttur. Ayrıca yazılım, halka açık veya özel veri merkezlerinde Open Shift konteyner platformunun bir parçası olarak kullanılabilir.
CRI-O’nun Diğer Çalışma Zamanlarından Farkı Nedir ?
CRI-O, kapsayıcı sanallaştırma alanında nispeten yeni bir gelişmedir. Tarihsel olarak, bir dizi alternatif kapsayıcı çalışma zamanı vardır. Muhtemelen CRI-O’nun en belirleyici benzersiz tarafı, ortam olarak kubernetese tekil odaklanmasıdır. CRI-O ile kubernetes, ek araçlar veya özel kod ayarlamaları olmadan doğrudan kapsayıcıları çalıştırabilir. CRI-O, mevcut OCI uyumlu çalışma zamanlarını desteklemektedir.
CRI-O’nun Zayıf Noktaları
Bir noktada CRI-O gerçekten tüm OCI kapsayıcılarla çalışmalıdır. Ancak bu tam uyumluluğun ne zaman sağlanacağı henüz belli değil. Şimdiye kadar runC ve clear kapsayıcı çalışma zamanları desteklendi. Ek olarak görüntüler oluşturmak istiyorsanız, yine de OpenShift veya Buildah’tan Source to İmage’a güvenmeniz gerekir. CRI-O komut satırı ara yüzü bunun için uygun değildir. Yalnızca CRI-O’yu kontrol etmek için tasarlanmıştır. Ancak bir üretim ortamında konteyner yönetimi bunu yapamaz.
CRI-O, Docker İçin Bir Sorundur
Başlangıçta kubernetesin kapsayıcılar için yalnızca bir çalışma zamanı vardı. Docker sonradan eklendi. Ancak daha fazla çalışma zamanı eklemenin zaman alıcı ve zor olduğu ortaya çıktı. Docker bu nedenle her zaman bir tür özel role sahipti. CRI-O ise bunu sona erdirmeye çalışıyor. Docker bunu fark etti ve konteynerleri “conta inerd” sistemiyle yönetmek için bir seçenek yarattı.