Knative — teenusena pakutav platvorm, mis pĂ”hineb k8s serverless toe vĂ”imalustega

Knative — teenusena pakutav platvorm, mis pĂ”hineb k8s serverless toe vĂ”imalustega

Domineeriv platvorm konteinerite juurutamiseks on kindlasti Kubernetes. See vÔimaldab hallata praktiliselt kÔike, kasutades oma API-sid ja kasutajahaardeid, mis laiendavad tema API-d kasutajate ressursside kaudu.

Kuid kasutaja peab ikkagi tegema pÔhjalikke otsuseid selle kohta, kuidas tÀpselt rakendusi juurutada, seadistada, hallata ja skaleerida. Rakenduse skaleerimise, kaitse ja liikluse haldamine jÀÀb kasutaja otsustada. Sellega erineb Kubernetes tavalisest "platvormist teenusena" (PaaS), nagu Cloud Foundry ja Heroku.

Platvormid omavad lihtsustatud kasutajaliidest, on suunatud rakenduste arendajatele, kes tegelevad sagedamini ĂŒksikute rakenduste seadistamisega. Marsruutimine, juurutamine ja mÔÔdikud hallatakse kasutaja jaoks lĂ€bipaistvalt pĂ”hisihtkohas PaaS.

Töövoog "allikas – tarne" töödeldakse PaaS-iga, luues kasutaja konteineri pildi, juurutades selle, seadistades uue marsruudi ja DNS alamsĂŒsteemi sisendliiklust jaoks. KĂ”ik see kĂ€ivitatakse kĂ€su kaudu. git push.

Kuberneteses (tahtlikult) antakse ainult pĂ”hikomponendid selliste platvormide jaoks, andes kogukonnale vĂ”imaluse selle töö iseseisvalt teha. Nagu ĂŒtles Kelsey Hightower:

Kubernetes on platvorm platvormide ehitamiseks. Parim koht alustamiseks, kuid mitte lÔpetamiseks.

SeetĂ”ttu nĂ€eme mitmeid Kubernetes'i koosteid ja ka hostimisteenuseid, mis pĂŒĂŒavad luua Kubernetes'e PaaS-i, nĂ€iteks OpenShift ja Rancher. Kasvava Kube-PaaS turu taustal astub ringi Knative, mis loodi 2018. aasta juulis ettevĂ”tete Google ja Pivotal poolt.

Knative sai tulemuseks Google'i ja Pivotal'i koostööst, koos teiste ettevĂ”tete, nagu IBM, RedHat ja Solo.im, vĂ€hese abiga. See pakub sarnaseid PaaS funktsioone Kubernetes'e jaoks, pakkudes tipptasemel tosupport serverivabade arvutuste pĂ”histe rakenduste jaoks. Erinevalt Kubernetes'i koosteest installitakse Knative igasse ĂŒhilduvasse Kubernetes'e klastrisse tĂ€iendusena ja seadistatakse kasutajate ressursside kaudu.

Mis on Knative?

Knative on kirjeldatud kui „Kubernetesel pĂ”hinev platvorm töökoormuste kohaletoimetamiseks ja haldamiseks, kasutades kaasaegseid serveriteta arvutusi“. Knative, vĂ€ljendades end sellise platvormina, skaleerib automaatselt konteinerid proportsionaalselt samal ajal tehtud HTTP-pĂ€estetele. Kasutamata teenused skaleeruvad lĂ”puks nulli, pakkudes nĂ”udmisel skaleerimist serveriteta arvutuste stiilis.

Knative koosneb hulgast kontrollidest, mis paigaldatakse igasse Kubernetes klastrisse ja pakuvad jÀrgmisi vÔimalusi:

  • konteineriseeritud rakenduste loomine lĂ€htekoodist (tagab komponent Build),
  • sissetuleva liikluse juurdepÀÀsu andmine rakendustele (tagab komponent Serving),
  • rakenduste kohaletoimetamine ja automaatne skaleerimine nĂ”udmisel (pakub ka komponent Serving),
  • sĂŒndmuste allikate mÀÀramine, mis kĂ€ivitavad rakenduste kĂ€ivitamise (tagab komponent Eventing).

PÔhikomponent on Serving, mis tagab kohaletoimetamise, automaatse skaleerimise ja liikluse haldamise hallatud rakenduste jaoks. Knative'i paigaldamise jÀrel jÀÀb tÀielik juurdepÀÀs Kubernetes API-le, mis vÔimaldab kasutajatel hallata rakendusi tavalises viisis ning aitab Knative teenuste tÔrkeotsinguks, töötades nende samade API primitiividega, mida need teenused kasutavad (moodulid, teenused jms).

Serving kaudu on samuti automatiseeritud blue-green liikluse suunamine, tagades liikluse jagamise rakenduse uute ja vanade versioonide vahel, kui kasutaja esitades rakenduse uuendatud versiooni.

Ise Knative sĂ”ltub ĂŒhilduva ingress kontrolleri paigaldamisest. Artikli kirjutamise ajal toetatakse Gloo API Gateway ja Istio Service Mesh. See seadistab saadaval oleva ingressi liikluse suunamiseks Knative'i hallatud rakendustele.

Istio Service Mesh vÔib osutuda suureks sÔltuvuseks Knative'i kasutajatele, kes soovivad seda proovida ilma Istio juhtpaneeli paigaldamata, kuna Knative sÔltub vaid vÀravast.

SeetÔttu eelistavad enamus kasutajatest Gloo-d Knative'i vÀravana, mis pakub sarnast funktsioonide kogumit Istio'le (kui rÀÀkida ainult Knative'i kasutamise eesmÀrgist), kasutades samas oluliselt vÀhem ressursse ja tekitades vÀiksemaid kÀituskulusid.

Kontrollime Knative'i toimimist demokeskkonnas. Kasutan vÀrskelt paigaldatud klastrit, mis on kÀivitatud GKE-s:

kubectl get namespace
NIMI          STAATUS   VANUS
default       Aktiivne  21h
kube-public   Aktiivne  21h
kube-system   Aktiivne  21h

Alustame Knative'i ja Gloo paigaldamist. Seda saab teha igas jÀrjekorras:

# стаĐČĐžĐŒ Knative-Serving
kubectl apply -f 
 https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# стаĐČĐžĐŒ Gloo
kubectl apply -f 
  https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...

Kontrollime, et kÔik podid on olekus 'Running':

kubectl get pod -n knative-serving
NIMI                              VALMIS   STAATUS    KÄIVITUSI   VANUS
activator-5dd55958cc-fkp7r        1/1     Running   0          7m32s
autoscaler-fd66459b7-7d5s2        1/1     Running   0          7m31s
autoscaler-hpa-85b5667df4-mdjch   1/1     Running   0          7m32s
controller-85c8bb7ffd-nj9cs       1/1     Running   0          7m29s
webhook-5bd79b5c8b-7czrm          1/1     Running   0          7m29s
kubectl get pod -n gloo-system
NIMI                                      VALMIS   STAATUS    KÄIVITUSI   VANUS
discovery-69548c8475-fvh7q                1/1     Running   0          44s
gloo-5b6954d7c7-7rfk9                     1/1     Running   0          45s
ingress-6c46cdf6f6-jwj7m                  1/1     Running   0          44s
knative-external-proxy-7dd7665869-x9xkg   1/1     Running   0          44s
knative-internal-proxy-7775476875-9xvdg   1/1     Running   0          44s

Gloo on valmis suunamiseks, loome automaatselt skaleeritava Knative teenuse (nimetame selle kservice'ks) ja suuname jÔu.

Knative teenused pakuvad lihtsamat viisi rakenduste toimetamiseks Kubernetesesse — vĂ”rreldes tavalise mudeliga Deployment+Service+Ingress. Töötab sellise nĂ€ite peal:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
 name: helloworld-go
 namespace: default
spec:
 template:
   spec:
     containers:
       - image: gcr.io/knative-samples/helloworld-go
         env:
           - name: TARGET
             Value: Knative user

Kopeerisin selle faili, seejÀrel rakendasin seda oma Kubernetes klastrisse jÀrgmiselt:

kubectl apply -f ksvc.yaml -n default

Saame vaadata Knative'i loodud ressursse klastris pĂ€rast meie ‘helloworld-go’ tarnimist. kservice:

kubectl get pod -n default
NIMI                                              VALMIS   STAATUS    KÄIVITUSI   VANUS
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

Meie ‘helloworld-go’ pood kĂ€ivitatakse kservice'i juurutamisel. Kui liiklust ei ole — podide arv vĂ€hendatakse nullini. Vastupidi, kui samaaegsete pĂ€ringute arv ĂŒletab teatud konfigureeritava kĂŒnnise — podide arv suureneb.

kubectl get ingresses.networking.internal.knative.dev -n default
NIMI            VALMIS   PÕHJUS
helloworld-go   True

Knative konfigureerib oma ingressi kasutades erilisest 'ingress' ressursist Knative'i sisemise API kaudu. Gloo kasutab seda API-d oma seadistuste jaoks, et pakkuda PaaS-ile omaseid omadusi, sealhulgas blue-green versioonihaldust, automaatset TLS-i rakendamist, ajaĂŒlesandeid ja muid tĂ€iustatud marsruutimise vĂ”imalusi.

MÔne aja pÀrast nÀeme, et meie podid on kadunud (kuna tulenevat liiklust ei olnud):

kubectl get pod -n default

No resources found.
kubectl get deployment -n default
NIMI                             SOOVITUD   PRAEGUNE   UUE TÄIENDATUD   KÄEDESEIS   VANUS
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

LÔpuks proovime nendeni jÔuda. Knative Proxy URL-i hankimine on lihtne ja vaevatu, kasutades glooctl:

glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80

Ilma seadistamata glooctl saame aadressi ja portaali vaadata kube teenusest:

kubectl get svc -n gloo-system knative-external-proxy
NIMI                     TÜÜP           KOGU-IP     VÄLIS-IP      PORT(OD)                      VANUS
knative-external-proxy   LoadBalancer   10.16.11.157   35.190.151.188   80:32168/TCP,443:30729/TCP   77m

KĂ€ivitame veidi andmeid cURL-i abil:

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Tere, Knative kasutaja!

Knative pakub peaaegu-PaaS-i arendajatele 'karbis' Kubernetes'i peal, kasutades kĂ”rge jĂ”udlusega, tĂ€isfunktsionaalset Gloo API lĂŒlitust. See mĂ€rkmeaine puudutab vaid pinnaliselt Knative'i ulatuslikke mÀÀramisvĂ”imalusi ja tĂ€iendavaid funktsioone. Ka Gloo suhtes!

Kuigi Knative on endiselt noor projekt, vabastab selle meeskond uusi versioone iga kuue nÀdala jÀrel, edendatakse tÀiustatud omaduste, nÀiteks automaatse TLS-i rakendamise ja automaatse skaleerimise, rakendamist. On suur tÔenÀosus, et tÀnu paljude pilveteenuste ettevÔtete koostööle ning Google'i uue Cloud Run pakkumise alusele vÔib Knative saada peamiseks valikuks serverivabade arvutuste ja PaaS-i korraldamiseks Kubernetes'es. JÀlgige uudiseid!

SouthBridge'i toimetusest
Meile on oluline lugejate arvamus, seetĂ”ttu palume teil osaleda vĂ€ikeses kĂŒsitluses, mis on seotud tulevaste artiklitega Knative'i, Kubernetes'e ja serverivabade arvutuste teemal:

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Kas soovite jÀtkata artiklite ja juhendite kirjutamist Knative'i ja serverivabade arvutuste teemal?

  • Jah, palun.

  • AitĂ€h, ei ole vaja.

HÀÀletas 28 kasutajat. 4 kasutajat jÀtsid hÀÀletamata.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster