Rychlý průvodce Knative Serverless Framework pro začátečníky

Photo of author

By etechblogcz

V posledních letech se bezserverové frameworky staly velmi vyhledávanými a mezi vývojáři zaznamenávají rapidní nárůst popularity.

Nicméně, kontejnerové aplikace si již vydobyly své pevné místo na trhu a platforma Kubernetes je široce využívána v podnikové sféře.

Kubernetes je bezesporu vynikající nástroj s obrovským potenciálem. Jeho ekosystém se neustále rozšiřuje o nové nástroje a špičkové technologie, jako je například Knative, která má ambici posunout Kubernetes na ještě vyšší úroveň.

Knative byla vyvinuta s cílem minimalizovat situace vedoucí k selhání a vytvořit jednotný standard pro cloudové platformy a nativní cloudovou orchestraci.

Jinými slovy, bezserverový framework Knative lépe odpovídá potřebám moderních firem než tradiční cloudová nasazení bez serveru.

V tomto průvodci si povíme více o Knative, jeho výhodách, případech použití, postupu instalace, pracovním postupu a dalších důležitých aspektech.

Pojďme na to!

Co je Knative?

Knative je bezserverový framework postavený na platformě Kubernetes, původně vyvinutý společností Google. Umožňuje načítání a spouštění funkcí bez nutnosti spravovat serverovou infrastrukturu, čímž efektivně snižuje plýtvání zdroji. Jedná se o open-source projekt, který rozšiřuje Kubernetes o komponenty pro nasazování, spouštění a správu bezserverových aplikací.

Hlavním cílem Knative je standardizace multiplatformní orchestrace. Toho dosahuje integrací funkcí pro vytváření kontejnerů, automatické škálování, událostmi řízené modely a správu pracovních zátěží.

Dříve existovala řada open-source alternativ k Knative. Každá z nich ale měla svůj vlastní způsob nasazení, což vedlo k fragmentaci trhu a absenci standardizovaných postupů. To prakticky znamenalo, že výběr konkrétního poskytovatele byl nezbytný pro využití specifických systémových funkcí.

Nicméně se začaly objevovat problémy s migrací mezi těmito systémy. A právě s cílem tyto komplikace eliminovat byl představen bezserverový framework Knative. Pokud tedy řešíte problémy se začleněním různých úloh, Knative vám je efektivně pomůže realizovat v rámci Kubernetes-based pipeline.

Knative se skládá ze tří základních částí:

  • Knative Build: Zajišťuje vytváření kontejnerových obrazů ze zdrojového kódu a jejich zpřístupnění.
  • Knative Serving: Využívá Istio a Kubernetes k připojení a nasazení těchto kontejnerových obrazů prostřednictvím přidělených zdrojů infrastruktury.
  • Knative Eventing: Umožňuje uživatelům definovat spouštěče událostí a přiřazovat je ke kontejnerizovaným funkcím.

Když Knative detekuje událost, automaticky definuje přidružený proces, který se spustí na vyžádání. Díky Knative není potřeba alokovat kontejnerové uzly, clustery ani pody pro provádění úloh. Hostitelské zdroje jsou přiděleny až ve chvíli, kdy je daný proces spuštěn. Knative tak efektivně kombinuje výhody bezserverového přístupu a kontejnerizace.

Základní koncepty Knative

Nyní se podíváme na klíčové koncepty bezserverového frameworku Knative a na to, jak souvisejí s jeho základními stavebními bloky.

Build

Knative-build umožňuje využívat a rozšiřovat stávající primitiva Kubernetes, což vám dává možnost spouštět sestavení kontejnerů od samotného počátku. Umožňuje získávání zdrojového kódu ze závislostí a repozitářů, vytváření kontejnerových obrazů a jejich registraci.

Události

Události zprostředkovávají efektivnější komunikaci mezi volně propojenými konzumenty a producenty událostí, což je klíčové pro budování událostmi řízené architektury. Knative automaticky zařazuje tyto události do fronty, aniž by bylo nutné psát skripty.

