Un ghid rapid pentru cadrul Knative Serverless pentru începători

Framework-urile fără server sunt solicitate în ultimii ani și au fost martorii unei adoptări crescute în rândul dezvoltatorilor.

Cu toate acestea, aplicațiile bazate pe containere sunt deja populare, la fel și Kubernetes în rândul companiilor.

Kubernetes, fără îndoială, este un instrument excelent cu potențial bun. Ecosistemul său crește, de asemenea, cu o varietate de instrumente noi și cele mai noi tehnologii, cum ar fi Knative, care are puterea de a face Kubernetes și mai bun.

Knative a fost introdus pentru a depăși situațiile care duc la eșec și pentru a stabili un standard de bază pentru platformele cloud și orchestrarea nativă în cloud.

Cu alte cuvinte, cadrul Knative serverless poate satisface nevoile unei companii mult mai bine decât alte implementări fără server bazate pe cloud.

În acest ghid, voi vorbi despre Knative, beneficiile sale, cazurile de utilizare, procedura de instalare, procedura de lucru și multe altele.

Începem!

Ce este Knative?

Knative este un cadru fără server bazat pe Kubernetes, care a fost dezvoltat pentru prima dată de Google. Încarcă și rulează funcții fără server în funcție de cerințele unei companii, minimizând astfel risipa. Este un proiect open-source care adaugă componente pentru a implementa, rula și gestiona aplicații fără server pe Kubernetes.

Scopul principal al cadrului Knative serverless este de a gestiona standardele pentru orchestrarea multiplatformă. Acest lucru este implementat prin integrarea funcției de creare a containerelor, scalare automată, modele de evenimente și gestionare a sarcinii de lucru.

Anterior, existau o varietate de soluții open-source, altele decât Knative. Fiecare soluție are modul său de implementare, ceea ce poate provoca fragmentarea pieței, deoarece există o lipsă de practici standardizate. Aceasta înseamnă că alegerea unui anumit furnizor este necesară dacă doriți o anumită caracteristică a sistemului.

Cu toate acestea, problemele de migrație au început să vină în prim plan. Și pentru a evita astfel de probleme, a fost introdus cadrul Knative serverless. Deci, dacă te străduiești să încorporezi sarcini, Knative o poate face eficient în conducta bazată pe Kubernetes.

Knative are trei piese:

  • Knative Build: creează imagini container și le face disponibile din codul sursă.
  • Servire Knative: folosește Istio și Kubernetes pentru a conecta și a implementa aceste imagini container prin resursele de infrastructură alocate.
  • Knative Eventing: permite utilizatorilor să definească declanșatoarele de evenimente și le permite utilizatorilor să asocieze declanșatoarele de evenimente cu funcții containerizate.

Ori de câte ori Knative identifică un eveniment, definește procesul asociat pentru a-l rula la cerere. Cu Knative, nu este nevoie să alocați noduri de containere, clustere și pod-uri pentru lucru, deoarece Knative angajează resurse de găzduire numai atunci când rulează un anumit proces. În acest fel, Knative echilibrează beneficiile serverless și container.

Conceptele de bază ale Knative

Să discutăm principalele concepte ale cadrului Knative Serverless și modul în care acestea se referă la primitivele Knative.

Construi

Knative-building ajută la utilizarea și extinderea primitivelor Kubernetes existente, permițându-vă să rulați pe versiuni de containere de la origine. Activează codul sursă din dependențe și din depozit, construind imagini container și înregistrându-le.

Evenimente

Evenimentul vă ajută să creați o comunicare mai bună între consumatorii și producătorii de evenimente care nu au o cuplare liberă pentru a construi arhitectura bazată pe evenimente. Knative pune aceste evenimente într-o coadă care trebuia efectuată automat fără scriptul dezvoltatorilor.

  9 cursuri gratuite de certificare pentru a deveni Digital Marketer [2022]

Ulterior, aceste evenimente sunt livrate la containere. Apoi trimite fluxuri către producătorii de evenimente pentru a îndeplini sarcini. Acest lucru va reduce sarcina de lucru a dezvoltatorului în crearea codului pentru stabilirea conexiunii.

Funcții

