5 načina za rad bez poslužitelja na Kubernetesu

Nazovite ga „bez poslužitelja“, nazovite ga „izračunavanjem vođenim događajima“ ili ga nazovite „funkcionira kao usluga (FaaS)“, ideja je ista: dinamički dodijeliti resurse za pokretanje pojedinih funkcija, u osnovi mikroservisa, koje se pozivaju kao odgovor događajima. Računalne platforme bez poslužitelja omogućavaju programerima da se usredotoče na aplikaciju, a ne na temeljnu infrastrukturu i sve pojedinosti o upravljanju.

Većina davatelja usluga u oblaku nudi neku vrstu platforme bez poslužitelja, no jednu možete sami izgraditi sa samo dva sastojka. Jedan je Kubernetes, sustav orkestracije spremnika koji je postao standardna platforma za izgradnju komponentiziranih, elastičnih aplikacija. Drugi je bilo koji od niza sustava koji se koriste za izgradnju obrazaca aplikacija bez poslužitelja u Kubernetesu.

Većina beskućničkih okvira za Kubernetes imaju ove zajedničke značajke:

  • Primjenjuje se u bilo koje okruženje koje podržava Kubernetes, lokalno ili udaljeno, uključujući okruženja poput OpenShift-a.
  • Podržava pokrenut kôd napisan na bilo kojem jeziku, s nekim uobičajenim vremenima izvršavanja unaprijed upakiranim u okvir.
  • Pokreće izvršavanje koda mnogim vrstama događaja - HTTP krajnja točka, poruka u redu ili neka druga udica.

Jedna od glavnih prednosti izgradnje bez poslužitelja na Kubernetesu je stjecanje daleko veće kontrole nad osnovnom platformom. Mnoge ponude bez poslužitelja ograničavaju ponašanje funkcija koje izvode, ponekad čine određene klase aplikacija nepraktičnim. Pomoću Kubernetesa možete stvoriti platformu bez poslužitelja koja odgovara vašim potrebama, prepuštajući infrastrukturu svojim Kubernetesovim operaterima i dopuštajući svojim programerima da se usredotoče na pisanje bitnog koda.

Evo pet glavnih projekata koji Kubernetesu donose funkcionalnost bez poslužitelja.

Fisija

Fisiju stvara i održava upravljana tvrtka Kubernetes Platform 9. Njegova glavna tvrdnja da je slava omogućuje vam stvaranje FaaS aplikacija bez potrebe za gradnjom spremnika, samo isporukom definicijskih datoteka.

Fisija se može instalirati sa ili bez Helmove karte, a može se instalirati u bilo koje od dva izdanja. Postoji potpuno puna verzija s redom poruka i podrškom za InfluxDB za prijavu te uklonjeno izdanje s osnovnim služenjem funkcija. Prva je dizajnirana za proizvodnju, a druga za vlaženje nogu.

Da biste dodali kôd u implementaciju Fisije, koristite specifikacijske datoteke temeljene na YAML-u. Fissionov alat za naredbene retke omogućuje vam stvaranje YAML datoteka za vaše funkcije i rute korištene za aktiviranje njihovih ulaznih točaka. Datoteka sa specifikacijama također vam omogućuje da pružite varijable okruženja, pomoćne spremnike, volumene i Kubernetesove kontrole / tolerancije koda.

Fisija također pruža "tijekove rada". Instaliran pomoću Helmove sheme, tijekovi rada prosljeđuju izlaz jedne funkcije drugoj funkciji. Funkcije ne moraju biti na istom jeziku. Imajte na umu da ovo ima trošak izvedbe, jer se izlaz svake funkcije prikazuje u formatu razmjene, iako sustav tijeka rada podržava mnoge uobičajene primitivne binarne tipove kako bi se smanjio (npr. Cijeli broj ili generički tok bajtova).

Jedna od loših strana izvorno povezanih s FaaS-om bila je ta što je prvi put kada je funkcija pozvana, došlo do osjetnog kašnjenja u pokretanju spremnika povezanog s njom. Fisijom se spremnici prethodno zagrijavaju kako bi se smanjila latencija pri prvom pokretanju funkcije.

Fisija nudi druge pogodnosti i za programere i za administratore. Usluga se može rasporediti u klaster koji nema vanjski pristup Internetu, a kôd se može na zahtjev ponovo učitati u klaster. Aktivnost funkcije također se može snimati i reproducirati radi olakšavanja pogrešaka.

Projekt fisije dostupan je pod visoko liberalnom licencom Apache, pa se prema potrebi može slobodno preraditi.

Knative

Izvorno stvoren od strane Googlea za pokretanje aplikacija bez poslužitelja na Kubernetesu, Knative se usredotočuje na obrasce zajedničke implementacijama bez poslužitelja u proizvodnji. Knative, međutim, zahtijeva izravnu stručnost u upravljanju mnogim Kubernetes komponentama za učinkovitu upotrebu.

Uz Kubernetes, Knative zahtijeva sustav usmjeravanja ili mrežnu mrežu kao što je Istio, ali mogu se koristiti i druge opcije poput Ambassador i Gloo. To znači malo više postavljanja posla, ali projekt ima detaljne vodiče za korištenje svake opcije u raznim oblačnim uslugama i Kubernetesovim okruženjima, uključujući vanilin Kubernetes.

Knative djeluje uglavnom iskorištavanjem ili proširivanjem postojećeg alata i funkcionalnosti Kubernetesa. Aplikacije ili funkcije konfiguriraju se putem YAML datoteka i isporučuju kao Docker spremnici koje gradite. Dodavanje, izmjena ili brisanje definicija vrši se putem kubectlaplikacije naredbenog retka. Za mjerne podatke u aplikacijama Knative upotrijebite Grafana. Skaliranje se može izvesti vlastitim autoskalerom tvrtke Knative ili bilo kojim drugim skalarom kompatibilnim s Kubernetesom, uključujući prilagođeni.

Knative je u teškom razvoju, a mnogi od njegovih namjenskih alata još uvijek su u grubom stanju. Tu spadaju  knctlCLI posebno za Knative, koji vas štedi gnjavaže s korištenjem drugih Kubernetesovih alata za upravljanje Knativeom ako se samo želite usredotočiti na Knative; i ko, alat za izgradnju Go aplikacija na Knativeu uklanjanjem koraka izrade spremnika.

Kubeless

Kubeless je stvorio Bitnami, programeri jednostavnih instalatera za uobičajene hrpe web aplikacija. Kubeless koristi Kubernetesove izvorne prilagođene definicije resursa za obradu funkcija, tako da je nešto manje apstrakcije između Kubernetesovih metafora i Kubeless funkcionalnosti.

Najčešća izvođenja jezika dolaze s platformom: .NET, Java, Python, Node.js, PHP, Ruby, Go, pa čak i novi jezik Ballerina za razvoj u oblaku. Runtimes su samo Dockerove slike, iako Kubeless ima određeni format pakiranja za korištenje Dockerfilesa za izradu prilagođenih runtimeova.

Još jedna zgodna Kubeless značajka je CLI, koji je naredbeno identičan AWS Lambda CLI. Ovo je izuzetno povoljno ako želite migrirati s AWS Lambde, ali želite sačuvati neke od postojećih upravljačkih skripti ili jednostavno ne morate naučiti cijeli novi skup naredbi.

Kubeless također radi kao dodatak za Serverless Framework, sustav za izgradnju aplikacija bez poslužitelja na raznim arhitekturama. Ako već upotrebljavate Serverless ili Kubeless, lakše ćete dodati bilo koji od njih nego koristiti nešto drugo.

OpenFaaS

Visina za OpenFaaS je "funkcije bez poslužitelja pojednostavljene." Jednostavno, programeri podrazumijevaju "ne puno teže od postavljanja Dockerovog spremnika."

OpenFaaS se može postaviti na Kubernetes ili na Docker Swarm klaster (za lokalno testiranje ili upotrebu s malim zahtjevima). CLF OpenFaaS koristite za izgradnju, guranje i postavljanje Dockerovih slika u klaster za pokretanje funkcija. Postojeći predlošci pružaju unaprijed izrađene načine za raspoređivanje aplikacija napisanih u Go, Python, Node.js, .NET, Ruby, Java ili PHP 7, iako uvijek možete pokrenuti vlastiti. CLI OpenFaaS također vam nudi načine za upravljanje tajnama u vašem klasteru, dok ugrađeno web korisničko sučelje omogućuje stvaranje novih funkcija i upravljanje njima.

Druga verzija OpenFaaS-a, OpenFaaS Cloud, prepakira OpenFaaS sa značajkama za više razvojnih programera, uključujući integraciju s Gitom (uključujući GitHub i izdanja GitLab-a koja se hostiraju samostalno), CI / CD, upravljanje tajnama, HTTPS i mogućnost hranjenja događaja u Slack i druge tonu. OpenFaas Cloud dostupan je kao besplatni proizvod otvorenog koda i u hostiranoj verziji koja je trenutno besplatna za upotrebu.

OpenWhisk

Apache OpenWhisk naplaćuje se kao generička platforma bez poslužitelja. Kubernetes je samo jedna od nekoliko opcija dostupnih za pokretanje spremnika u OpenWhisku, jer OpenWhisk također podržava Mesos i Docker Compose. Ipak, Kubernetes je poželjniji zbog alata za implementaciju aplikacija, posebno Helmovih ljestvica. IBM Cloud Functions temelji se na projektu OpenWhisk, tako da može raditi i s naredbama OpenWhisk CLI.

Za razliku od većine ostalih Kubernetesovih okvira bez poslužitelja, OpenWhisk je napisan na jeziku Scala, a ne Go (u koji su napisani i Kubernetes i Docker). To će vjerojatno biti problem samo ako želite hakirati OpenWhisk i ako imate iskustvo samo s Goom. 

Većina popularnih opcija izvršavanja aplikacija dolazi u pretpakiranju s OpenWhisk-om: Java, Node.js, Python, Ruby, PHP i .NET. Uz to, uključene su i mnoge ezoterične i najmodernije opcije: Scala, Ballerina, Swift i Rust. Vremena izvođenja su samo Docker-ovi kontejneri, pa ih je lako osigurati vlastitim.

Jedna prikladna značajka implementacije OpenWhiska je "zip akcije". Usmjerite .zip arhivu koda i pomoćnih datoteka na OpenWhisk pomoću datoteke manifesta za paket koda, a OpenWhisk će od njega stvoriti akciju. CLI OpenWhisk također uključuje alate za pretvaranje stabla direktorija koda u takvu arhivu. A katalog paketa usluga olakšava uključivanje vaše aplikacije u uobičajene ponude trećih strana poput GitHub, Slack, Apache Kafka ili Jira.