Později jsou tyto události distribuovány do kontejnerů. Následně se odesílají zdroje producentům událostí, kteří realizují příslušné úkoly. To značně snižuje zatížení vývojářů, kteří se nemusí starat o kód pro navazování spojení.

Funkce

Funkce je nezávislá jednotka nasazení, podobná mikroslužbě v rámci služby Knative. Její kód je napsán tak, aby prováděl konkrétní úkol, například:

  • Zpracování souboru v databázi
  • Uložení uživatele do databáze
  • Provedení naplánované úlohy

Bezserverový framework Knative je navržen tak, aby vám umožnil efektivně vyvíjet, nasazovat a spravovat funkce.

Pluginy

Funkčnost bezserverového frameworku Knative lze snadno rozšířit nebo upravit pomocí pluginů. Každý soubor serverless.yml obsahuje sekci pro pluginy, které jsou tímto způsobem definovány.

Zdroje

Zdroje jsou komponenty bezserverové infrastruktury Knative, které vaše funkce využívají, například:

  • Zdroj událostí AWS SQS
  • Naplánovaná úloha (spouštění každých 5 minut, 10 minut atd.)
  • Zdroj událostí Kafka

A další.

Služby

Služby jsou organizovány jako projekty. Služba je tedy organizační jednotkou bezserverového frameworku Knative. I když pro jednu aplikaci můžete mít více služeb, lze si službu představit jako soubor projektu.

Zde můžete definovat funkce, události a zdroje, to vše v jednom souboru s názvem serverless.yml, serverless.json nebo serverless.js. Když nasadíte služby pomocí bezserverového frameworku, vše v tomto souboru se nasadí najednou.

Serving

Knative-serving je postaveno na Istio a Kubernetes a podporuje nasazování aplikací. Umožňuje rychlý vývoj bezserverových kontejnerů, síťové programování a automatické škálování pro komponenty Istio. Knative-serving považuje kontejnery za škálovatelnou službu, která se může pohybovat od jedné instance po mnoho instancí kontejneru.

Vlastnosti Knative

Podívejme se na některé z klíčových vlastností bezserverového frameworku Knative:

  • Knative je bezserverový framework založený na Kubernetes, který umožňuje snadno nasazovat služby do prostředí Kubernetes.
  • Knative se jednoduše integruje s podporovanými prostředími.
  • Vývojáři mohou přímo využívat Kubernetes API s pomocí Knative k nasazování bezserverových služeb.
  • Umožňuje uživatelům spouštět bezserverové služby pomocí systému událostí Knative.

Jak Knative funguje?

Bezserverový framework Knative funguje jako orchestrátor událostí a propojuje Istio a Kubernetes. Kubernetes slouží jako orchestrátor pro mikroslužby a kontejnery. Istio je na druhé straně open-source technologie, která propojuje různé komponenty pro komunikaci mezi uživateli a vzájemnou interakci komponent.

Knative poskytuje uživatelům řadu komponent určených k provádění základních úkolů, které jsou často opakovaně používány v různých aplikacích. Vývojář si může vybrat jakýkoli programovací jazyk, protože Knative pracuje s kontejnerovými obrazy. Není tedy potřeba specifická jazyková znalost.

Pro správnou funkci bezserverového frameworku Knative jsou klíčové jeho tři základní komponenty.

Sestavování nových kontejnerů

Komponenta sestavování je zodpovědná za vytváření nových kontejnerů. Dokáže transformovat zdrojový kód do kontejneru. Knative lze konfigurovat tak, aby splňoval specifické obchodní požadavky.

Nejprve Knative stáhne zdrojový kód z repozitáře, jako je Github. Poté přidá základní závislosti, aby byl kód správně funkční. Následně jsou vytvořeny kontejnerové obrazy a umístěny do úložiště, ke kterému má platforma Kubernetes přístup.

Kontejner je zpřístupněn vývojářům prostřednictvím Kubernetes a Knative. Kontejnery se tedy staví, dokud je znám původ kódu.

Obsluhování nebo provozování platformy

