Serverless | Knative

Hilal Erkan
Turk Telekom Bulut Teknolojileri
3 min readMar 24, 2022

Merhaba, bu yazıda Knative Serverless konusundan kısaca bahsetmeye çalıştım. Keyifli okumalar!

Knative Nedir?

Kubernetes tek başına serverless bir uygulamayı çalıştıramaz. Knative, serverless workloadların Kubernetes clusterlarında çalışmasını sağlayan ve bulut tabanlı serverless uygulamalarını Kubernetes’e deploy etmek, çalıştırmak ve yönetmek için componentler ekleyen open-source bir frameworktür. 2018’de geliştirilmiştir ve Google, IBM ve RedHat gibi şirketler tarafından desteklenmektedir.

Kubernetes, geliştiricilerin farklı toollar kullanarak Kubernetes’in dışında birçok tekrarlayan görevi (uygulamanın source code’unu depolardan çekme, container image oluşturma, ağ bağlantılarını yapılandırma gibi) yerine getirmelerini veya template oluşturmalarını gerektiren kompleks bir araçtır. Knative, bu görevleri Kubernetes içinde otomatikleştiren toollarla bu karmaşıklığı ortadan kaldırır.

Bir developer containerın configlerini YAML dosyasında tanımlar. Knative, containerı oluşturur ve route, ingress, load-balancing ve daha fazlasını yapar. Ayrıca YAML dosyalarına erişebilmek ve düzenleyebilmek için Knative CLI da vardır.

Knative’in üç temel componenti vardır; Build, Serving ve Eventing.

Build

Knative Build componenti, source code’u bir container’a dönüştürme sürecini otomatikleştirir. Bu süreç birden fazla adımı içerir,

  • GitHub gibi bir depodan source code’un çekilmesi
  • Kodun çalışması için gereken kitaplıkların ve ortam değişkenlerinin yüklenmesi
  • Container image’larının build edilmesi ve registry üzerine yerleştirilmesi

Knative, build süreci için Kubernetes API’lerini ve diğer toolları kullanır. Bir developer tüm değişkenleri belirten bir manifest dosyası oluşturur ve container build işlemini otomatikleştirmek için bu manifest dosyasını kullanır.

Serving

Serving componenti, containerları ölçeklenebilir olarak deploy eder ve çalıştırır. Serving bazı önemli özellikler sağlar,

  • Configuration,

Configuration, bir servisin durumunu tanımlar ve korur. Yapılandırmada yapılan her değişiklik yeni bir versiyon oluşturur ve önceki versiyonlar kaydedilir. Bu da sürüm yönetiminin kolaylaştırılmasını sağlar.

  • Intelligent service routing,

Akıllı hizmet yönlendirme olarak adlandırılan bu özellik, developerların trafiği servisin farklı sürümlerine yönlendirmesine olanak tanır. Örneğin, bir servisin yeni sürümü kullanıcıların belli bir kısmına yönlendirilirken eski sürümü geri kalanına yönlendirilebilir.

  • Autoscaling,

Knative servisleri hem 0’a ölçeklenebilirken (scaled to zero) hem de binlerce örneğe kadar da artırılabilir.

Knative Serving, Kubernetes ekosistemindeki başka bir uygulama olan Istio’dan intelligent service routing özelliğini ödünç alır. Istıo aynı zamanda authentication, encryption gibi hizmetler de sunar.

  • Eventing

Eventing komponenti, farklı eventlerin container tabanlı hizmetlerini ve fonksiyonlarını tetiklemesini sağlar. Knative, bu olayları kuyruğa alır ve uygun containerlara teslim eder. Bu sayede scripts yazmaya veya middleware’e gerek kalmaz.

Knative, bus adı verilen ve eventleri containerlara ileten bir mesaj platformunu da yönetir. Ayrıca developerların bi eventi containerların gerçekleştirmesi için gerekli feedsleri ayarlamasını da sağlar.

Neden Knative Kullanılmalı ?

Knative, bulut tabanlı uygulama geliştirmeyi basitleştirmek veya container kullanımını bir üst düzeye çıkarmak isteyen Kubernetes kullanıcıları için çeşitli kullanımları destekler.

  • Kubernetes’i kolaylaştırma,

Knative, tekrarlayan build ve deploy görevlerini ortadan kaldırarak developerların daha üretken olmasını sağlar.

  • Serverless’a geçişi hızlandırma,

Serverless ortamların manuel olarak kurulması ve yönetilmesi zordur. Knative bu duruma çözüm sağlar. Developerlar yalnızca bir container oluşturur ve bu containerı arka tarafta serverless olarak çalıştıran Knative’dir.

  • Agile ve DevOps yaşam döngülerini destekleme,

Developerların yeni containerların ve sürümlerinin daha hızlı oluşturulmasını sağlayarak bir Agile veya DevOps sürecinin bir parçası olarak container-based uygulamaları küçük ve hızlı adımlarla deploy edilmesini kolaylaştırır. Knative’in en önemli özelliklerinden biri CI/CD sürecine özel bir program gerekmeden entegre olabilmesidir.

  • Yeni özellik sunumlarını yumuşatma,

Kullanıcılara yeni sürümlerin sunulması bazı sorunların ortaya çıkmasına neden olabilir. Knative’in yapılandırması ve yönlendirmesi, developerların yeni container revizyonlarını kullanıcıların belirli bir kısmına sunmasına ve yaşanan sorunları bir yandan giderirken diğer yandan bu kitleyi kademeli olarak arttırmasına veya sorunun çözülemediği durumlarda hızlı bir şekilde eski sürümlere geri dönülmesine olanak tanır.

  • Developerların kodlara ve geliştirilmesine odaklanması,

Knative, developerların sadece yazdıkları kodun deploy edilmesinden sorumlu tutar ve bu sayede kodların geliştirilmesi için daha fazla zaman sağlanabilir.

--

--