Yeni Başlayanlar için Knative Sunucusuz Çerçeve İçin Hızlı Kılavuz
Yayınlanan: 2022-09-28Sunucusuz çerçeveler son birkaç yıldır talep görüyor ve geliştiriciler arasında artan oranda benimsenmeye tanık oluyor.
Bununla birlikte, kapsayıcı tabanlı uygulamalar ve Kubernet'ler işletmeler arasında zaten popülerdir.
Kubernetes, şüphesiz, iyi bir potansiyele sahip harika bir araçtır. Ekosistemi ayrıca çeşitli yeni araçlar ve Kubernetes'i daha da iyi hale getirme gücüne sahip Knative gibi en son teknolojilerle büyüyor.
Knative, başarısızlığa neden olan durumların üstesinden gelmek ve bulut platformları ve bulutta yerel düzenleme için temel bir standart oluşturmak için tanıtıldı.
Başka bir deyişle, Knative sunucusuz çerçeve, bir şirketin ihtiyaçlarını diğer bulut tabanlı sunucusuz dağıtımlardan çok daha iyi karşılayabilir.
Bu kılavuzda Knative, faydaları, kullanım örnekleri, kurulum prosedürü, çalışma prosedürü ve daha fazlası hakkında konuşacağım.
İşte başlıyoruz!
Knative Nedir?
Knative, ilk olarak Google tarafından geliştirilen Kubernetes tabanlı sunucusuz bir çerçevedir. Bir şirketin gereksinimlerine göre sunucusuz işlevleri yükler ve çalıştırır, böylece israfı en aza indirir. Kubernetes'te sunucusuz uygulamaları dağıtmak, çalıştırmak ve yönetmek için bileşenler ekleyen açık kaynaklı bir projedir.
Knative sunucusuz çerçevesinin birincil amacı, platformlar arası düzenleme standartlarını yönetmektir. Bu, kapsayıcı oluşturma, otomatik ölçeklendirme, olay modelleri ve iş yükü yönetimi işlevlerini entegre ederek uygulanır.

Daha önce, Knative dışında çeşitli açık kaynaklı çözümler vardı. Her çözümün kendi dağıtım yolu vardır ve bu da standart uygulamaların eksikliği nedeniyle pazarın parçalanmasına neden olabilir. Bu, belirli bir sistem özelliği istiyorsanız, belirli bir sağlayıcı seçmenin gerekli olduğu anlamına gelir.
Ancak göç sorunları ön plana çıkmaya başladı. Ve bu tür sorunlardan kaçınmak için Knative sunucusuz çerçevesi tanıtıldı. Bu nedenle, herhangi bir görevi dahil etmekte zorlanıyorsanız, Knative bunu Kubernetes tabanlı ardışık düzen içinde verimli bir şekilde yapabilir.
Knative'in üç parçası vardır:
- Knative Build: Konteyner görüntüleri oluşturur ve bunları kaynak kodundan kullanılabilir hale getirir.
- Knative Serving: Bu kapsayıcı görüntülerini atanan altyapı kaynakları aracılığıyla bağlamak ve dağıtmak için Istio ve Kubernetes'i kullanır.
- Knative Eventing: Kullanıcıların olay tetikleyicilerini tanımlamasına ve kullanıcıların olay tetikleyicilerini kapsayıcı işlevlerle ilişkilendirmesine olanak tanır.
Knative bir olayı tanımladığında, onu talep üzerine çalıştırmak için ilişkili süreci tanımlar. Knative, barındırma kaynaklarını yalnızca belirli bir işlem çalıştığında taahhüt ettiğinden, Knative ile iş için kapsayıcı düğümleri, kümeler ve bölmeler ayırmaya gerek yoktur. Bu şekilde, Knative sunucusuz ve kapsayıcı avantajlarını dengeler.
Knative'in Temel Kavramları
Knative Serverless Framework'ün ana kavramlarını ve bunların Knative ilkelleriyle nasıl ilişkili olduğunu tartışalım.
İnşa etmek
Knative oluşturma, mevcut Kubernetes'in temel öğelerini kullanmanıza ve genişletmenize yardımcı olarak, kaynaktan container derlemeleri üzerinde çalışmanıza olanak tanır. Bağımlılıklardan ve depodan kaynak kodunu etkinleştirir, kapsayıcı görüntüleri oluşturur ve bunları kaydeder.
Olaylar