O funcție este o unitate de implementare independentă și un serviciu de servire Knative, ca un microserviciu. Codul său este scris pentru a efectua o singură sarcină, cum ar fi:

  • Procesarea unui fișier într-o bază de date
  • Salvarea unui utilizator într-o bază de date
  • Efectuarea unei lucrări programate

Cadrul Knative serverless este conceput pentru a vă permite să dezvoltați și să implementați funcții în mod eficient și să le gestionați.

Pluginuri

Extindeți sau suprascrieți cu ușurință funcționalitatea cadrului Knative serverless folosind plugin-uri. Fiecare fișier serverless.yml conține o proprietate de plugin care conține diverse plugin-uri.

Resurse

Resursele sunt componentele infrastructurii Knative serverless pe care le utilizează funcția dvs., inclusiv:

  • Sursă de evenimente AWS SQS
  • O sarcină programată (se rulează la fiecare 5 minute, 10 minute etc.)
  • O sursă de eveniment Kafka

Și altele.

Servicii

Serviciile sunt ca un proiect. Prin urmare, un serviciu este unitatea de organizare a cadrului Knative serverless. Deși puteți avea multe servicii pentru o singură aplicație, vă puteți gândi la serviciu ca pe un fișier de proiect.

Acesta este locul în care veți fi capabil să definiți funcțiile, evenimentele și resursele, toate într-un singur fișier intitulat serverless.yml, serverless.json sau serverless.js. Când implementați serviciile cu cadrul fără server, totul din fișier este implementat simultan.

Servire

Knative-serving este construit în Istio și Kubernetes, care acceptă implementarea aplicațiilor. Permite dezvoltarea rapidă a containerelor fără server, programarea în rețea și scalarea automată pentru componentele Istio. Knative-serving consideră containerele ca un serviciu scalabil care poate varia de la o instanță la mai multe instanțe de container.

Caracteristicile Knative

Să discutăm câteva dintre caracteristicile cadrului Knative serverless:

  • Knative este un cadru fără server bazat pe Kubernetes, care vă permite să implementați servicii în Kubernetes.
  • Se integrează cu ușurință Knative cu mediul suportat
  • Dezvoltatorii pot folosi direct API-ul Kubernetes cu ajutorul Knative pentru a implementa servicii fără server
  • Permite utilizatorilor să declanșeze servicii fără server cu ajutorul sistemului de evenimente Knative

Cum funcționează Knative?

Cadrul Knative serverless funcționează ca un segment de conducere a evenimentelor și conectează Istio și Kubernetes. Kubernetes funcționează ca orchestrator pentru microservicii și containere. Istio, pe de altă parte, este o tehnologie mesh open-source care reunește diverse componente pentru a interacționa cu utilizatorul și cu ei înșiși.

Knative oferă utilizatorilor mai multe componente menite să efectueze munca de bază de zi cu zi. Aceste componente sunt folosite din nou și din nou într-o varietate de aplicații. Un dezvoltator poate folosi orice limbaj de programare. Prin urmare, nu aveți nevoie de cunoștințe specifice de limbi, deoarece Knative recunoaște doar imaginile containerului.

Există trei componente ale cadrului Knative serverless care sunt cheile funcționării acestuia.

Construirea de containere noi

Componenta de construcție este responsabilă pentru construirea de containere noi. Poate converti codurile sursă într-un container. Knative poate fi configurat pentru a satisface nevoile specifice afacerii.

În primul rând, Knative scoate codul sursă din bibliotecă ca Github. Apoi, dependențele de bază sunt adăugate, astfel încât codul să ruleze eficient. Imaginile containerului sunt apoi construite și introduse în fișiere pe care platforma Kubernetes le poate accesa.

  11 clienți FTP/SFTP pe care trebuie să îi cunoașteți ca administrator de sistem și dezvoltator

Containerul este pus la dispoziția dezvoltatorilor care folosesc Kubernetes și Knative. Astfel, containerele sunt construite atâta timp cât se cunoaște originea codului.

Servirea sau rularea platformei

Componenta de servire este responsabilă de funcționarea platformei. Implica:

  • Configurare: Configurarea este sigură în gestionarea mai multor versiuni ale serviciului. De fiecare dată când are loc o implementare a noii caracteristici a unui container, Knative salvează versiunea existentă și creează una nouă cu cele mai recente modificări și caracteristici. Mai mult, Knative definește starea unui serviciu.
  • Scalare automată: pentru a funcționa mai bine containerele fără server, trebuie să fiți capabil să scalați automat containerele fie în sus, fie în jos. Knative poate autoscala serviciile la mai multe dacă este necesar.
  • Rutarea inteligentă a serviciilor: este o parte importantă a mecanismului de lucru Knative. Permite dezvoltatorilor să direcționeze fluxul și cantitatea de trafic către diferite versiuni existente ale microserviciilor. În timp ce se introduc noi funcții și strategii de implementare albastru-verde, poate fi utilizată rutarea inteligentă a serviciilor.

Vă permite să expuneți o fracțiune de utilizatori la testarea și versiunea recentă și să direcționați treptat traficul vast către noua versiune.

Eventing pentru a defini funcții

Componenta de evenimente a lui Knative este responsabilă pentru descrierea funcției Knative. Permite definirea rulării containerelor pe baza evenimentelor. Evenimente diferite declanșează funcții specifice ale containerelor.

Dezvoltatorii pot defini declanșatorii evenimentelor și containerele asociate pentru a-i lăsa pe Knative să-și facă treaba. Knative se ocupă de lista de evenimente și de livrarea evenimentelor.

Beneficiile Knative

Knative oferă servicii precum managementul rutei, lansarea în etape și conexiunea la serviciu. Se mândrește cu o comunitate vastă. Să discutăm despre modul în care Knative influențează companiile să adopte această tehnologie.

  • Spre deosebire de alte soluții, Knative are evenimente standard și este compatibil cu soluția FaaS. Oferă un cadru standard CloudEvent care ajută la proiectarea arhitecturii fără server.
  • Deși Knative nu este un PaaS, vă permite să creați un PaaS fără server cu platforma de orchestrare fără server.
  • Knative are un design complet și matur fără server.
  • Acceptă multi-platformă și vă oferă un standard universal în rândul furnizorilor de cloud pentru a elimina șansa de a lega furnizorii cu o soluție specifică.

  • Knative oferă un cadru flexibil.
  • Acceptă lansări proporționale în faze.
  • Puteți experimenta ecosistemul fără server într-un mediu containerizat.
  • Knative elimină fiabilitatea managementului și instrumentelor.
  • Puteți migra rapid la alți furnizori de cloud care sunt integrați cu Knative prin implementarea Kubernetes.
  • Oferă un model de calcul bazat pe solicitări.
  • Vă permite să gestionați fluxurile de lucru ca serviciu.
  • Cu Knative, puteți procesa date IoT, puteți efectua verificări de accesibilitate și puteți valida configurațiile grupurilor dvs. de securitate.
  • Le permite dezvoltatorilor să se concentreze asupra codării și să le permită să creeze rapid cod iterativ.
  • Se asigură că dezvoltatorii vor încorpora versiuni noi.
  • Modelul Knative bazat pe evenimente ajută la implementarea proiectelor, inclusiv abonamentul, conexiunea la sistemul extern și înregistrarea.

Provocările Knative (și unele soluții)

Provocări de eficiență

Un cadru Knative care acceptă aplicații adecvate oferă performanțe mai bune la un cost minim. Cu toate acestea, o combinație necorespunzătoare de aplicații poate avea ca rezultat costuri mai mari și resurse de containere subutilizate. Acest lucru ar putea duce la performanțe slabe ale aplicațiilor, care este cea mai mare provocare a implementării Knative fără server.

Astfel, un pool de resurse de dimensiuni reduse sau aplicații greșite pot distruge multe beneficii Knative.

Puteți depăși această provocare efectuând teste pentru a verifica cantitățile de resurse și amestecul de aplicații pe Knative. Măsurați încărcările evenimentelor dimensionând încărcăturile medii și maxime pentru fiecare și estimați consumul total de resurse. Repetați acest lucru pentru mai multe aplicații pentru a crea și rula o configurație de probă pentru a valida estimările.

  Cum vă reactivați contul etichetat

Provocări funcționale

Provocările funcționale ale Knative ar putea fi:

  • Knative depinde de funcțiile care se potrivesc unui model apatrid. Aceasta înseamnă că nu sunt stocate date în componenta în sine. Dezvoltarea funcțiilor nu este o fază dificilă, dar necesită o ușoară schimbare în abordare, ceea ce înseamnă că o singură greșeală poate strica performanța software-ului.
  • Datele comerciale constau din tranzacții în mai mulți pași, iar funcțiile apatride mențin contextul în toți pașii. Knative nu are această capacitate așa cum o pot face instrumentele fără server din cloud public.

Monitorizarea regulată și remedierea problemelor vă poate ajuta să vă mențineți performanța la scoruri decente.

Provocări operaționale

În comparație cu ofertele fără server într-un cloud public, există o provocare operațională cu Knative. Administratorii nu controlează serverele subiacente cu cloudul public. Dar, vor trebui să gestioneze serverele împreună cu Kubernetes, containerele, Knative și Istio însuși.

Knative extinde minim operațiunile și complexitatea dezvoltării pentru companiile care s-au angajat deja în Kubernetes și containere. Cei angajați în service mesh și microservicii vor găsi Knative o extensie naturală.

Cazuri de utilizare a Knative

Pentru aplicațiile care dau naștere unui număr variabil de evenimente care rămân în limitele stabilite în timp sau peste acestea, Knative este cel mai potrivit pentru ei. Cazurile de utilizare specifice ale cadrului Knative serverless includ:

Orientarea la eveniment este esențială. Dacă echipele IT nu își pot imagina o aplicație ca pe o serie de evenimente în loc de tranzacții, Knative poate să nu fie o alegere bună din motive funcționale și de eficiență.

Cerințe preliminare și instalarea Knative

După cum vedem în secțiunile de mai sus, Knative este un set de componente precum evenimente și servire, care rulează pe o rețea de servicii și un cluster de orchestrare a sarcinii de lucru. Există utilitare de linie de comandă pe care trebuie să le instalăm pentru o operare simplă. Astfel, avem nevoie de câteva dependențe pentru a ne asigura că putem continua cu instalarea.

Cerințe preliminare

Există mai multe opțiuni pentru a instala Kubernetes. Docker Desktop vine să activeze un cluster Kubernetes ușor, care servește diverse scopuri. Abordarea simplă este să utilizați Kubernetes în Docker pentru a rula clusterul Kubernetes împreună cu nodurile containerului Docker. Modalitatea convenabilă de a lucra cu clusterul este utilizarea instrumentului de linie de comandă Knative.

Knative CLI oferă o interfață ușoară și rapidă pentru crearea resurselor sale. Ajută în sarcini complexe, cum ar fi împărțirea traficului și scalarea automată. Modul convenabil este să descărcați binarul compatibil de pe pagina GitHub.

Instalare

Odată ce avem toate condițiile preliminare, putem trece la instalarea componentelor. Pentru mediul de dezvoltare, există un plugin de pornire rapidă. Pluginul ajută la instalarea unui cluster Knative local folosind clientul Knative. Puteți descărca pluginul de pornire rapidă de pe pagina oficială de lansare.

Concluzie: Viitorul Knative

Knative a înlocuit calculul fără server prin furnizarea de scalare automată a aplicațiilor. Are un impact semnificativ asupra sistemului interoperabil și modular.

În viitor, este de așteptat ca Knative să acopere deficiențele actuale și să devină una dintre cele mai eficiente tehnologii pentru a rula arhitectura fără server.

Tehnologia knative este mai influentă pentru dezvoltatori, analizând beneficiile sale față de alternativele fără server. Knative vă va ajuta să economisiți timp grozav, înlocuind nevoia de a construi și întreține extensiile Kubernetes. Dezvoltatorii sunt destul de mulțumiți de tehnologia Knative, deoarece este ușor de utilizat și o alternativă excelentă la soluțiile fără server.

Deci, dacă doriți să maximizați puterea mediului Kubernetes în fluxurile dvs. de lucru în cloud, adoptați tehnologia Knative și fiți martor la beneficii.