Knative, bulutta, şirket içinde veya üçüncü taraf bir veri merkezinde çalışabilen sunucusuz iş yükleri oluşturmak, dağıtmak ve yönetmek için Kubernetes platformunu temel alan açık kaynaklı bir projedir. Başlangıçta Google tarafından IBM, Pivotal, Red Hat ve SAP gibi endüstri devleri de dahil olmak üzere 50'den fazla şirketin katkılarıyla başlatıldı.
Knative, trafik yönlendirmesini, revizyonları ve metrikleri yönetmek için Google tarafından geliştirilen açık kaynaklı bir hizmet ağı olan Istio'ya güveniyor. Knative'in Istio ile entegrasyonu, kapsayıcılı ve sunucusuz iş yüklerinin İnternet'te gösterilmesini, izlenmesini ve kontrol edilmesini kolaylaştırır. Bu entegrasyon aynı zamanda geliştiricilerin verilerinin aktarım sırasında şifrelenmesini sağlar.
Knative, diğer Kubernetes tabanlı çerçevelerin tüm en iyi uygulamalarını tek bir çerçevede toplar. Kubernetes uzantısı gibi çalışan Knative, her türlü modern sunucusuz iş yükünü kapsar. Tüm bu iş yüklerini ortak bir topoloji ve terminoloji kümesi altında birleştirir.
Knative geliştiricileri, işlevleri, uygulamaları ve kapsayıcı iş yüklerini dağıtmak için seçtikleri herhangi bir dili, deyimi ve çerçeveyi kullanabilir. Knative, DockerOps, ManualOps ve GitOps gibi ortak geliştirme modellerinin yanı sıra Ruby on Rails, Django, Spring ve diğerleri gibi araçları ve çerçeveleri destekler.
Knative ne için kullanılır?
Knative, Kubernetes ile yerel olarak tümleştirilen çeşitli açık kaynaklı araçlar sağlar. Açık kaynak çerçevesini kullanarak, geliştiriciler kapsayıcı tabanlı sunucusuz uygulamalar oluşturup dağıtabilir ve ardından bu uygulamaları bulut sağlayıcıları arasında taşıyabilir. Knative, şirketlerin dahili Kubernetes kümelerinde sunucusuz işlevler dağıtmasına olanak tanır.
Knative, bulut tabanlı geliştirmeye odaklanan ve temel kapsayıcı platformu olarak Kubernetes'i kullanan sunucu tarafındaki geliştiriciler tarafından kullanılabilir. Knative, kapsayıcı tabanlı ortamları yönetmek için Kubernetes'i yapılandırırken sorun yaşayan geliştiricilerin yanı sıra kapsayıcıları kullanarak mikro hizmet tabanlı bir yaklaşım benimseyen geliştiricilere de yardımcı olabilir.
Knative, kapsayıcı oluşturma sürecini otomatikleştirerek geliştiricilere yardımcı olur. Geliştiricilerin uygulamalarını oluşturma, dağıtma ve yönetme konusunda endişelenmelerine gerek kalmadan kod yazmaya odaklanmalarını sağlar. Knative, DevOps ekiplerinin çalışmaya başlamasını sağlamak için bir işlem hattı otomasyon projesinin parçası olarak kullanılabilir.
Knative ayrıca daha kolay müşteri sunumları sağlar. Knative, geliştiricilerin yeni kapsayıcı revizyonlarını önce küçük bir kullanıcı grubuna göstermesine olanak tanıyarak kullanıcı sayısını kademeli olarak artırır. Herhangi bir sorun varsa, geliştiriciler hızlı bir şekilde eski sürümlere geri dönebilir.
Knative özellikleri
Knative, Kubernetes'teki bulutta yerel uygulamalar için otomatik ölçeklendirme, küme içi derlemeler, sıfıra ölçeklendirme ve olay çerçevesi gibi özellikler sunar.
Knative, geliştiricilerin sunucusuz uygulamalarını Kubernetes kümelerinde dağıtmasına ve yönetmesine olanak tanıyan "ilkel" olarak da bilinen iki ana bileşen içerir.
Hizmet: Serving primitive, geliştiricilerin sunucusuz uygulamaları Knative hizmetleri olarak dağıtmasına ve sıfır örneğe kadar bile otomatik olarak ölçeklendirmesine yardımcı olur. Knative, geliştiricilerin sunucusuz ve kapsayıcılı iş yüklerini kullanıma sunmak için Istio'yu kullanıyor. Geliştiriciler yönetilen Knative eklentisini yüklediğinde, yönetilen Istio eklentisi de otomatik olarak yüklenir. Geliştiriciler, hangi trafiğin hizmetlerinin belirli sürümlerine yönlendirildiğini kontrol etmek için Istio'nun akıllı yönlendirme ve trafik yönetimi işlevini kullanabilir. Geliştiriciler daha sonra yeni uygulama sürümlerini daha kolay test edip kullanıma sunabilir veya A/B testi gerçekleştirebilir.
Etkinlik: Olay İlkeli, geliştiricilerin olay odaklı uygulamalar oluşturmasına yardımcı olur. Örneğin, bir geliştirici GitHub ana deposuna her kod gönderildiğinde bir uygulamanın yeni bir derlemesini başlatmak isteyebilir. Veya belki de bir geliştirici yalnızca sıcaklık 32 derece Fahrenheit veya daha düşük bir dereceye düşerse sunucusuz bir uygulama çalıştırmak ister. Geliştiriciler, belirli bir olayın gerçekleşmesi durumunda uygulamalarının derlemesini ve dağıtımını otomatikleştirmek için Eventing primitive'ı sürekli tümleştirme/sürekli teslim (CI/CD) işlem hatlarıyla tümleştirebilir.
Knative açık kaynak projesi, Build primitive'ı kullanımdan kaldırdı ve Tekton açık kaynak projesiyle değiştirdi. Yapı İlkelliği, bir geliştiriciye kaynak kodundan kapsayıcı görüntüsüne kadar bir uygulamanın derleme işlemini otomatikleştirmek için araçlar sağladı.
Knative projesinden kaynaklanan Tekton projesi, kullanımdan kaldırılan Knative Build ilkelinin üzerine gelişmiş CI/CD özellikleri sunar. Tekton, CI/CD sistemleri oluşturmak için kullanılan esnek bir Kubernetes yerel açık kaynak çerçevesidir. Tekton, geliştiricilerin CI/CD araçlarını ve süreçlerini diller, satıcılar ve dağıtım ortamları arasında standartlaştırmalarını sağlamak için açık kaynaklı bileşenler sunar.
Knative vs Kubeless
Kubeless, bir geliştiricinin temel alınan altyapı hakkında endişelenmesine gerek kalmadan küçük kod parçaları dağıtmasına olanak tanıyan Kubernetes yerel sunucusuz bir çerçevedir. Bir Kubernetes kümesinin üzerine dağıtılır ve API yönlendirme, otomatik ölçeklendirme, izleme ve sorun giderme sağlamak için Kubernetes kaynaklarını kullanır.
Kubeless, HTTP ve olay tabanlı işlev tetikleyicilerini destekler. Sunucusuz bir eklentiye, grafiksel bir kullanıcı arayüzüne ve Python ve Node.js dahil olmak üzere birden fazla çalışma zamanına sahiptir.
Kubeless, bir geliştiricinin çalıştırmak istediği işlevleri kaydetmek, silmek ve listelemek için komutları kabul eder. Kubeless, geliştiricilerin kapsayıcıları ve bölmeleri ayarlamasını kolaylaştırır.
Kubeless, Özel Kaynak Tanımı kullanarak özel Kubernetes kaynakları gibi işlevler oluşturur. Kubeless daha sonra bu özel kaynakları izleyen bir küme içi denetleyici çalıştırır. Denetleyici, isteğe bağlı olarak çalışma zamanlarını başlatır ve işlevlerin kodlarını çalışma zamanlarına dinamik olarak enjekte eder, böylece HTTP üzerinden veya yayımlama/abone olma mesajlaşma mekanizması aracılığıyla kullanılabilirler. Yayınlama/abone olma modelindeki bir konuya gönderilen herhangi bir ileti, konunun her abonesi tarafından hemen alınır.
Knative, Kubeless'ten daha hızlı benimsenir ve geliştiriciler arasında Kubeless'ten daha fazla kabul görme şansına sahiptir. Yalnızca piyasaya sürülmesinin zamanlaması nedeniyle değil (sunucusuz benimsemenin arttığı bir dönemde piyasaya sürüldü), aynı zamanda konteynerli ortamlarda zaten yaygın olarak dağıtılan popüler açık kaynaklı bileşenler olan Kubernetes ve Istio'yu kullandığı için.
Hem Kubeless hem de Knative, geliştiricilerin lambda işlevlerini, yani küçük anonim işlevleri yönetmek ve çalıştırmak için Kubernetes ve Istio'yu kullanmasını kolaylaştıran yapı taşları kümeleri sunar.
Kubeless, bazı kodlardan bir görüntü oluşturur ve Kubernetes'te başlatır. Knative de aynısını yapar, ancak daha modüler bir yaklaşım kullanarak farklı bileşenlerin farklı dağıtım senaryolarına bağlanmasını ve uyum sağlamasını sağlar. Knative ve Kubeless, sunucusuz / görev işleme araçları olarak kategorize edilir.
Knative vs Lambda
AWS Lambda, olaylara yanıt olarak geliştiricilerin kodunu çalıştıran ve temel alınan işlem kaynaklarını otomatik olarak yöneten bir işlem hizmetidir. Geliştiriciler, AWS Lambda'yı kullanarak diğer AWS hizmetlerini özel mantıkla genişletebilir. Alternatif olarak, geliştiriciler AWS ölçeğinde, performansında ve güvenliğinde çalışan kendi arka uç hizmetlerini oluşturabilir.
Lambda barındırılan ve paketlenmiş bir araç olsa da, Knative bir dizi yazılım yapı taşıdır. Bu nedenle, Knative Lambda'dan birkaç yönden farklıdır. Örneğin, geliştiriciler bunu yerel olarak çalıştırabilir veya AWS veya Google da dahil olmak üzere herhangi bir yerde bir Kubernetes kümesine yükleyebilir.
Buna ek olarak, Knative ayrıca taşınabilirlik sunar, yani geliştiriciler tek bir bulut sağlayıcısına kilitlenmez. Belirli satıcılara özgü özelliklere izin veren eklentiler olsa da, ana deneyim ve çalışma zamanı davranışı her bulut için aynıdır.