Olay, olaya dayalı mimariyi oluşturmak için gevşek bağlı olay tüketicileri ve üreticiler arasında daha iyi iletişim kurmanıza yardımcı olur. Knative, bu olayları, geliştiricilerin komut dosyası olmadan otomatik olarak gerçekleştirilmesi gereken bir kuyruğa koyar.
Daha sonra bu olaylar konteynerlere teslim edilir. Ardından, görevleri yerine getirmeleri için olay üreticilerine beslemeler gönderir. Bu, geliştiricinin bağlantı kurmak için kod oluşturmadaki iş yükünü azaltacaktır.
Fonksiyonlar
Bir işlev, bağımsız bir dağıtım birimi ve bir mikro hizmet gibi bir Knative hizmet hizmetidir. Kodu, aşağıdakiler gibi tek bir görevi gerçekleştirmek için yazılmıştır:
- Veritabanında bir dosyanın işlenmesi
- Bir kullanıcıyı bir veritabanına kaydetme
- Planlanmış bir iş yapmak
Knative sunucusuz çerçeve, işlevleri etkin bir şekilde geliştirmenize ve dağıtmanıza ve bunları yönetmenize olanak sağlamak için tasarlanmıştır.
Eklentiler

Eklentileri kullanarak Knative sunucusuz çerçevesinin işlevselliğini kolayca genişletin veya üzerine yazın. Her serverless.yml dosyası, çeşitli eklentiler içeren bir eklenti özelliği içerir.
Kaynaklar
Kaynaklar, aşağıdakiler dahil, işlevinizin kullandığı Knative sunucusuz altyapı bileşenleridir:
- AWS SQS olay kaynağı
- Zamanlanmış bir görev (her 5 dakikada bir, 10 dakikada bir vb. çalıştırın)
- Bir Kafka olay kaynağı
Ve dahası.
Hizmetler
Hizmetler bir proje gibidir. Bu nedenle, bir hizmet, Knative sunucusuz çerçevesinin organizasyon birimidir. Bir uygulama için birçok servise sahip olsanız da servisi bir proje dosyası olarak düşünebilirsiniz.
İşlevleri, olayları ve kaynakları serverless.yml , serverless.json veya serverless.js başlıklı tek bir dosyada tanımlayabileceğiniz yerdir. Hizmetleri sunucusuz çerçeve ile dağıttığınızda, dosyadaki her şey bir kerede dağıtılır.
hizmet

Knative-serving, uygulama dağıtımını destekleyen Istio ve Kubernetes'te yerleşiktir. Sunucusuz kapsayıcıların, ağ programlamanın ve Istio bileşenleri için otomatik ölçeklendirmenin hızlı bir şekilde geliştirilmesini sağlar. Knative-serving, kapsayıcıları bir örnekten birçok kapsayıcı örneğine kadar değişebilen ölçeklenebilir bir hizmet olarak kabul eder.
Knative'in Özellikleri

