Knative - sehatra-as-a-service mifototra amin'ny k8s miaraka amin'ny fanohanana tsy misy mpizara

Knative - sehatra-as-a-service mifototra amin'ny k8s miaraka amin'ny fanohanana tsy misy mpizara

Tsy isalasalana fa lasa sehatra lehibe indrindra amin'ny fametrahana kaontenera ny Kubernetes. Izy io dia manome fahafahana hifehy saika na inona na inona amin'ny fampiasana ny API sy ny fanaraha-maso mahazatra izay manitatra ny API amin'ny loharano mahazatra.

Na izany aza, ny mpampiasa dia tsy maintsy mandray fanapahan-kevitra amin'ny antsipiriany momba ny fomba fametrahana, fanamboarana, fitantanana ary fampitomboana ny rindranasa. Ny olana amin'ny fampitomboana ny fampiharana, ny fiarovana ary ny fizotry ny fifamoivoizana dia mijanona amin'ny fanapahan-kevitry ny mpampiasa. Izany dia mampiavaka an'i Kubernetes amin'ny sehatra mahazatra ho serivisy (PaaS), toy ny Cloud Foundry sy Heroku.

Ny sehatra dia manana interface interface tsotra ary natao ho an'ny mpamorona fampiharana izay matetika mandray anjara amin'ny fametrahana fampiharana tsirairay. Ny lalana, ny fametrahana ary ny metrika dia tantanan'ny rafitra PaaS amin'ny fomba mangarahara amin'ny mpampiasa.

Ny workflow loharano mankany amin'ny sambo dia karakarain'ny PaaS amin'ny alàlan'ny famoronana sary fitahirizana manokana, fametrahana azy, fametrahana lalana vaovao sy subdomain DNS ho an'ny fifamoivoizana miditra. Izany rehetra izany dia atomboka amin'ny baiko git push.

Kubernetes (niniany) no manome ny fototra fototra ho an'ny sehatra toy izany, mamela ny vondrom-piarahamonina malalaka hanao ny asa. Ahoana Hoy i Kelsey Hightower:

Kubernetes dia sehatra fananganana sehatra. Ny toerana tsara indrindra hanombohana, fa tsy famaranana.

Vokatr'izany dia mahita andiana Kubernetes manangana izahay, ary koa ireo orinasa fampiantranoana manandrana mamorona PaaS ho an'ny Kubernetes, toy ny OpenShift sy Rancher. Ao anatin'ny fitomboan'ny tsenan'i Kube-PaaS, Knative, natsangan'ny Google sy Pivotal tamin'ny Jolay 2018, dia miditra amin'ny peratra.

Knative dia fiaraha-miasa teo amin'ny Google sy Pivotal, miaraka amin'ny fanampiana kely avy amin'ny orinasa hafa toa ny IBM, RedHat ary Solo.im. Izy io dia manolotra zavatra PaaS mitovy amin'ny Kubernetes miaraka amin'ny fanohanana ambony indrindra amin'ny fampiharana mifototra amin'ny informatika tsy misy mpizara. Tsy toy ny fananganana Kubernetes, Knative dia apetraka ho fanampim-panampiana amin'ny kluster Kubernetes mifanentana ary namboarina amin'ny alàlan'ny loharanon'ny mpampiasa.

Inona no atao hoe Knative?

Knative dia nofaritana ho "sehatra miorina amin'ny Kubernetes amin'ny fanaterana sy fitantanana ny enta-mavesatra amin'ny fampiasana informatika tsy misy mpizara maoderina." Knative, na dia manao faktiora ho toy ny sehatra toy izany aza, dia mazoto manodina ny kaontenera mifanaraka amin'ny fangatahana HTTP miaraka. Ny serivisy tsy ampiasaina amin'ny farany dia midina ho aotra, manome fanamafisam-peo amin'ny fangatahana tsy misy mpizara.

Knative dia ahitana andiana mpanara-maso izay mametraka ao amin'ny cluster Kubernetes rehetra ary manome ireto fahaiza-manao manaraka ireto:

  • manangana fampiharana containerized avy amin'ny source code (nomen'ny singa Manaova),
  • manome fidirana amin'ny fifamoivoizana miditra amin'ny fampiharana (nomen'ny singa Nanompo),
  • fanaterana sy fanamafisam-peo mandeha ho azy amin'ny fangatahana (nomen'ny singa ihany koa Nanompo),
  • famantarana ny loharanon'ny hetsika mitarika amin'ny fandefasana fampiharana (nomen'ny singa Eventing).

Ny singa manan-danja dia ny Serving, izay manome famatsiana, fanamafisam-peo ho azy, ary fitantanana ny fifamoivoizana ho an'ny fampiharana voatanisa. Rehefa avy nametraka Knative ianao dia mbola manana fidirana feno amin'ny Kubernetes API, ahafahan'ny mpampiasa mitantana fampiharana tsotra fomba, ary miasa amin'ny debug serivisy Knative, miasa miaraka amin'ireo API primitives izay ampiasain'ireo serivisy ireo (modules, serivisy, sns.).

Miaraka amin'ny fanampian'ny Serving, mandeha ho azy ihany koa ny fandalovan'ny fifamoivoizana manga-maitso, miantoka ny fisarahan'ny fifamoivoizana eo amin'ny dikan-teny vaovao sy taloha amin'ny rindranasa rehefa manolotra dikan-teny nohavaozina ny mpampiasa.

Ny Knative mihitsy dia miankina amin'ny fametrahana contrôleur ingress mifanentana. Amin'ny fotoana anoratana ity lahatsoratra ity dia tohanana Gloo API Gateway и Istio Service Mesh. Izy io dia hanefy ny fidirana misy mba handefasana ny fifamoivoizana mankany amin'ny rindranasa tantano Knative.

Istio Service Mesh dia mety ho fiankinan-doha lehibe ho an'ireo mpampiasa Knative te hanandrana azy nefa tsy mametraka ny tontonana fanaraha-maso Istio, satria miankina amin'ny vavahady ihany i Knative.

Noho izany antony izany, aleon'ny ankamaroan'ny mpampiasa an'i Gloo ho vavahady mankany amin'ny Knative, manome fahaiza-manao mitovy amin'ny Istio (ho an'ny fampiasana Knative irery ihany), ary mampiasa loharanon-karena vitsy kokoa ary manana vidiny ambany kokoa.