Obslužná komponenta je zodpovědná za chod platformy. Zahrnuje:

  • Konfiguraci: Konfigurace je klíčová pro správu více verzí služby. Kdykoli je nasazena nová funkce kontejneru, Knative uloží stávající verzi a vytvoří novou s nejnovějšími změnami a funkcemi. Knative také definuje stav služby.
  • Automatické škálování: Pro efektivní fungování bezserverových kontejnerů je nezbytné automatické škálování kontejnerů nahoru i dolů. Knative dokáže v případě potřeby automaticky škálovat služby pro velké množství uživatelů.
  • Inteligentní směrování služeb: Jedná se o důležitou součást pracovního mechanismu Knative. Umožňuje vývojářům směrovat tok a objem provozu na různé existující verze mikroslužeb. Inteligentní směrování služeb lze využít při zavádění nových funkcí a strategiích modro-zeleného nasazení.

Umožňuje vám zpřístupnit novou verzi malému segmentu uživatelů pro testování a postupně na ni směrovat větší provoz.

Eventing k definování funkcí

Eventová komponenta Knative je zodpovědná za popis funkcí. Umožňuje definovat běh kontejnerů na základě událostí. Různé události spouštějí specifické funkce kontejnerů.

Vývojáři mohou definovat spouštěče událostí a související kontejnery. Knative se pak postará o zpracování seznamu událostí a doručení událostí.

Výhody Knative

Knative nabízí služby, jako je správa tras, postupné uvolňování a propojení služeb. Má velkou komunitu uživatelů. Podívejme se, jak Knative ovlivňuje společnosti, které se rozhodly tuto technologii implementovat.

  • Na rozdíl od jiných řešení má Knative standardizované události a je kompatibilní s řešením FaaS. Nabízí standardní framework CloudEvent, který usnadňuje návrh bezserverové architektury.
  • I když Knative není platformou PaaS, umožňuje vám vytvořit bezserverovou PaaS pomocí bezserverové orchestrační platformy.
  • Knative má komplexní a propracovaný bezserverový design.
  • Podporuje více platforem a nabízí univerzální standard mezi různými cloudovými poskytovateli, čímž snižuje závislost na řešení konkrétního dodavatele.

  • Knative poskytuje flexibilní rámec.
  • Podporuje proporcionální postupné uvolňování.
  • V kontejnerovém prostředí si můžete vyzkoušet výhody bezserverového ekosystému.
  • Knative odstraňuje problémy se spolehlivostí správy a nástrojů.
  • Implementací Kubernetes můžete rychle migrovat k jiným cloudovým poskytovatelům integrovaným s Knative.
  • Nabízí výpočetní model řízený požadavky.
  • Umožňuje vám spravovat pracovní postupy jako službu.
  • S Knative můžete zpracovávat data IoT, provádět kontroly přístupnosti a ověřovat konfigurace vašich bezpečnostních skupin.
  • Umožňuje vývojářům soustředit se na samotné kódování a rychle vytvářet iterativní kód.
  • Zajišťuje, že vývojáři snadno implementují nové verze.
  • Událostmi řízený model Knative usnadňuje implementaci návrhů včetně předplatného, připojení k externím systémům a registrace.

Výzvy Knative (a některá řešení)

Výzvy v oblasti efektivity

Knative framework podporuje správné aplikace a poskytuje tak vyšší výkon při minimálních nákladech. Nicméně, nevhodná kombinace aplikací může vést k vyšším nákladům a nedostatečnému využití kontejnerových zdrojů. To může mít za následek snížený výkon aplikací, což představuje jednu z největších výzev při nasazování Knative bez serveru.

Špatně nastavená velikost fondu zdrojů nebo nevhodné aplikace mohou tedy znehodnotit mnoho výhod Knative.

Tento problém lze vyřešit provedením testů pro ověření množství zdrojů a kombinace aplikací na Knative. Změřte zatížení událostmi dimenzováním průměrného a maximálního zatížení pro každou z nich a odhadněte celkovou spotřebu zdrojů. Tento postup opakujte pro několik aplikací, abyste vytvořili a spustili zkušební konfiguraci pro ověření odhadů.

