Programavimas

5 būdai, kaip padaryti be serverio „Kubernetes“

Vadinkite tai „be serverio“, vadinkite „įvykių valdomu skaičiavimu“ arba „funkcijomis kaip paslauga (FaaS)“. Idėja yra ta pati: dinamiškai paskirstykite išteklius atskiroms funkcijoms vykdyti, iš esmės mikropaslaugoms, kurios naudojamos atsakant į renginius. Skaičiavimo be serverio platformos leidžia programų kūrėjams sutelkti dėmesį į programą, o ne į pagrindinę infrastruktūrą ir visą jos valdymo informaciją.

Daugelis debesų tiekėjų siūlo tam tikrą be serverio platformą, tačiau jūs galite ją sukurti patys, turėdami tik du ingredientus. Vienas iš jų yra „Kubernetes“, konteinerių orkestravimo sistema, kuri tapo standartine platforma, skirta kurti sukomponuotas, elastingas programas. Antrasis yra bet kuri iš daugelio sistemų, naudojamų kuriant „Serverio“ programų modelius „Kubernetes“.

Dauguma „Kubernetes“ serverių neturinčių sistemų turi šias bendras savybes:

  • Diegiama bet kurioje aplinkoje, palaikančioje „Kubernetes“ lokaliai ar nuotoliniu būdu, įskaitant tokias aplinkas kaip „OpenShift“.
  • Palaiko bėgimo kodą, parašytą bet kokia kalba, su kai kuriais įprastais vykdymo laikais, iš anksto supakuotais su sistema.
  • Suaktyvina kodo vykdymą įvairiais įvykiais - HTTP galiniu tašku, eilės pranešimu ar kitu kabliu.

Vienas pagrindinių „Kubernetes“ be serverio kūrimo privalumų yra žymiai didesnė pagrindinės platformos kontrolė. Daugybė pasiūlymų be serverio riboja jų vykdomų funkcijų elgseną, kartais tam tikras programų klases paverčiant nepraktiškais. Naudodami „Kubernetes“ galite sukurti be serverio platformą, atitinkančią jūsų poreikius, palikdami infrastruktūrą savo „Kubernetes“ operatoriams ir leisdami savo kūrėjams sutelkti dėmesį į pagrindinio kodo rašymą.

Štai penki pagrindiniai projektai, suteikiantys „Kubernetes“ funkciją be serverio.

Skilimas

Dalijimąsi kuria ir prižiūri „Kubernetes“ valdoma įmonė „Platform 9.“. Pagrindinis jos šlovės reikalavimas yra tai, kad jis leidžia jums kurti „FaaS“ programas nereikalaujant kurti konteinerių, tiesiog pateikiant apibrėžimo failus.

„Fission“ galima įdiegti su „Helm“ diagrama arba be jos, ir ją galima įdiegti bet kuriame iš dviejų leidimų. Yra pilna versija su pranešimų eilėmis ir „InfluxDB“ palaikymu registravimui ir pašalintas leidimas su pagrindinių funkcijų aptarnavimu. Pirmasis yra skirtas gamybos dislokavimui, o antrasis - kojų sušlapimui.

Norėdami pridėti kodą prie „Fission“ diegimo, naudojate YAML pagrįstus specifikacijų failus. „Fission“ komandinės eilutės įrankiai leidžia jums sukurti YAML failus savo funkcijoms ir maršrutams, naudojamiems jų įėjimo taškams suaktyvinti. Spec failas taip pat leidžia pateikti aplinkos kintamuosius, pagalbinius konteinerius, tomus ir „Kubernetes“ kodo sugadinimo / toleravimo valdiklius.

Skilimas taip pat suteikia „darbo eigą“. Įdiegus „Helm“ diagramą, darbo eiga perkelia vienos funkcijos išvestį į kitą funkciją. Funkcijos nebūtinai turi būti ta pačia kalba. Atkreipkite dėmesį, kad tai kainuoja našumą, nes kiekvienos funkcijos išvestis perteikiama mainų formatu, nors darbo eigos sistema palaiko daugelį įprastų primityvių dvejetainių tipų, kad nenukristų pridėtinės išlaidos (pvz., Sveikasis skaičius arba bendras baitų srautas).

Vienas iš minusų, iš pradžių siejamų su „FaaS“, buvo tas, kad pirmą kartą pasitelkus funkciją, buvo pastebimas delsimas paleisti su ja susietą konteinerį. „Fission“ palaiko konteinerius iš anksto pašildytus, kad sumažintų vėlavimą pirmą kartą paleidus funkciją.

„Fission“ siūlo kitus patogumus tiek kūrėjams, tiek administratoriams. Paslaugą galima įdiegti į sankaupą, neturinčią išorinės interneto prieigos, o kodą galima greitai įkelti į grupę pagal pareikalavimą. Funkcijos veiklą taip pat galima įrašyti ir pakartoti, kad būtų lengviau derinti.

„Fission“ projektą galima įsigyti pagal labai liberalią „Apache“ licenciją, todėl prireikus jį galima laisvai perdaryti.

Gudrus

Iš pradžių „Google“ sukurtas norint paleisti programas be serverių „Kubernetes“, „Knative“ daugiausia dėmesio skiria šablonams, kurie būdingi diegiant be serverio gamyboje. „Knative“ reikalinga tiesioginė patirtis valdant daugelį „Kubernetes“ komponentų, kad jie būtų efektyviai naudojami.

Be „Kubernetes“, „Knative“ reikalinga maršruto parinkimo sistema arba paslaugų tinklas, pvz., „Istio“, tačiau taip pat galima naudoti kitas parinktis, tokias kaip „Ambassador“ ir „Gloo“. Tai reiškia šiek tiek daugiau darbo nustatymo, tačiau projekte yra išsamūs vadovai, kaip naudoti kiekvieną parinktį įvairiose debesijos tarnybose ir „Kubernetes“ aplinkose, įskaitant vanilės „Kubernetes“.

„Knative“ veikia daugiausia naudodamas arba išplėsdamas esamus „Kubernetes“ įrankius ir funkcionalumą. Programos arba funkcijos sukonfigūruojamos naudojant YAML failus ir pristatomos kaip jūsų sukurti „Docker“ konteineriai. Apibrėžimai pridedami, keičiami ar ištrinami naudojant kubectl komandinės eilutės programa. Norėdami sužinoti „Knative“ programų metriką, naudokite „Grafana“. Mastelis gali būti atliekamas naudojant „Knative“ automatinį keitiklį arba bet kurį kitą su „Kubernetes“ suderinamą mastelį, įskaitant specialiai parašytą.

„Knative“ yra sunkiai tobulinamas, ir daugelis jo specialių įrankių vis dar yra sunkios būklės. Jie apimaknctl, specialiai „Knative“ skirtas CLI, kuris sutaupo jums rūpesčių naudojant kitus „Kubernetes“ įrankius „Knative“ valdyti, jei norite sutelkti dėmesį tik į „Knative“; ir ko, įrankis, skirtas kurti „Go“ programas „Knative“, pašalinant sudėtinio rodinio kūrimo veiksmą.

„Kubeless“

„Kubeless“ sukūrė „Bitnami“, paprastų žiniatinklio programų šūsnių diegėjų kūrėjai. „Kubeless“ naudoja gimtąsias „Kubernetes“ pritaikytas išteklių apibrėžtis funkcijoms tvarkyti, todėl tarp „Kubernetes“ metaforų ir „Kubeless“ funkcijų yra šiek tiek mažiau abstrakcijos.

Dažniausiai kalbų vykdymo laikas yra su platforma: .NET, Java, Python, Node.js, PHP, Ruby, Go ir net nauja „Ballerina“ kalba, skirta debesims kurti. „Runtimes“ yra tik „Docker“ vaizdai, nors „Kubeless“ turi konkretų pakuotės formatą, skirtą „Dockerfiles“ naudoti kuriant pasirinktinius vykdymo laikus.

Kitas patogus „Kubeless“ bruožas yra jo CLI, kuris yra identiškas komandai kaip „AWS Lambda CLI“. Tai nepaprastai patogu, jei norite pereiti nuo „AWS Lambda“, bet norite išsaugoti kai kuriuos esamus valdymo scenarijus arba tiesiog nereikia mokytis visiškai naujo komandų rinkinio.

„Kubeless“ taip pat veikia kaip papildinys „Serverless Framework“ - sistemai, skirtai kurti programas be serverių įvairiose architektūrose. Jei jau naudojate „Serverless“ arba „Kubeless“, jums bus lengviau pridėti vieną iš jų, nei naudoti ką nors kitą.

„OpenFaaS“

„OpenFaaS“ žingsnis yra „paprastos funkcijos be serverio“. Paprasčiau, kūrėjai reiškia „ne ką sunkiau nei įdėti„ Docker “konteinerį“.

„OpenFaaS“ galima diegti „Kubernetes“ arba „Docker Swarm“ klasteriuose (vietiniam bandymui arba mažai reikalingam naudojimui). Norėdami kurti, stumti ir diegti „Docker“ vaizdus į grupę funkcijoms vykdyti, naudojate „OpenFaaS“ CLI. Esamuose šablonuose yra iš anksto paruoštų būdų diegti programas, parašytas „Go“, „Python“, „Node.js“, .NET, „Ruby“, „Java“ ar PHP 7, nors jūs visada galite kurti savo. „OpenFaaS“ CLI taip pat suteikia būdų, kaip tvarkyti savo klasterio paslaptis, o įmontuota žiniatinklio sąsaja leidžia kurti naujas funkcijas ir jas valdyti.

Kita „OpenFaaS“ versija, „OpenFaaS Cloud“, perpakuoja „OpenFaaS“ su funkcijomis, skirtomis keliems kūrėjams, įskaitant integraciją su „Git“ (įskaitant „GitHub“ ir savarankiškus „GitLab“ leidimus), CI / CD, paslapčių valdymą, HTTPS ir galimybę renginius perduoti į „Slack“ ir kitus kriauklės. „OpenFaas Cloud“ yra prieinamas kaip nemokamas atvirojo kodo produktas ir priglobta versija, kurią šiuo metu galima naudoti nemokamai.

„OpenWhisk“

„Apache OpenWhisk“ atsiskaitoma už bendrą serverio neturinčią platformą. „Kubernetes“ yra tik viena iš kelių parinkčių, leidžiančių paleisti konteinerius „OpenWhisk“, nes „OpenWhisk“ taip pat palaiko „Mesos“ ir „Docker Compose“. Nepaisant to, „Kubernetes“ yra teikiama pirmenybė dėl programos diegimo įrankių, ypač „Helm“ diagramų. „IBM Cloud Functions“ yra pagrįstas „OpenWhisk“ projektu, todėl gali dirbti ir su „OpenWhisk“ CLI komandomis.

Skirtingai nuo daugelio kitų „Kubernetes“ serverių be serverių, „OpenWhisk“ yra parašyta „Scala“ kalba, o ne „Go“ (kuria parašyti ir „Kubernetes“, ir „Docker“). Tikėtina, kad tai bus problema tik tuo atveju, jei norite nulaužti „OpenWhisk“ ir turite tik „Go“ patirties.

Dauguma populiarių programų vykdymo laiko parinkčių yra fasuotos su „OpenWhisk“: „Java“, „Node.js“, „Python“, „Ruby“, PHP ir .NET. Be to, įtraukta daugybė ezoterinių ir pažangiausių variantų: „Scala“, „Ballerina“, „Swift“ ir „Rust“. Veikimo laikas yra tik „Docker“ talpyklos, todėl lengva pateikti savo.

Viena patogi „OpenWhisk“ diegimo funkcija yra „zip“ veiksmai. Nukreipkite .zip kodo ir pagalbinių failų archyvą į „OpenWhisk“ naudodami kodo paketo aprašo failą, o „OpenWhisk“ sukurs iš jo veiksmą. „OpenWhisk“ CLI taip pat yra įrankių, skirtų katalogo medžiui paversti kodu į tokį archyvą. Paslaugų paketų katalogas leidžia lengvai prijungti programą prie įprastų trečiųjų šalių pasiūlymų, tokių kaip „GitHub“, „Slack“, „Apache Kafka“ ar „Jira“.