Andao hizaha toetra an'i Knative amin'ny hetsika eny an-kianja. Hampiasa kluster vao napetraka ao amin'ny GKE aho:

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

Andao hanomboka hametraka Knative sy Gloo. Izany dia azo atao amin'ny filaharana rehetra:

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

Izahay dia manamarina fa ny Pods rehetra dia ao amin'ny sata "Mihazakazaka":

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

Efa vonona amin'ny zotra i Gloo, andao hamorona serivisy Knative auto-scaling (aleo atao hoe kservice) ary handefa ny fifamoivoizana mankany aminy.

Ny serivisy Knative dia manome lalana mora kokoa amin'ny fandefasana fampiharana amin'ny Kubernetes noho ny maodely Deployment+Service+Ingress mahazatra. Hiara-hiasa amin'ity ohatra ity isika:

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

Nandika izany tamin'ny rakitra iray aho, avy eo nampihatra izany tamin'ny cluster Kubernetes-ko toy izao:

kubectl apply -f ksvc.yaml -n default

Afaka mijery ireo loharano noforonin'i Knative ao amin'ny cluster izahay rehefa avy nanatitra ny 'helloworld-go' kservice:

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

Ny pod miaraka amin'ny sary 'helloworld-go' dia atomboka rehefa apetraka ny kservice. Raha tsy misy ny fifamoivoizana dia hihena ho aotra ny isan'ny pods. Ary ny mifamadika amin'izany, raha mihoatra ny tokonana azo fehezina ny isan'ny fangatahana miaraka, dia hitombo ny isan'ny pods.

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

Knative dia manitsy ny fidirany amin'ny alàlan'ny loharano manokana 'ingress' ao amin'ny Knative API anatiny. Mampiasa an'ity API ity i Gloo ho toy ny fandrindrana azy mba hanomezana endri-javatra mitovy amin'ny PaaS, ao anatin'izany ny maodely fametrahana manga-maitso, ny fampiharana TLS mandeha ho azy, ny fe-potoana, ary ireo endri-dàlana mandroso hafa.

Rehefa afaka kelikely dia hitanay fa nanjavona ny pods-nay (satria tsy nisy fifamoivoizana niditra):

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

Farany dia hiezaka hanatratra azy ireo isika. Afaka mahazo mora sy mora ny URL ho an'ny Knative Proxy ianao glooctl:

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

Tsy misy fametrahana glooctl azonao jerena ny adiresy sy seranan-tsambo ao amin'ny serivisy kube:

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

Andao hanao angona vitsivitsy amin'ny fampiasana cURL:

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

Ny Knative dia manome PaaS saika ho an'ny mpamorona an-tampon'ny Kubernetes ivelan'ny boaty mampiasa ny vavahadin'i Gloo avo lenta sy feno stack API. Ity lahatsoratra ity dia nandrakotra ny endrik'ireo safidy fanamboarana be dia be an'i Knative sy ireo endri-javatra fanampiny. Toy izany koa amin'i Gloo!

Na dia eo aza ny zava-misy fa Knative dia mbola tetik'asa tanora, ny ekipany dia mamoaka dikan-teny vaovao isaky ny enina herinandro, ary ny fampiharana ireo endri-javatra mandroso dia nanomboka, toy ny fametrahana TLS mandeha ho azy, scaling mandeha ho azy ny tontonana fanaraha-maso. Misy ny vintana lehibe fa, vokatry ny fiaraha-miasa eo amin'ny orinasa rahona marobe, ary ho fototry ny tolotra Cloud Run vaovao an'ny Google, Knative dia mety ho lasa safidy voalohany ho an'ny informatika tsy misy mpizara sy PaaS amin'ny Kubernetes. Araho ny vaovao!

Avy amin'ny tonian'ny SouthBridge
Zava-dehibe aminay ny hevitry ny mpamaky, koa miangavy anao izahay handray anjara amin'ny fanadihadiana fohy mifandraika amin'ny lahatsoratra ho avy momba ny Knative, Kubernetes, informatika tsy misy mpizara:

Ireo mpampiasa voasoratra anarana ihany no afaka mandray anjara amin'ny fanadihadiana. HiditraPlease.

Hanohy manoratra lahatsoratra sy torolalana momba ny informatika Knative sy tsy misy mpizara?

  • Eny azafady.

  • Tsia fa misaotra.

Mpampiasa 28 no nifidy. Mpampiasa 4 no nifady.

Source: www.habr.com

Add a comment