Programování

5 způsobů, jak to udělat bez serveru na Kubernetes

Říkejte tomu „bez serveru“, nazývejte jej „událostmi řízený výpočet“ nebo „funkce jako služba (FaaS)“, myšlenka je stejná: dynamicky přidělovat prostředky ke spuštění jednotlivých funkcí, v podstatě mikroslužeb, které jsou vyvolány v reakci na události. Výpočetní platformy bez serveru umožňují vývojářům aplikací zaměřit se na aplikaci, nikoli na základní infrastrukturu a všechny její podrobnosti správy.

Většina poskytovatelů cloudových služeb nabízí nějakou platformu bez serveru, ale můžete si ji vytvořit sami pouze se dvěma ingrediencemi. Jedním z nich je Kubernetes, systém orchestrace kontejnerů, který se stal standardní platformou pro vytváření komponentních, odolných aplikací. Druhým je libovolný z řady systémů používaných k vytváření vzorů aplikací bez serveru v Kubernetes.

Většina frameworků bez serveru pro Kubernetes má tyto společné rysy:

  • Nasazuje se do jakéhokoli prostředí, které lokálně nebo vzdáleně podporuje Kubernetes, včetně prostředí jako OpenShift.
  • Podporuje běžící kód napsaný v jakémkoli jazyce s některými běžnými běhovými časy předem zabalenými v rámci.
  • Spustí spuštění kódu mnoha druhy událostí - koncovým bodem HTTP, zprávou ve frontě nebo jiným zavěšením.

Jednou z hlavních výhod budování bez serveru na Kubernetes je získání mnohem větší kontroly nad základní platformou. Mnoho nabídek bez serveru omezuje chování funkcí, které provozují, což někdy činí některé třídy aplikací nepraktickými. S Kubernetes můžete vytvořit platformu bez serveru, která odpovídá vašim potřebám, ponechat infrastrukturu vašim operátorům Kubernetes a nechat vývojáře soustředit se na psaní základního kódu.

Zde je pět hlavních projektů, které Kubernetes přinášejí funkčnost bez serveru.

Štěpení

Štěpení je vytvářeno a udržováno spravovanou společností Kubernetes Platform 9. Jeho hlavním požadavkem na slávu je, že vám umožňuje vytvářet aplikace FaaS, aniž byste museli stavět kontejnery, pouhým dodáním definičních souborů.

Štěpení lze nainstalovat s Helmovým grafem nebo bez něj a lze jej nainstalovat do kterékoli ze dvou edic. K dispozici je plnohodnotná verze s frontou zpráv a podporou protokolu InfluxDB pro protokolování a ořezaná edice se základními funkcemi. První je určen pro produkční nasazení a druhý pro namočení nohou.

Chcete-li přidat kód do nasazení Fission, použijete soubory spec založené na YAML. Nástroje příkazového řádku Fission vám umožňují vytvářet soubory YAML pro vaše funkce a trasy použité ke spuštění jejich vstupních bodů. Soubor spec také umožňuje poskytnout proměnné prostředí, pomocné kontejnery, svazky a ovládací prvky pro potlačení / toleranci Kubernetes pro kód.

Štěpení také poskytuje „pracovní postupy“. Instalované Helmovým grafem předávají pracovní postupy výstup jedné funkce do jiné funkce. Funkce nemusí být ani ve stejném jazyce. Všimněte si, že to přichází s náklady na výkon, protože výstup každé funkce je vykreslen do výměnného formátu, i když systém pracovního postupu podporuje mnoho běžných primitivních binárních typů, které udržují režijní náklady (např. Celé číslo nebo obecný bajtový proud).

Jednou z nevýhod původně spojených s FaaS bylo, že při prvním vyvolání funkce došlo ke znatelnému zpoždění spuštění kontejneru, který je s ní spojen. Fission udržuje kontejnery předehřáté, aby se minimalizovala latence při prvním spuštění funkce.

Fission nabízí další vymoženosti pro vývojáře i správce. Službu lze nasadit do clusteru, který nemá žádný externí přístup k internetu, a kód lze na vyžádání znovu načíst do clusteru. Aktivitu funkce lze také zaznamenat a přehrát, aby se usnadnilo ladění.

Projekt Fission je k dispozici pod vysoce liberální licencí Apache, takže jej lze podle potřeby libovolně přepracovat.

Nůž

Původně vytvořený společností Google pro spouštění aplikací bez serveru na Kubernetes, Knative se zaměřuje na vzory společné pro nasazení bez serveru ve výrobě. Knative však vyžaduje přímé zkušenosti se správou mnoha komponent Kubernetes, aby bylo možné je efektivně využívat.

Kromě Kubernetes vyžaduje Knative směrovací systém nebo síť služeb, jako je Istio, ale lze použít i jiné možnosti, jako Ambassador a Gloo. To znamená trochu více práce s nastavením, ale projekt má podrobné návody k použití jednotlivých možností v různých cloudových službách a prostředích Kubernetes, včetně vanilkových Kubernetes.

Knative funguje hlavně využitím nebo rozšířením stávajících nástrojů a funkcí Kubernetes. Aplikace nebo funkce jsou konfigurovány pomocí souborů YAML a dodávány jako Docker kontejnery, které vytváříte. Přidávání, úpravy nebo mazání definic se provádí pomocí kubectl aplikace příkazového řádku. U metrik v aplikacích Knative použijte Grafanu. Škálování lze provést pomocí vlastního automatického škálovače Knative nebo pomocí jiného škálovače kompatibilního s Kubernetes, včetně vlastního napsaného.

Knative je ve velkém vývoji a mnoho z jeho specializovaných nástrojů je stále v hrubém stavu. Tyto zahrnujíknctl, CLI speciálně pro Knative, což vám ušetří potíže s používáním dalších nástrojů Kubernetes ke správě Knative, pokud se chcete zaměřit pouze na Knative; a ko, nástroj pro vytváření aplikací Go na Knative odstraněním kroku sestavení kontejneru.

Kubeless

Kubeless vytvořil Bitnami, vývojáři snadných instalačních programů pro běžné zásobníky webových aplikací. Kubeless ke zpracování funkcí používá nativní definice vlastních zdrojů Kubernetes, takže mezi metaforami Kubernetes a funkcemi Kubeless je o něco méně abstrakce.

Nejběžnější jazykové moduly runtime přicházejí s platformou: .NET, Java, Python, Node.js, PHP, Ruby, Go a dokonce i nový jazyk Ballerina pro vývoj v cloudu. Runtime jsou pouze Docker obrázky, ačkoli Kubeless má specifický formát balení pro použití Dockerfiles k vytváření vlastních runtime.

Další užitečnou funkcí Kubeless je CLI, které je příkazově identické s AWS Lambda CLI. To je nesmírně výhodné, pokud chcete migrovat z AWS Lambda, ale chcete zachovat některé ze stávajících skriptů pro správu nebo se prostě nemusíte učit úplně novou sadu příkazů.

Kubeless funguje také jako plug-in pro Serverless Framework, systém pro vytváření aplikací bez serveru na různých architekturách. Pokud již používáte Serverless nebo Kubeless, přidáte si jednodušší čas než použít něco jiného.

OpenFaaS

Rozteč pro OpenFaaS je „jednoduché funkce bez serveru“. Zjednodušeně řečeno, vývojáři myslí „není mnohem obtížnější než nasazení kontejneru Docker.“

OpenFaaS lze nasadit buď do Kubernetes, nebo do clusteru Docker Swarm (pro místní testování nebo použití s ​​nízkou poptávkou). Rozhraní OpenFaaS CLI slouží k vytváření, odesílání a nasazování Docker obrázků do clusteru pro spouštění funkcí. Existující šablony poskytují předem připravené způsoby nasazení aplikací napsaných v jazycích Go, Python, Node.js, .NET, Ruby, Java nebo PHP 7, i když můžete vždy zavést vlastní. OpenFaaS CLI vám také poskytuje způsoby, jak spravovat tajné kódy ve vašem klastru, zatímco integrované webové uživatelské rozhraní vám umožňuje vytvářet nové funkce a spravovat je.

Další verze OpenFaaS, OpenFaaS Cloud, přebaluje OpenFaaS s funkcemi pro více vývojářů, včetně integrace s Git (včetně GitHub a samoobslužných vydání GitLab), CI / CD, správa tajemství, HTTPS a schopnost podávat události Slacku a dalším dřezy. OpenFaas Cloud je k dispozici jako bezplatný produkt s otevřeným zdrojovým kódem a v hostované verzi, která je aktuálně zdarma k použití.

OpenWhisk

Apache OpenWhisk je účtován jako obecná platforma bez serveru. Kubernetes je pouze jednou z několika možností dostupných pro spouštění kontejnerů v OpenWhisku, protože OpenWhisk podporuje také Mesos a Docker Compose. Přesto je Kubernetes preferován díky svému nástroji pro nasazení aplikací, zejména Helmových grafů. IBM Cloud Functions je založen na projektu OpenWhisk, takže může pracovat také s příkazy OpenWhisk CLI.

Na rozdíl od většiny ostatních rámců Kubernetes bez serveru je OpenWhisk napsán v jazyce Scala, nikoli Go (ve kterém jsou napsány Kubernetes i Docker). Pravděpodobně to bude problém, pouze pokud chcete hacknout na OpenWhisk a máte zkušenosti pouze s Go.

Většina populárních možností běhu aplikace je dodávána s balíčkem OpenWhisk: Java, Node.js, Python, Ruby, PHP a .NET. Zahrnuto je také mnoho esoterických a špičkových možností: Scala, Ballerina, Swift a Rust. Runtime jsou pouze kontejnery Dockeru, takže je snadné poskytnout si vlastní.

Jednou z pohodlných funkcí nasazení OpenWhisk jsou „akce zip“. Pomocí souboru manifestu pro balíček kódu nasměrujte archiv .zip kódu a pomocných souborů na OpenWhisk a OpenWhisk z něj vytvoří akci. OpenWhisk CLI také obsahuje nástroje pro transformaci adresářového stromu kódu do takového archivu. A katalog balíčků služeb usnadňuje připojení vaší aplikace k běžným nabídkám třetích stran, jako je GitHub, Slack, Apache Kafka nebo Jira.