Knative sunucusuz çerçevesinin bazı özelliklerinden bahsedelim:
- Knative, hizmetleri Kubernetes'e dağıtmanıza olanak tanıyan Kubernetes tabanlı sunucusuz bir çerçevedir.
- Knative'i desteklenen ortamla kolayca entegre eder
- Geliştiriciler, sunucusuz hizmetleri dağıtmak için Knative'in yardımıyla doğrudan Kubernetes API'yi kullanabilir
- Kullanıcıların, Knative'in olay oluşturma sistemi yardımıyla sunucusuz hizmetleri tetiklemelerini sağlar.
Knative Nasıl Çalışır?
Knative sunucusuz çerçeve, bir olay yönlendirme segmenti olarak çalışır ve Istio ile Kubernetes'i birbirine bağlar. Kubernetes, mikro hizmetler ve kapsayıcılar için düzenleyici olarak çalışır. Istio ise, kullanıcı ve kendileri ile etkileşim kurmak için çeşitli bileşenleri bir araya getiren açık kaynaklı bir ağ teknolojisidir.
Knative, kullanıcılara temel günlük işleri gerçekleştirmeyi hedefleyen birden fazla bileşen sunar. Bu bileşenler çeşitli uygulamalarda tekrar tekrar kullanılmaktadır. Bir geliştirici herhangi bir programlama dilini kullanabilir. Bu nedenle, Knative yalnızca kapsayıcı görüntülerini tanıdığı için belirli bir dil bilgisine ihtiyacınız yoktur.
Knative sunucusuz çerçevesinin işleyişinin anahtarı olan üç bileşeni vardır.
Yeni Konteynerler İnşa Etme

Yapı bileşeni, yeni kapsayıcıların oluşturulmasından sorumludur. Kaynak kodlarını bir kapsayıcıya dönüştürebilir. Knative, işletmeye özel ihtiyaçları karşılayacak şekilde yapılandırılabilir.
İlk olarak, Knative kaynak kodunu Github gibi kitaplıktan çıkarır. Ardından, kodun etkin bir şekilde çalışması için temeldeki bağımlılıklar eklenir. Konteyner görüntüleri daha sonra oluşturulur ve Kubernetes platformunun erişebileceği dosyalara yerleştirilir.
Kapsayıcı, Kubernetes ve Knative kullanan geliştiricilerin kullanımına sunulmuştur. Böylece, kodun kaynağı bilindiği sürece kapsayıcılar oluşturulur.
Platforma Hizmet Verme veya Çalıştırma
Hizmet bileşeni, platformun çalışmasından sorumludur. İçerir:
- Yapılandırma: Hizmetin birden çok sürümünün yönetiminde yapılandırma kesindir. Bir kapsayıcının yeni özelliğinin dağıtımı her gerçekleştiğinde, Knative mevcut sürümü kaydeder ve en son değişiklikler ve özelliklerle yeni bir sürüm oluşturur. Ayrıca, Knative bir hizmetin durumunu tanımlar.
- Otomatik ölçeklendirme: Sunucusuz kapsayıcıların daha iyi çalışması için kapsayıcıları yukarı veya aşağı otomatik olarak ölçeklendirebilmeniz gerekir. Knative, gerekirse hizmetleri birçok kişiye otomatik olarak ölçeklendirebilir.
- Akıllı servis yönlendirme: Knative çalışma mekanizmasının önemli bir parçasıdır. Geliştiricilerin, mikro hizmetlerin mevcut farklı sürümlerine trafik akışını ve miktarını yönlendirmesini sağlar. Yeni özellikler ve mavi-yeşil dağıtım stratejileri tanıtılırken akıllı hizmet yönlendirme kullanılabilir.
Kullanıcıların bir kısmını en son testlere ve sürüme maruz bırakmanıza ve büyük trafiği kademeli olarak yeni sürüme yönlendirmenize olanak tanır.

Fonksiyonları Tanımlamak için Olay Oluşturma

Knative'in olay oluşturma bileşeni, Knative'in işlevini tanımlamaktan sorumludur. Olaylara dayalı olarak kapsayıcıların çalışmasını tanımlamaya izin verir. Farklı olaylar, kapsayıcıların belirli işlevlerini tetikler.
Geliştiriciler, Knative'in işini yapmasına izin vermek için olay tetikleyicilerini ve ilişkili kapsayıcıları tanımlayabilir. Knative, olayların listesini ve olayların teslimini yönetir.
Knative'in Faydaları
Knative, rota yönetimi, aşamalı sürüm ve hizmet bağlantısı gibi hizmetler sağlar. Geniş bir topluluğa sahiptir. Knative'in şirketleri bu teknolojiyi benimseme konusunda nasıl etkilediğini tartışalım.
- Diğer çözümlerden farklı olarak Knative, standart olaylara sahiptir ve FaaS çözümü ile uyumludur. Sunucusuz mimari tasarlamaya yardımcı olan bir CloudEvent standart çerçevesi sunar.
- Knative bir PaaS olmasa da sunucusuz orkestrasyon platformuyla sunucusuz bir PaaS oluşturmanıza olanak tanır.
- Knative, tam teşekküllü ve olgun bir sunucusuz tasarıma sahiptir.
- Çapraz platformları destekler ve satıcıları belirli bir çözümle bağlama şansını ortadan kaldırmak için size bulut sağlayıcıları arasında evrensel bir standart sunar.

- Knative esnek bir çerçeve sağlar.
- Orantılı aşamalı sürümleri destekler.
- Sunucusuz ekosistemi kapsayıcılı bir ortamda deneyimleyebilirsiniz.
- Knative, yönetim ve araçlarda güvenilirliği ortadan kaldırır.
- Kubernetes'i uygulayarak Knative ile entegre olan diğer bulut sağlayıcılarına hızla geçiş yapabilirsiniz.
- İstek odaklı bir bilgi işlem modeli sunar.
- İş akışlarını bir hizmet olarak yönetmenize olanak tanır.
- Knative ile IoT verilerini işleyebilir, erişilebilirlik kontrollerini çalıştırabilir ve güvenlik gruplarınızın yapılandırmalarını doğrulayabilirsiniz.
- Geliştiricilerin kodlamaya odaklanmasına ve hızlı bir şekilde yinelemeli kod oluşturmalarına olanak tanır.
- Geliştiricilerin yeni sürümleri dahil etmelerini sağlar.
- Knative'in olay tabanlı modeli, abonelik, harici sisteme bağlantı ve kayıt dahil tasarımların uygulanmasına yardımcı olur.
Knative'in Zorlukları (ve Bazı Çözümler)
Verimlilik Zorlukları
Uygun uygulamaları destekleyen bir Knative Framework, minimum maliyetle daha iyi performans sağlar. Bununla birlikte, uygulamaların uygun olmayan bir karışımı, daha yüksek maliyetlere ve yeterince kullanılmayan konteyner kaynaklarına neden olabilir. Bu, Knative sunucusuz dağıtımın en büyük zorluğu olan kötü uygulama performansına yol açabilir.

Bu nedenle, yetersiz boyutlandırılmış bir kaynak havuzu veya yanlış uygulamalar birçok Knative avantajını yok edebilir.
Knative'de kaynak miktarlarını ve uygulama karışımını doğrulamak için testler gerçekleştirerek bu zorluğun üstesinden gelebilirsiniz. Her biri için ortalama ve maksimum yükleri boyutlandırarak olay yüklerini ölçün ve kaynakların toplam tüketimini tahmin edin. Tahminleri doğrulamak için bir deneme yapılandırması oluşturmak ve çalıştırmak için bunu birkaç uygulama için tekrarlayın.
Fonksiyonel Zorluklar
Knative'in işlevsel zorlukları şunlar olabilir:
- Knative, durumsuz bir modele uyan işlevlere bağlıdır. Bu, bileşenin kendisinde hiçbir verinin depolanmadığı anlamına gelir. Fonksiyonların geliştirilmesi zor bir aşama değildir, ancak yaklaşımda küçük bir değişiklik gerektirir, bu da tek bir hatanın yazılımın performansını mahvedebileceği anlamına gelir.
- İş verileri, birden çok adımlı işlemlerden oluşur ve durum bilgisi olmayan işlevler, tüm adımlarda bağlamı korur. Knative, genel bulut sunucusuz araçların yapabildiği gibi bu yeteneğe sahip değildir.
Düzenli izleme ve sorunları giderme, performansınızı makul puanlarda tutmanıza yardımcı olabilir.
Operasyonel Zorluklar

Genel buluttaki sunucusuz tekliflerle karşılaştırıldığında, Knative ile ilgili bir operasyon zorluğu vardır. Yöneticiler, genel bulut ile temel sunucuları kontrol etmez. Ancak sunucuları Kubernetes, konteynerler, Knative ve Istio'nun kendisi ile birlikte yönetmeleri gerekecek.
Knative, halihazırda Kubernetes ve kapsayıcıları taahhüt etmiş şirketler için operasyonları ve geliştirme karmaşıklığını asgari düzeyde genişletir. Ağ ve mikro hizmetlere hizmet etmeye kararlı olanlar, Knative'i doğal bir uzantı olarak bulacaklar.
Knative Kullanım Örnekleri

Değişken sayıda olaya yol açan, zamanla belirlenmiş sınırlar içinde veya üzerinde kalan uygulamalar için Knative, onlar için en iyisidir. Knative sunucusuz çerçevesinin özel kullanım durumları şunları içerir:
- Web sitesi testi ve doğrulaması
- Uygulama izleme
- IoT
- Ağ izleme
- Mobil uygulama frond süreçleri
- Çevik ve DevOps yaşam döngüleri
- Yeni özellikler kullanıma sunuldu
- Kubernet'leri Kolaylaştırma
Olay oryantasyonu önemlidir. BT ekipleri bir uygulamayı işlemler yerine bir dizi olay olarak hayal edemiyorsa, Knative işlevsellik ve verimlilik açısından iyi bir seçim olmayabilir.
Knative'in Ön Koşulları ve Kurulumu
Yukarıdaki bölümlerde gördüğümüz gibi, Knative, bir hizmet ağı ve iş yükü düzenleme kümesi üzerinde çalışan olay oluşturma ve sunma gibi bir dizi bileşendir. Basit işlem için yüklememiz gereken komut satırı yardımcı programları vardır. Bu nedenle, kuruluma devam edebilmemiz için birkaç bağımlılığa ihtiyacımız var.
Önkoşullar

Kubernetes'i yüklemek için birkaç seçenek vardır. Docker Desktop, çeşitli amaçlara hizmet eden kolay bir Kubernetes kümesini etkinleştirmek için gelir. Basit yaklaşım, Kubernetes kümesini Docker kapsayıcı düğümleriyle birlikte çalıştırmak için Docker'da Kubernetes kullanmaktır. Kümeyle çalışmanın uygun yolu, Knative komut satırı aracını kullanmaktır.
Knative CLI, kaynaklarını oluşturmak için kolay ve hızlı bir arayüz sunar. Trafik bölme ve otomatik ölçeklendirme gibi karmaşık görevlerde yardımcı olur. Uygun yol, uyumlu ikili dosyayı GitHub sayfasından indirmektir.
Kurulum
Tüm ön koşullara sahip olduktan sonra, bileşenleri kurmaya başlayabiliriz. Geliştirme ortamı için bir hızlı başlangıç eklentisi var. Eklenti, Knative istemcisini kullanarak yerel bir Knative kümesinin kurulmasına yardımcı olur. Hızlı başlangıç eklentisini resmi sürüm sayfasından indirebilirsiniz.
Sonuç: Knative'in Geleceği
Knative, uygulamaların otomatik olarak ölçeklendirilmesini sağlayarak sunucusuz bilgi işlemin yerini almıştır. Birlikte çalışabilir ve modüler sistem üzerinde önemli bir etki yaratır.
Gelecekte, Knative'in mevcut eksiklikleri gidermesi ve sunucusuz mimariyi çalıştırmak için en verimli teknolojilerden biri olması bekleniyor.
Knative teknolojisi, sunucusuz alternatiflere göre avantajlarına bakarak geliştiriciler için daha etkilidir. Knative, Kubernetes uzantılarını oluşturma ve bakımını yapma ihtiyacını ortadan kaldırarak harika zaman kazanmanıza yardımcı olacaktır. Geliştiriciler, kullanımı kolay ve sunucusuz çözümlere harika bir alternatif olduğu için Knative teknolojisinden oldukça memnun.
Bu nedenle, bulut iş akışlarınızda Kubernetes ortamının gücünü en üst düzeye çıkarmak istiyorsanız, Knative teknolojisini benimseyin ve faydalarına kendiniz tanık olun.