Programovanie

5 spôsobov, ako na serveri Kubernetes robiť bez servera

Môžete to nazvať „bez servera“, „výpočtom založeným na udalostiach“ alebo „funkciou ako služba (FaaS)“, myšlienka je rovnaká: dynamicky prideľovať prostriedky na spustenie jednotlivých funkcií, v podstate mikroslužieb, ktoré sú vyvolané v reakcii na udalosti. Výpočtové platformy bez servera umožňujú vývojárom aplikácií sústrediť sa na aplikáciu, nie na základnú infraštruktúru a všetky jej podrobnosti správy.

Väčšina poskytovateľov cloudových služieb ponúka nejaký druh platformy bez servera, ale sami si môžete vytvoriť jednu, ktorá bude mať iba dve zložky. Jedným z nich je Kubernetes, systém orchestrácie kontajnerov, ktorý sa stal štandardnou platformou pre vytváranie komponentizovaných a odolných aplikácií. Druhým je ktorýkoľvek z množstva systémov používaných na vytváranie serverových aplikačných vzorov v Kubernetes.

Väčšina rámcov bez serverov pre Kubernetes má spoločné tieto funkcie:

  • Nasadzuje sa do každého prostredia, ktoré podporuje Kubernetes, lokálne alebo vzdialene, vrátane prostredí ako OpenShift.
  • Podporuje spustený kód napísaný v ľubovoľnom jazyku s niektorými bežnými časmi behu zabalenými v rámci.
  • Spustí vykonanie kódu mnohými druhmi udalostí - koncový bod HTTP, správa vo fronte alebo nejaký iný háčik.

Jednou z hlavných výhod budovania bez servera na Kubernetes je získanie oveľa väčšej kontroly nad základnou platformou. Mnoho ponúk bez servera obmedzuje správanie funkcií, ktoré spúšťajú, čo niekedy robí niektoré triedy aplikácií nepraktickými. S Kubernetes môžete vytvoriť platformu bez servera, ktorá vyhovuje vašim potrebám, prenechať infraštruktúru vašim operátorom Kubernetes a nechať vývojárov zamerať sa na písanie základného kódu.

Tu je päť hlavných projektov, ktoré do Kubernetes prinášajú funkčnosť bez servera.

Štiepenie

Štiepenie je vytvárané a udržiavané spoločnosťou Kubernetes spravovanou spoločnosťou Platform 9. Platforma je slávne predovšetkým vďaka tomu, že vám umožňuje vytvárať aplikácie FaaS bez toho, aby ste museli vytvárať kontajnery, a to iba poskytnutím definičných súborov.

Štiepenie je možné inštalovať s Helmovým grafom alebo bez neho a je možné ho nainštalovať v ktoromkoľvek z dvoch vydaní. K dispozícii je plnohodnotná verzia so správou frontov a podporou protokolu InfluxDB pre prihlásenie a odizolovaná verzia so základnými funkciami. Prvý je určený na nasadenie vo výrobe a druhý na zvlhčenie nôh.

Ak chcete pridať kód do nasadenia Fission, použijete súbory spec založené na YAML. Nástroje príkazového riadku spoločnosti Fission vám umožňujú vytvárať súbory YAML pre vaše funkcie a trasy použité na spustenie ich vstupných bodov. Súbor spec vám tiež umožňuje poskytnúť premenné prostredia, pomocné kontajnery, zväzky a ovládacie prvky kumulácie / tolerancie Kubernetes pre kód.

Štiepenie tiež poskytuje „pracovné toky“. Inštalované Helmovým grafom, pracovné toky odovzdávajú výstup jednej funkcie do inej funkcie. Tieto funkcie nemusia byť ani v rovnakom jazyku. Upozorňujeme, že to stojí náklady na výkon, pretože výstup každej funkcie je vykreslený do výmenného formátu, aj keď systém pracovných tokov podporuje veľa bežných primitívnych binárnych typov na udržanie režijných nákladov nadol (napr. Celé číslo alebo generický bajtový prúd).

Jednou z nevýhod pôvodne spojených s FaaS bolo, že pri prvom vyvolaní funkcie došlo k citeľnému oneskoreniu spustenia kontajnera, ktorý je s ňou spojený. Štiepenie udržuje nádoby predhriate na minimalizáciu latencie pri prvom spustení funkcie.

Fission ponúka ďalšie vymoženosti pre vývojárov aj správcov. Službu je možné nasadiť do klastra, ktorý nemá externý prístup na internet, a kód je možné na požiadanie znova načítať do klastra. Na uľahčenie ladenia je možné tiež zaznamenať a prehrať funkčnú aktivitu.

Projekt štiepenia je k dispozícii pod vysoko liberálnou licenciou Apache, takže ho podľa potreby možno ľubovoľne prepracovať.

Nožom

Spoločnosť Knative, ktorú pôvodne vytvoril Google na spustenie aplikácií bez serverov na serveri Kubernetes, sa zameriava na vzory bežné pre nasadenia bez serverov vo výrobe. Knative vyžaduje priame skúsenosti s riadením mnohých komponentov Kubernetes, aby bolo možné ich efektívne využívať.

Okrem Kubernetes vyžaduje Knative smerovací systém alebo sieť služieb, ako je Istio, ale je možné použiť aj ďalšie možnosti, ako sú Ambassador a Gloo. To znamená trochu viac nastavovania, ale projekt má podrobné príručky pre použitie jednotlivých možností v rôznych cloudových službách a prostrediach Kubernetes, vrátane vanilla Kubernetes.

