Programiranje

5 načinov, kako narediti brez strežnika Kubernetes

Pokličite ga "brez strežnika", "izračunajte na podlagi dogodkov" ali "funkcij kot storitev (FaaS)", ideja je enaka: dinamično dodelite vire za zagon posameznih funkcij, v bistvu mikro storitev, ki se prikličejo kot odgovor do dogodkov. Računalniške platforme brez strežnikov omogočajo razvijalcem aplikacij, da se osredotočijo na aplikacijo, ne na osnovno infrastrukturo in vse njene podrobnosti upravljanja.

Večina ponudnikov oblakov ponuja nekakšno platformo brez strežnika, vendar jo lahko sami sestavite le z dvema sestavinama. Eden je Kubernetes, sistem za orkestracijo zabojnikov, ki je postal standardna platforma za izdelavo komponentnih, odpornih aplikacij. Drugi je kateri koli od številnih sistemov, ki se uporabljajo za izdelavo vzorcev aplikacij brez strežnika v Kubernetesu.

Večina brezstrežniških okvirov za Kubernetes ima naslednje značilnosti:

  • Uporablja se v katerem koli okolju, ki podpira Kubernetes, lokalno ali oddaljeno, vključno z okolji, kot je OpenShift.
  • Podpira tekočo kodo, napisano v katerem koli jeziku, z nekaterimi običajnimi izvedbami, ki so predpakirane v ogrodje.
  • Sproži izvajanje kode s številnimi vrstami dogodkov - končno točko HTTP, sporočilo v čakalni vrsti ali kakšen drug kavelj.

Ena glavnih prednosti gradnje brez strežnikov na Kubernetesu je pridobitev veliko večjega nadzora nad osnovno platformo. Številne ponudbe brez strežnikov omejujejo vedenje funkcij, ki jih izvajajo, zaradi česar so nekateri razredi aplikacij nepraktični. S programom Kubernetes lahko ustvarite platformo brez strežnika, ki ustreza vašim potrebam, prepusti infrastrukturo vašim operaterjem Kubernetes in se razvijalcem omogoči, da se osredotočijo na pisanje bistvene kode.

Tukaj je pet glavnih projektov, ki Kubernetesu ponujajo brezstrežne funkcije.

Cepitev

Fisijo ustvarja in vzdržuje upravljana Kubernetesova družba Platform 9. Njegova glavna trditev je, da vam omogoča ustvarjanje aplikacij FaaS, ne da bi vam bilo treba graditi zabojnike, samo z dobavo definicijskih datotek.

Fisijo lahko namestite s Helmovo karto ali brez nje in jo lahko namestite v katero koli od dveh različic. Obstaja popolna različica s čakalno vrsto sporočil in podporo za influxDB za beleženje ter odstranjena izdaja z vročanjem osnovnih funkcij. Prvi je namenjen uvajanju v proizvodnjo, drugi pa namakanju nog.

Za dodajanje kode uvajanju Fission uporabite specifikacijske datoteke, ki temeljijo na YAML. Orodje Fission z ukazno vrstico vam omogoča ustvarjanje datotek YAML za vaše funkcije in poti, ki se uporabljajo za sprožitev njihovih vstopnih točk. Datoteka s specifikacijami vam omogoča tudi, da za kodo zagotovite spremenljivke okolja, pomožne vsebnike, nosilce in nadzor nad umazanijo / toleranco Kubernetes.

Fisija zagotavlja tudi "delovne tokove". Potek dela, ki ga namesti Helmov diagram, posreduje izhod ene funkcije drugi funkciji. Ni nujno, da so funkcije v istem jeziku. Upoštevajte, da je to stroškovno učinkovito, saj se izhod vsake funkcije upodobi v format izmenjave, čeprav sistem delovnega toka podpira številne običajne primitivne binarne tipe, ki jih ni treba plačati (npr. Celo število ali splošni tok bajtov).

Ena od slabosti, prvotno povezanih s FaaS, je bila, da je pri prvem priklicu funkcije prišlo do zaznavne zamude pri zagonu vsebnika, povezanega z njo. Fission ohranja vsebnike predhodno ogrete, da zmanjša zakasnitev ob prvem zagonu funkcije.

Fisija ponuja druge ugodnosti tako za razvijalce kot za skrbnike. Storitev je mogoče razporediti v gručo, ki nima zunanjega dostopa do interneta, kodo pa lahko na zahtevo znova naložite v gručo. Dejavnost funkcije je mogoče tudi snemati in predvajati, da pomaga pri odpravljanju napak.

Projekt fisije je na voljo pod zelo liberalno licenco Apache, zato ga je mogoče po potrebi prosto predelati.

Knative

Knative ga je prvotno ustvaril Google za zagon aplikacij brez strežnika na Kubernetesu in se osredotoča na vzorce, ki so skupni uvedbi brez strežnikov v proizvodnji. Knative pa za učinkovito uporabo zahteva neposredno strokovno znanje pri upravljanju številnih komponent Kubernetes.

Poleg Kubernetesa Knative zahteva sistem usmerjanja ali servisno mrežo, kot je Istio, lahko pa uporabite tudi druge možnosti, kot sta Ambassador in Gloo. To pomeni malo več delovnih nastavitev, vendar ima projekt podrobne smernice za uporabo posamezne možnosti v različnih oblačnih storitvah in okoljih Kubernetes, vključno z vanilijevim Kubernetesom.

Knative deluje predvsem z izkoriščanjem ali razširitvijo obstoječih orodij in funkcionalnosti Kubernetes. Aplikacije ali funkcije so konfigurirane z datotekami YAML in dostavljene kot vsebniki Dockerja, ki jih zgradite. Dodajanje, spreminjanje ali brisanje definicij poteka prek kubectl aplikacija ukazne vrstice. Za meritve v aplikacijah Knative uporabite Grafana. Skaliranje lahko izvedemo z lastnim samodejnim skalatorjem podjetja Knative ali s katerim koli drugim, združljivim s Kubernetesom, vključno s prilagojenim.

Knative je v težkem razvoju in veliko namenskih orodij je še vedno v grobem stanju. Tej vključujejoknctl, CLI posebej za Knative, ki vam prihrani težav pri uporabi drugih Kubernetesovih orodij za upravljanje Knative, če se želite osredotočiti samo na Knative; in ko, orodje za gradnjo aplikacij Go na Knative z odpravo koraka izdelave vsebnika.

Kubeless

Kubeless je ustvaril Bitnami, razvijalci preprostih namestitvenih programov za običajne sklade spletnih aplikacij. Kubeless za obdelavo funkcij uporablja domače definicije virov po meri Kubernetes, zato je med metaforami Kubernetes in funkcionalnostjo Kubeless nekoliko manj abstrakcije.

Najpogostejši izvajalni jeziki prihajajo s platformo: .NET, Java, Python, Node.js, PHP, Ruby, Go in celo novi jezik Ballerina za razvoj v oblaku. Časi izvajanja so samo Dockerjeve slike, čeprav ima Kubeless poseben format embalaže za uporabo Dockerfiles za izdelavo po meri.

Druga priročna funkcija Kubeless je CLI, ki je ukazno enak AWS Lambda CLI. To je izjemno priročno, če se želite preseliti iz AWS Lambda, vendar želite ohraniti nekaj obstoječih skriptov za upravljanje ali pa se vam preprosto ni treba naučiti povsem novega nabora ukazov.

Kubeless deluje tudi kot vtičnik za Serverless Framework, sistem za gradnjo brezstrežnih aplikacij na različnih arhitekturah. Če že uporabljate Serverless ali Kubeless, boste enostavneje dodali enega od drugega.

OpenFaaS

Visina za OpenFaaS je "enostavne funkcije brez strežnika." Preprosto razvijalci pomenijo, da "ni veliko težje od uvajanja Dockerjevega vsebnika."

OpenFaaS je mogoče namestiti bodisi v Kubernetes bodisi v gručo Docker Swarm (za lokalno testiranje ali uporabo z majhnim povpraševanjem). CLI OpenFaaS uporabljate za gradnjo, potiskanje in razmestitev slik Dockerja v gruči za zagon funkcij. Obstoječe predloge ponujajo vnaprej pripravljene načine za razmestitev aplikacij, napisanih v Go, Python, Node.js, .NET, Ruby, Java ali PHP 7, čeprav lahko svoje vedno zvišate. CLI OpenFaaS vam ponuja tudi načine za upravljanje skrivnosti v svoji gruči, medtem ko vgrajeni spletni uporabniški vmesnik omogoča ustvarjanje novih funkcij in upravljanje z njimi.

Druga različica OpenFaaS, OpenFaaS Cloud, pakira OpenFaaS s funkcijami za več razvijalcev, vključno z integracijo z Git (vključno z GitHubom in samostojnimi izdajami GitLab), CI / CD, upravljanje s skrivnostmi, HTTPS in možnostjo hranjenja dogodkov v Slack in druge ponori. OpenFaas Cloud je na voljo kot brezplačen odprtokodni izdelek in v gostujoči različici, ki je trenutno brezplačna za uporabo.

OpenWhisk

Apache OpenWhisk se obračunava kot generična platforma brez strežnika. Kubernetes je le ena od številnih možnosti, ki so na voljo za zagon vsebnikov v programu OpenWhisk, saj OpenWhisk podpira tudi Mesos in Docker Compose. Kljub temu je Kubernetes prednost zaradi orodja za uvajanje aplikacij, zlasti Helmovih kart. IBM Cloud Functions temelji na projektu OpenWhisk, zato lahko deluje tudi z ukazi OpenWhisk CLI.

Za razliko od večine drugih ogrodja Kubernetes brez strežnika je OpenWhisk napisan v jeziku Scala in ne Go (v katerem sta napisana tako Kubernetes kot Docker). To bo verjetno težava le, če želite vdreti v OpenWhisk in imate le izkušnje z Go.

Večina priljubljenih možnosti izvajanja aplikacij je predpakiranih z OpenWhisk: Java, Node.js, Python, Ruby, PHP in .NET. Poleg tega so vključene tudi številne ezoterične in najsodobnejše možnosti: Scala, Ballerina, Swift in Rust. Časi izvajanja so samo Dockerjevi vsebniki, zato jih lahko enostavno zagotovite sami.

Ena priročna funkcija uvajanja OpenWhisk je »zip actions«. Usmerite arhiv .zip kode in pomožnih datotek v OpenWhisk, tako da uporabite datoteko manifesta za paket kod, in OpenWhisk bo iz njega ustvaril dejanje. CLI OpenWhisk vključuje tudi orodja za pretvorbo imeniškega drevesa kode v takšen arhiv. Katalog paketov storitev olajša vključitev aplikacije v običajne ponudbe tretjih oseb, kot so GitHub, Slack, Apache Kafka ali Jira.

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