Funkční výzvy

Mezi funkční výzvy Knative patří:

  • Knative závisí na funkcích, které odpovídají bezstavovému modelu. To znamená, že v samotné komponentě nejsou uložena žádná data. Vývoj funkcí není složitá fáze, ale vyžaduje určitý posun v přístupu, což znamená, že jediná chyba může negativně ovlivnit výkon softwaru.
  • Obchodní data se skládají z transakcí s více kroky a bezstavové funkce udržují kontext ve všech krocích. Knative nemá takovou schopnost jako veřejné cloudové bezserverové nástroje.

Pravidelné monitorování a odstraňování problémů vám může pomoci udržet váš výkon na slušné úrovni.

Provozní výzvy

Ve srovnání s bezserverovými nabídkami ve veřejném cloudu existuje v případě Knative určitá provozní výzva. Správci nemusí spravovat základní servery v případě veřejného cloudu. Nicméně, u Knative budou muset spravovat servery společně s Kubernetes, kontejnery, Knative a Istio.

Knative v minimální míře zvyšuje provoz a složitost vývoje pro společnosti, které se již rozhodly používat Kubernetes a kontejnery. Ti, kteří využívají servisní sítě a mikroslužby, shledají Knative jako přirozené rozšíření.

Případy použití Knative

Knative je ideální pro aplikace s proměnlivým počtem událostí, které se pohybují v rámci nebo nad stanovenými limity. Mezi konkrétní případy použití bezserverového frameworku Knative patří:

Klíčová je orientace na akce. Pokud si IT týmy nedokážou představit aplikaci jako posloupnost událostí namísto transakcí, Knative nemusí být optimální volbou z funkčních a efektivitních důvodů.

Předpoklady a instalace Knative

Jak jsme si řekli výše, Knative je soubor komponent jako je eventing a serving, které běží v rámci servisní sítě a clusteru pro orchestraci pracovních zátěží. Pro práci s ním potřebujeme nainstalovat nástroje příkazové řádky. Existuje tedy několik závislostí, které musíme mít na paměti při samotné instalaci.

Předpoklady

Existuje několik možností instalace Kubernetes. Docker Desktop umožňuje jednoduché nastavení clusteru Kubernetes pro různé účely. Snadným přístupem je použití Kubernetes v Dockeru pro spuštění clusteru Kubernetes společně s uzly kontejneru Docker. Pro pohodlnou práci s clusterem se doporučuje použít nástroj příkazové řádky Knative.

Knative CLI nabízí jednoduché a rychlé rozhraní pro vytváření zdrojů a pomáhá se složitými úlohami, jako je rozdělení provozu a automatické škálování. Pro stažení kompatibilního binárního souboru doporučujeme navštívit stránku projektu na GitHubu.

Instalace

Jakmile splníme všechny předpoklady, můžeme přistoupit k instalaci komponent. Pro vývojová prostředí existuje plugin pro rychlý start. Tento plugin usnadňuje instalaci lokálního clusteru Knative pomocí klienta Knative. Plugin pro rychlý start si můžete stáhnout z oficiální stránky pro vydání.

Závěr: Budoucnost Knative

Knative přinesl revoluci do bezserverových výpočtů díky automatickému škálování aplikací. Má zásadní dopad na interoperabilní a modulární systémy.

Očekává se, že v budoucnu Knative překoná své současné nedostatky a stane se jednou z nejpoužívanějších technologií pro provoz bezserverových architektur.

Technologie Knative má pro vývojáře velký význam díky svým výhodám oproti jiným bezserverovým alternativám. Knative vám šetří čas tím, že eliminuje nutnost vytvářet a udržovat rozšíření Kubernetes. Vývojáři jsou s technologií Knative spokojeni, protože se snadno používá a představuje vynikající alternativu k tradičním bezserverovým řešením.

Pokud tedy chcete maximálně využít výkon prostředí Kubernetes ve vašich cloudových pracovních postupech, doporučujeme vyzkoušet technologii Knative a sami se přesvědčit o jejích výhodách.