Ohjelmointi

5 tapaa tehdä palvelin ilman Kubernetesia

Kutsu sitä "palvelimettomaksi", kutsu sitä "tapahtumavetoiseksi laskelmaksi" tai kutsu sitä "toimii palveluna (FaaS)". Idea on sama: allokoi resurssit dynaamisesti yksittäisten toimintojen, lähinnä mikropalvelujen, suorittamiseksi, jotka kutsutaan vastauksena tapahtumiin. Palvelimettomat laskenta-alustat antavat sovelluskehittäjille mahdollisuuden keskittyä sovellukseen, ei taustalla olevaan infrastruktuuriin ja kaikkiin sen hallintatietoihin.

Useimmat pilvipalvelujen tarjoajat tarjoavat jonkinlaisen palvelimettoman alustan, mutta voit itse rakentaa sellaisen vain kahdella ainesosalla. Yksi on Kubernetes, konttiorkesterijärjestelmä, josta on tullut vakioalusta komponentoitujen, joustavien sovellusten rakentamiseen. Toinen on mikä tahansa monista järjestelmistä, joita käytetään palvelimettomien sovelluskuvioiden rakentamiseen Kubernetesissa.

Suurimmalla osalla Kubernetesin palvelimettomista kehyksistä on nämä yhteiset ominaisuudet:

  • Asennetaan mihin tahansa ympäristöön, joka tukee Kubernetesia paikallisesti tai etänä, mukaan lukien ympäristöt, kuten OpenShift.
  • Tukee käynnissä olevaa koodia, joka on kirjoitettu millä tahansa kielellä, ja joitakin yleisiä ajonaikoja on pakattu kehykseen.
  • Käynnistää koodin suorittamisen monenlaisilla tapahtumilla - HTTP-päätepisteellä, jonoviestillä tai muulla koukulla.

Yksi merkittävä etu palvelimettoman rakentamisessa Kubernetesille on saada huomattavasti parempi hallinta taustalla olevasta alustasta. Monet palvelimettomat palvelut rajoittavat suorittamiensa toimintojen käyttäytymistä, mikä toisinaan tekee tietyistä sovellusluokista epäkäytännöllisiä. Kubernetesin avulla voit luoda palvelimettoman alustan, joka vastaa tarpeitasi, jättää infrastruktuurin Kubernetes-operaattoreillesi ja antaa kehittäjien keskittyä tärkeän koodin kirjoittamiseen.

Tässä on viisi suurta projektia, jotka tuovat palvelimettoman toiminnallisuuden Kubernetesiin.

Fissio

Fissiota luo ja ylläpitää hallinnoitu Kubernetes-yritys Platform 9. Sen pääasiallinen maine on, että sen avulla voit luoda FaaS-sovelluksia ilman, että sinun tarvitsee rakentaa kontteja, vain toimittamalla määritystiedostoja.

Fission voidaan asentaa joko Helm-kaavion kanssa tai ilman, ja se voidaan asentaa jompaankumpaan kahdesta versiosta. Siellä on täysversio, jossa on viestijono ja InfluxDB-tuki kirjaamista varten, ja poistettu versio, jossa on perustoimintojen tarjoaminen. Ensimmäinen on suunniteltu tuotantokäyttöön ja jälkimmäinen jalkojesi kasteluun.

Voit lisätä koodia Fission-käyttöönottoon käyttämällä YAML-pohjaisia ​​spec-tiedostoja. Fissionin komentorivityökalujen avulla voit luoda YAML-tiedostoja toiminnoillesi ja reiteille, joita käytetään niiden alkupisteiden käynnistämiseen. Spec-tiedoston avulla voit antaa koodille myös ympäristömuuttujia, apusäiliöitä, volyymeja ja Kubernetesin tahra / suvaitsevaisuuden säätimiä.

Fissio tarjoaa myös "työnkulkuja". Helm-kaavion asentamat työnkulut siirtävät yhden toiminnon lähdön toiselle toiminnolle. Toimintojen ei tarvitse edes olla samalla kielellä. Huomaa, että tästä aiheutuu suorituskykykustannuksia, koska kunkin toiminnon tuotos hahmotellaan vaihtomuotoon, vaikka työnkulkujärjestelmä tukee monia yleisiä primitiivisiä binäärityyppejä pitääkseen yleiskustannukset alhaalla (esim. Kokonaisluku tai yleinen tavuvirta).

Yksi alun perin FaaS: ään liittyvistä haitoista oli se, että ensimmäistä kertaa kun toimintoa käytettiin, siihen liittyvän kontin käynnistäminen viivästyi huomattavasti. Fissio pitää säiliöt esilämmitettynä viiveen minimoimiseksi toiminnon ensimmäisellä käyttökerralla.

Fission tarjoaa muita mukavuuksia sekä kehittäjille että järjestelmänvalvojille. Palvelu voidaan ottaa käyttöön klusterissa, jolla ei ole ulkoista Internet-yhteyttä, ja koodi voidaan ladata nopeasti klusteriin tarvittaessa. Toimintotoiminta voidaan myös tallentaa ja toistaa uudelleen virheenkorjauksen helpottamiseksi.

Fissio-projekti on saatavana erittäin liberaalilla Apache-lisenssillä, joten sitä voidaan muokata vapaasti tarpeen mukaan.

Viehättävä

Alun perin Google on luonut palvelimettomat sovellukset Kubernetesille, ja Knative keskittyy tuotantopalvelimettomille yhteisille malleille. Knative vaatii kuitenkin suoraa asiantuntemusta monien Kubernetes-komponenttien hallinnassa, jotta niitä voidaan käyttää tehokkaasti.

Kubernetesin lisäksi Knative vaatii reititysjärjestelmän tai palveluverkon, kuten Istion, mutta myös muita vaihtoehtoja, kuten Ambassador ja Gloo, voidaan käyttää. Tämä tarkoittaa hieman enemmän työn asettamista, mutta projektissa on yksityiskohtaiset ohjeet kunkin vaihtoehdon käyttämiseen erilaisissa pilvipalveluissa ja Kubernetes-ympäristöissä, mukaan lukien vanilja Kubernetes.

Knative toimii pääasiassa hyödyntämällä tai laajentamalla olemassa olevia Kubernetes-työkaluja ja -toimintoja. Sovellukset tai toiminnot määritetään YAML-tiedostoilla ja toimitetaan luomiesi Docker-säilöinä. Määritelmien lisääminen, muokkaaminen tai poistaminen tapahtuu kubectl komentorivisovellus. Käytä tietokonesovellusten mittareita Grafanalla. Skaalaus voidaan tehdä Knativein omalla automaattisella skaalaimella tai millä tahansa muulla Kubernetes-yhteensopivalla skaalaimella, mukaan lukien räätälöity.

Knative on kovassa kehityksessä, ja monet sen omistetuista työkaluista ovat edelleen epäkunnossa. Nämä sisältävätknctl, nimenomaan Knativeille tarkoitettu CLI, mikä säästää vaivaa käyttää Kubernetesin muita työkaluja Knativeen hallintaan, jos haluat keskittyä vain Knativeen; ja ko, työkalu Go-sovellusten rakentamiseen Knativeen poistamalla konttien koontivaihe.

Kubeless

Kubelessin on luonut Bitnami, joka on helppojen asentajien kehittäjä tavallisille verkkosovelluspinoille. Kubeless käyttää Kubernetesin alkuperäisiä mukautettuja resurssimääritelmiä funktioiden käsittelemiseen, joten Kubernetes-metaforojen ja Kubeless-toiminnallisuuden välillä on hieman vähemmän abstraktiota.

Yleisimmät kielenkäyttöajat tulevat alustan mukana: .NET, Java, Python, Node.js, PHP, Ruby, Go ja jopa uusi Ballerina-kieli pilvikehitykseen. Ajonajat ovat vain Docker-kuvia, vaikka Kubelessilla on erityinen pakkausmuoto Docker-tiedostojen käyttämiseen mukautettujen ajoaikojen rakentamiseen.

Toinen kätevä Kubeless-ominaisuus on sen CLI, joka on komento-identtinen AWS Lambda CLI: n kanssa. Tämä on erittäin kätevää, jos haluat siirtyä pois AWS Lambdasta, mutta haluat säilyttää osan olemassa olevista hallintakoodeista tai sinun ei tarvitse oppia kokonaan uutta komentojoukkoa.

Kubeless toimii myös laajennuksena Serverless Frameworkille, järjestelmälle, joka rakentaa palvelimettomia sovelluksia useisiin arkkitehtuureihin. Jos käytät jo Serverless- tai Kubeless-palvelua, sinulla on helpompaa lisätä jompikumpi kuin jotain muuta.

OpenFaaS

OpenFaaS: n sävelkorkeus on "yksinkertaiset palvelintoiminnot". Yksinkertaisesti kehittäjät tarkoittavat "ei ole paljon vaikeampaa kuin Docker-kontin käyttöönotto".

OpenFaaS voidaan ottaa käyttöön joko Kubernetesiin tai Docker Swarm -klusteriin (paikallista testausta tai vähän kysyntää varten). Voit rakentaa, työntää ja ottaa Docker-kuvia klusteriin käyttöön toimintojen suorittamiseksi OpenFaaS-CLI: n avulla. Olemassa olevat mallit tarjoavat valmiita tapoja ottaa käyttöön sovelluksia, jotka on kirjoitettu Go-, Python-, Node.js-, .NET-, Ruby-, Java- tai PHP 7 -käyttöjärjestelmässä, vaikka voit aina luoda omia. OpenFaaS CLI tarjoaa myös tapoja hallita klusterin salaisuuksia, kun taas sisäänrakennetun web-käyttöliittymän avulla voit luoda uusia toimintoja ja hallita niitä.

Toinen OpenFaaS-versio, OpenFaaS Cloud, pakkaa OpenFaaS-ohjelmiston uudelleen useiden kehittäjien ominaisuuksiin, mukaan lukien integrointi Gitiin (mukaan lukien GitHub ja GitLabin itse isännöimät versiot), CI / CD, salaisuuksien hallinta, HTTPS ja mahdollisuus syöttää tapahtumia Slackiin ja muihin uppoaa. OpenFaas Cloud on saatavana ilmaisena avoimen lähdekoodin tuotteena ja isännöidyssä versiossa, joka on tällä hetkellä ilmainen.

OpenWhisk

Apache OpenWhiskia laskutetaan yleisenä palvelimettomana alustana. Kubernetes on vain yksi monista vaihtoehdoista, jotka ovat käytettävissä konttien ajamiseksi OpenWhiskissä, koska OpenWhisk tukee myös Mesosia ja Docker Composeä. Kuitenkin Kubernetes on suositeltava sen sovellustyökalujen, erityisesti Helm-kaavioiden, vuoksi. IBM Cloud Functions perustuu OpenWhisk-projektiin, joten se voi toimia myös OpenWhisk CLI -komennoilla.

Toisin kuin useimmat muut palvelimettomat Kubernetes-kehykset, OpenWhisk kirjoitetaan Scala-kielellä, ei Go: lla (johon sekä Kubernetes että Docker on kirjoitettu). Tämä on todennäköisesti ongelma vain, jos haluat hakata OpenWhiskiin ja sinulla on kokemusta vain Go: sta.

Suurin osa suosituista sovelluksen ajonaikaisista vaihtoehdoista on valmiiksi pakattu OpenWhiskin kanssa: Java, Node.js, Python, Ruby, PHP ja .NET. Lisäksi mukana on monia esoteerisia ja huippuluokan vaihtoehtoja: Scala, Ballerina, Swift ja Rust. Ajonajat ovat vain Docker-kontteja, joten omien toimittaminen on helppoa.

Yksi kätevä OpenWhisk-asennusominaisuus on "zip-toiminnot". Osoita .zip-arkisto koodi- ja aputiedostoista OpenWhiskiin käyttämällä koodipaketin luettelotiedostoa, ja OpenWhisk luo siitä toiminnon. OpenWhiskin CLI sisältää myös työkaluja koodihakemistopuun muuntamiseksi tällaiseksi arkistoksi. Palvelupakettiluettelon avulla sovelluksesi on helppo liittää yleisiin kolmansien osapuolten tarjouksiin, kuten GitHub, Slack, Apache Kafka tai Jira.