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
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
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.
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