Knative funguje hlavne využitím alebo rozšírením existujúcich nástrojov a funkcií Kubernetes. Aplikácie alebo funkcie sa konfigurujú pomocou súborov YAML a dodávajú sa ako Dockerove kontajnery, ktoré zostavujete. Pridávanie, úprava alebo mazanie definícií sa vykonáva prostredníctvom kubectl aplikácia príkazového riadku. Metriky v aplikáciách Knative nájdete v aplikácii Grafana. Škálovanie je možné vykonať pomocou vlastného automatického škálovača Knative alebo pomocou iného škálovača kompatibilného s Kubernetes, vrátane vlastného napísaného.

Knative je vo vysokom vývoji a mnoho z jeho vyhradených nástrojov je stále v hrubom stave. Tie obsahujúknctl, CLI špeciálne pre Knative, čo vám ušetrí problémy s používaním ďalších nástrojov Kubernetes na správu Knative, ak sa chcete zamerať iba na Knative; a ko, nástroj na vytváranie aplikácií Go v službe Knative, a to tak, že sa odstráni krok zostavovania kontajnera.

Kubeless

Kubeless vytvorili Bitnami, vývojári jednoduchých inštalátorov pre bežné zásobníky webových aplikácií. Spoločnosť Kubeless na spracovanie funkcií používa pôvodné definície vlastných zdrojov Kubernetes, takže medzi metaforami Kubernetes a funkčnosťou Kubeless je o niečo menšia abstrakcia.

Najbežnejšie jazykové moduly runtime prichádzajú s platformou: .NET, Java, Python, Node.js, PHP, Ruby, Go a dokonca aj nový jazyk Ballerina pre vývoj v prostredí cloudu. Runtime sú iba obrázky Dockeru, hoci Kubeless má špecifický formát balenia na použitie súborov Docker na vytváranie vlastných runtime.

Ďalšou užitočnou funkciou Kubeless je jeho CLI, ktoré je príkazovo identické s AWS Lambda CLI. To je mimoriadne výhodné, ak chcete migrovať z AWS Lambda, ale chcete zachovať niektoré existujúce skripty pre správu alebo sa len nemusíte učiť úplne novú sadu príkazov.

Kubeless funguje aj ako doplnok pre Serverless Framework, systém na vytváranie aplikácií bez serverov na rôznych architektúrach. Ak už používate Serverless alebo Kubeless, bude jednoduchšie pridať jeden z nich ako použiť niečo iné.

OpenFaaS

Výška tónu pre OpenFaaS je „zjednodušenie funkcií bez servera“. Jednoducho, vývojári myslia „nie je o nič ťažšie ako nasadenie kontajnera Docker“.

OpenFaaS je možné nasadiť buď do Kubernetes, alebo do klastra Docker Swarm (na lokálne testovanie alebo na použitie s nízkym dopytom). Pomocou rozhrania OpenFaaS CLI môžete vytvárať, tlačiť a nasadzovať obrázky Dockeru do klastra na vykonávanie funkcií. Existujúce šablóny poskytujú vopred pripravené spôsoby nasadenia aplikácií napísaných v jazykoch Go, Python, Node.js, .NET, Ruby, Java alebo PHP 7, hoci kedykoľvek môžete použiť vlastné. OpenFaaS CLI vám tiež poskytuje spôsoby, ako spravovať tajomstvá vo vašom klastri, zatiaľ čo zabudované webové používateľské rozhranie vám umožňuje vytvárať nové funkcie a spravovať ich.

Ďalšia verzia OpenFaaS, OpenFaaS Cloud, prebaľuje OpenFaaS s funkciami pre viacerých vývojárov vrátane integrácie s Git (vrátane GitHub a samoobslužných vydaní GitLab), CI / CD, správy tajomstiev, HTTPS a možnosti napájania udalostí na Slack a ďalšie umývadlá. OpenFaas Cloud je k dispozícii ako bezplatný produkt s otvoreným zdrojovým kódom a v hostovanej verzii, ktorá je momentálne zadarmo na použitie.

OpenWhisk

Apache OpenWhisk je účtovaný ako generická platforma bez servera. Kubernetes je iba jednou z niekoľkých možností dostupných na spustenie kontajnerov v OpenWhisku, pretože OpenWhisk podporuje aj Mesos a Docker Compose. Napriek tomu je Kubernetes preferovaný vďaka svojmu nástroju na nasadenie aplikácií, najmä Helmových grafov. IBM Cloud Functions je založený na projekte OpenWhisk, takže môže pracovať aj s príkazmi OpenWhisk CLI.

Na rozdiel od väčšiny ostatných rámcov Kubernetes bez serverov je OpenWhisk napísaný v jazyku Scala, nie v jazyku Go (v ktorom sú písané Kubernetes aj Docker). Pravdepodobne to bude problém, iba ak chcete hacknúť na OpenWhisk a máte skúsenosti iba s Go.

Väčšina populárnych možností behu aplikácie je dodávaná s balíkom OpenWhisk: Java, Node.js, Python, Ruby, PHP a .NET. Zahrnuté sú navyše aj mnohé ezoterické a špičkové možnosti: Scala, Ballerina, Swift a Rust. Runtime sú iba Dockerove kontajnery, takže je ľahké poskytnúť si vlastné.

Jednou z pohodlných funkcií nasadenia OpenWhisk sú „akcie zip“. Pomocou súboru manifestu pre balík kódov nasmerujte archív kódu a pomocných súborov na OpenWhisk a OpenWhisk z neho vytvorí akciu. OpenWhisk CLI obsahuje aj nástroje na transformáciu adresárového stromu kódu do takého archívu. A katalóg balíkov služieb uľahčuje pripojenie vašej aplikácie k bežným ponukám tretích strán, ako sú GitHub, Slack, Apache Kafka alebo Jira.

$config[zx-auto] not found$config[zx-overlay] not found