Knative - k8s-en oinarritutako plataforma-zerbitzu gisa zerbitzaririk gabeko laguntzarekin

Knative - k8s-en oinarritutako plataforma-zerbitzu gisa zerbitzaririk gabeko laguntzarekin

Kubernetes, zalantzarik gabe, edukiontzien hedapenerako plataforma nagusi bihurtu da. Bere APIak baliabide pertsonalizatuekin zabaltzen dituzten APIak eta kontrolagailu pertsonalizatuak erabiliz ia ezer kontrolatzeko gaitasuna eskaintzen du.

Hala eta guztiz ere, erabiltzaileak erabaki zehatzak hartu behar ditu aplikazioak nola zabaldu, konfiguratu, kudeatu eta eskalatzeari buruz. Aplikazioen eskalatze, babes eta trafiko-fluxuaren arazoak erabiltzailearen esku geratzen dira. Honek Kubernetes zerbitzu gisa (PaaS) ohiko plataformetatik bereizten du, hala nola Cloud Foundry eta Heroku.

Plataformek erabiltzaile-interfaze sinplifikatua dute eta aplikazio indibidualak konfiguratzen gehienetan parte hartzen duten aplikazioen garatzaileei zuzenduta daude. Bideraketa, hedapena eta neurketak gardentasunez kudeatzen ditu erabiltzailearentzat azpiko PaaS sistemak.

Iturburutik bidaltzeko lan-fluxua PaaS-ek kudeatzen du edukiontzi-irudi pertsonalizatu bat sortuz, zabalduz, ibilbide eta DNS azpidomeinu berri bat konfiguratuz sarrerako trafikorako. Hori guztia aginduz abiarazten da git push.

Kubernetes-ek (nahita) plataforma horien oinarrizko eraikuntza-blokeak soilik eskaintzen ditu, komunitatea aske utziz lana beraiek egiteko. Nola esan zuen Kelsey Hightower-ek:

Kubernetes plataformak eraikitzeko plataforma bat da. Hasierako posturik onena, baina ez amaitzeko.

Ondorioz, Kubernetes-en eraikuntza mordoa ikusten dugu, baita Kubernetesentzako PaaS sortzen saiatzen ari diren ostalaritza enpresak ere, hala nola OpenShift eta Rancher. Kube-PaaS merkatu hazten ari den artean, Googlek eta Pivotalek 2018ko uztailean sortu zuten Knative zirkuluan sartzen ari da.

Knative Google eta Pivotal-en arteko lankidetza izan zen, IBM, RedHat eta Solo.im bezalako beste konpainien laguntza apur batekin. Kubernetes-i antzeko PaaS gauzak eskaintzen dizkio zerbitzaririk gabeko informatikan oinarritutako aplikazioetarako goi mailako laguntzarekin. Kubernetes-en eraikuntzak ez bezala, Knative Kubernetes-eko edozein kluster bateragarrietan gehigarri gisa instalatzen da eta erabiltzaile-baliabideen bidez konfiguratzen da.

Zer da Knative?

Knative "Kubernetes-en oinarritutako plataforma bat zerbitzaririk gabeko konputazio modernoa erabiliz lan-kargak emateko eta kudeatzeko" gisa deskribatzen da. Knativek, bere burua plataforma gisa fakturatzen duen bitartean, modu aktiboan autoeskalatzen ditu edukiontziak HTTP eskaeren aldi berean. Erabiltzen ez diren zerbitzuak zerora murrizten dira azkenean, zerbitzaririk gabeko estiloa eskariaren arabera eskalatzeko.

Knative Kubernetes-eko edozein klusteretan instalatzen diren kontrolagailu multzo batek osatzen dute eta gaitasun hauek eskaintzen dituzte:

  • iturburu-kodetik (osagaiak emandakoa) edukiontzidun aplikazioak eraikitzea Eraiki),
  • Aplikazioetarako sarrerako trafikorako sarbidea ematea (osagaiak emandakoa Hornitze),
  • eskaeraren arabera aplikazioen entrega eta eskalatze automatikoa (osagaiak ere ematen du Hornitze),
  • aplikazioak abiarazteko gertaeren iturriak identifikatzea (osagaiak emandakoak Ekitaldiak).

Funtsezko osagai bat Zerbitzaria da, kudeatutako aplikazioetarako horniketa, eskalatze automatikoa eta trafikoa kudeatzea eskaintzen duena. Knative instalatu ondoren, Kubernetes APIrako sarbide osoa duzu oraindik, erabiltzaileek aplikazioak kudeatzeko aukera emanez arrunt modu, eta Knative zerbitzuak arazketa egiteko ere balio du, zerbitzu hauek erabiltzen dituzten API primitibo berberekin lan eginez (moduluak, zerbitzuak, etab.).

Zerbitzariaren laguntzaz, trafikoaren bideraketa urdin-berdea ere automatizatu egiten da, eta aplikazioaren bertsio berri eta zaharren arteko trafikoa bereiztea bermatzen du erabiltzaileak aplikazioaren bertsio eguneratua entregatzen duenean.

Knative bera sarrera kontrolagailu bateragarri bat instalatzearen araberakoa da. Artikulu hau idazteko unean onartzen da Gloo API Gateway ΠΈ Istio Zerbitzu Sarea. Sarrera eskuragarria konfiguratuko du trafikoa Knative-k kudeatutako aplikazioetara bideratzeko.

Istio Service Mesh mendekotasun handia izan daiteke Istio kontrol panela instalatu gabe probatu nahi duten Knative erabiltzaileentzat, Knative atebidearen araberakoa baita soilik.

Hori dela eta, erabiltzaile gehienek Gloo nahiago dute Knativerako ate gisa, Istio-ren antzeko gaitasun multzo bat eskainiz (Knative soilik erabiltzeko helburuarekin), baliabide nabarmen gutxiago erabiliz eta kostu operatibo txikiagoak izanik.

Knative probatu dezagun standean. GKEn exekutatzen ari den instalatutako kluster bat erabiliko dut:

kubectl get namespace
NAME          STATUS   AGE
default       Active   21h
kube-public   Active   21h
kube-system   Active   21h

Has gaitezen Knative eta Gloo instalatzen. Hau edozein ordenatan egin daiteke:

# ставим 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
# ...

Pods guztiak "Abian" egoeran daudela egiaztatzen dugu:

kubectl get pod -n knative-serving
NAME                              READY   STATUS    RESTARTS   AGE
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
NAME                                      READY   STATUS    RESTARTS   AGE
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 bideratzeko prest dago, sor diezaiogun eskalatze automatikoko Knative zerbitzu bat (dei diezaiogun kservice) eta bideratu diezaiogun trafikoa.

Knative zerbitzuek Kubernetes-era aplikazioak entregatzeko bide errazagoa eskaintzen dute Inplementazio+Zerbitzu+Sarrera ohiko ereduak baino. Adibide honekin lan egingo dugu:

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

Fitxategi batean kopiatu nuen, gero nire Kubernetes klusterrean aplikatu nuen modu honetan:

kubectl apply -f ksvc.yaml -n default

Knative-k sortutako baliabideak klusterrean ikus ditzakegu gure 'helloworld-go' entregatu ondoren kzerbitzua:

kubectl get pod -n default
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

Gure 'helloworld-go' irudia duen poda kservice inplementatzen denean abiarazten da. Trafikorik ez badago, ontzi kopurua zerora murriztuko da. Eta alderantziz, aldibereko eskaera kopuruak konfigura daitekeen atalase jakin bat gainditzen badu, pods kopurua handitu egingo da.

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   True

Knative-k bere sarrera konfiguratzen du barne Knative APIko 'sarrera' baliabide berezi bat erabiliz. Gloo-k API hau konfigurazio gisa erabiltzen du PaaS antzeko funtzioak eskaintzeko, besteak beste, hedapen-eredu urdin-berde bat, TLS betearaztea automatikoa, denbora-muga eta beste bideratze-eginbide aurreratu batzuk.

Denbora pixka bat igaro ondoren, gure lekak desagertu egin direla ikusiko dugu (sarrerako trafikorik ez zegoelako):

kubectl get pod -n default

No resources found.
kubectl get deployment -n default
NAME                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

Azkenean, haiengana iristen saiatuko gara. Erraz eta erraz lor dezakezu Knative Proxy-ren URLa erabiliz glooctl:

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

Instalatu gabe glooctl helbidea eta ataka kube zerbitzuan ikus ditzakezu:

kubectl get svc -n gloo-system knative-external-proxy
NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
knative-external-proxy   LoadBalancer   10.16.11.157   35.190.151.188   80:32168/TCP,443:30729/TCP   77m

Exekutatu ditzagun datu batzuk cURL erabiliz:

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!

Knative-k ia PaaS bat eskaintzen die garatzaileei Kubernetes-en gain, Gloo-ren errendimendu handiko eta pila osoko API atebidea erabiliz. Argitalpen honek Knativeren pertsonalizazio aukeren eta ezaugarri gehigarrien gainazala urratu besterik ez du egin. Gloo-rekin berdin!

Knative oraindik proiektu gaztea den arren, bere taldeak sei astean behin bertsio berriak kaleratzen ditu, eta funtzio aurreratuen inplementazioa hasi da, hala nola TLS inplementazio automatikoa, kontrol panelaren eskalatze automatikoa. Aukera handia dago hodeiko hainbat enpresaren arteko lankidetzaren ondorioz eta Google-ren Cloud Run eskaintza berriaren oinarri gisa, Knative Kubernetes-en zerbitzaririk gabeko informatikarako eta PaaSrako aukera nagusia bihur daitekeela. Jarraitu albistea!

SouthBridge-ko editoreen eskutik
Irakurleen iritziak garrantzitsuak dira guretzat, beraz Knative, Kubernetes, zerbitzaririk gabeko informatikari buruzko etorkizuneko artikuluekin lotutako inkesta labur batean parte hartzeko eskatzen dizugu:

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

Knative eta zerbitzaririk gabeko informatikari buruzko artikuluak eta gidak idazten jarraitu behar al dut?

  • Bai mesedez.

  • Ez eskerrik asko.

28 erabiltzailek eman dute botoa. 4 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria