Knative - k8s-based platform-as-a-service ndi thandizo lopanda seva

Knative - k8s-based platform-as-a-service ndi thandizo lopanda seva

Kubernetes mosakayikira yakhala nsanja yayikulu yoperekera ziwiya. Amapereka mphamvu yolamulira pafupifupi chilichonse pogwiritsa ntchito ma API ake ndi olamulira omwe amakulitsa ma API ake ndi zipangizo zamakono.

Komabe, wogwiritsa ntchito amayenera kupanga zisankho mwatsatanetsatane za momwe angatumizire, kukonza, kuyang'anira, ndi kukulitsa mapulogalamu. Nkhani zokhuza makulitsidwe, chitetezo, ndi kayendedwe ka magalimoto zimakhalabe pakufuna kwa wogwiritsa ntchito. Izi zimasiyanitsa Kubernetes ndi nsanja wamba ngati ntchito (PaaS), monga Cloud Foundry ndi Heroku.

Mapulatifomu ali ndi mawonekedwe osavuta ogwiritsira ntchito ndipo amayang'ana opanga mapulogalamu omwe nthawi zambiri amakhala ndi gawo lokhazikitsa mapulogalamu pawokha. Mayendedwe, kutumiza, ndi ma metrics amayendetsedwa mowonekera kwa wogwiritsa ntchito ndi dongosolo la PaaS.

Kuyenda kwa gwero-to-sitima kumayendetsedwa ndi PaaS popanga chithunzi cha chidebe chokhazikika, kuyika, kukhazikitsa njira yatsopano ndi DNS subdomain yamagalimoto omwe akubwera. Zonsezi zimayambitsidwa ndi lamulo git push.

Kubernetes (mwadala) amangopereka midadada yomangira nsanja zotere, kusiya anthu ammudzi kuti azigwira ntchitoyo okha. Bwanji Kelsey Hightower adatero:

Kubernetes ndi nsanja yomanga nsanja. Malo abwino kwambiri oyambira, koma osamaliza.

Chotsatira chake, tikuwona gulu la Kubernetes likumanga, komanso makampani ogwira ntchito omwe akuyesera kupanga PaaS kwa Kubernetes, monga OpenShift ndi Rancher. Pakati pa msika womwe ukukula wa Kube-PaaS, Knative, womwe unakhazikitsidwa mu Julayi 2018 ndi Google ndi Pivotal, akulowa mu mphete.

Knative anali mgwirizano pakati pa Google ndi Pivotal, mothandizidwa pang'ono ndi makampani ena monga IBM, RedHat ndi Solo.im. Imapereka zinthu zofananira za PaaS kwa Kubernetes ndi chithandizo chapamwamba cha mapulogalamu opangira makompyuta opanda seva. Mosiyana ndi Kubernetes amamanga, Knative imayikidwa ngati chowonjezera pamagulu aliwonse ogwirizana a Kubernetes ndikukonzedwa kudzera pazogwiritsa ntchito.

Kodi Knative ndi chiyani?

Knative akufotokozedwa ngati "Nsanja yokhazikitsidwa ndi Kubernetes yoperekera ndikuwongolera ntchito zambiri pogwiritsa ntchito makompyuta amakono opanda seva." Knative, ikudzilipira yokha ngati nsanja yotere, imayendetsa zotengera mwachangu molingana ndi zopempha za HTTP. Ntchito zosagwiritsidwa ntchito pamapeto pake zimatsikira pa zero, zomwe zimapatsa mawonekedwe opanda seva pofunikira.

Knative imakhala ndi owongolera omwe amayika gulu lililonse la Kubernetes ndikupereka izi:

  • kupanga mapulogalamu okhala ndi zida kuchokera ku code code (yoperekedwa ndi gawo kumanga),
  • kupereka mwayi wopeza magalimoto obwera ku mapulogalamu (operekedwa ndi gawoli kutumikira),
  • kutumiza ndi kuchulukitsa kwazinthu pazomwe zimafunidwa (zoperekedwanso ndi gawolo kutumikira),
  • kuzindikira komwe kumachokera zochitika zomwe zimatsogolera kukhazikitsidwa kwa ntchito (zoperekedwa ndi gawolo Zochitika).

Chofunikira kwambiri ndi Kutumikira, komwe kumapereka makonzedwe, makulitsidwe, ndi kuyang'anira magalimoto pamapulogalamu oyendetsedwa. Mukakhazikitsa Knative, mumakhalabe ndi mwayi wofikira ku Kubernetes API, kulola ogwiritsa ntchito kuyang'anira mapulogalamu. wamba njira, komanso imathandizira kuthetsa ntchito za Knative, kugwira ntchito ndi zoyambira za API zomwe mautumikiwa amagwiritsa ntchito (ma module, mautumiki, ndi zina).

Mothandizidwa ndi Kutumikira, mayendedwe obiriwira amtundu wa buluu amakhalanso ndi makina, kuwonetsetsa kuti magalimoto apatukane pakati pa mitundu yatsopano ndi yakale ya pulogalamuyo pomwe wogwiritsa ntchito apereka pulogalamu yosinthidwa.

Knative palokha imadalira kukhazikitsa chowongolera chovomerezeka cha ingress. Pa nthawi yolemba nkhaniyi imathandizidwa Gloo API Gateway ΠΈ Istio Service Mesh. Ikhazikitsa ingress yomwe ilipo kuti iyendetse magalimoto kupita ku mapulogalamu oyendetsedwa ndi Knative.

Istio Service Mesh ikhoza kukhala yodalira kwambiri kwa ogwiritsa ntchito a Knative omwe akufuna kuyesa popanda kukhazikitsa gulu lowongolera la Istio, popeza Knative imangotengera chipata.

Pachifukwa ichi, ogwiritsa ntchito ambiri amakonda Gloo ngati njira yopita ku Knative, yopereka mphamvu zofanana ndi Istio (cholinga chogwiritsa ntchito Knative kokha), komanso kugwiritsa ntchito zinthu zochepa kwambiri komanso kukhala ndi ndalama zochepa zogwirira ntchito.

Tiyeni tiyese Knative akugwira ntchito poyimilira. Ndikhala ndikugwiritsa ntchito gulu lokhazikitsidwa kumene lomwe likuyenda mu GKE:

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

Tiyeni tiyambe kukhazikitsa Knative ndi Gloo. Izi zitha kuchitika mwanjira iliyonse:

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

Tikuwona kuti ma Pods onse ali mu "Running":

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 yakonzeka kulowera, tiyeni tipange ntchito ya Knative yodzikweza yokha (tiyeni tiyitchule kservice) ndikutsata kuchuluka kwa magalimoto kumeneko.

Ntchito za Knative zimapereka njira yosavuta yoperekera mapulogalamu ku Kubernetes kuposa mtundu wamba wa Deployment+Service+Ingress. Tidzagwira ntchito ndi chitsanzo ichi:

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

Ndidakopera izi pafayilo, kenako ndikuyika pagulu langa la Kubernetes motere:

kubectl apply -f ksvc.yaml -n default

Titha kuwona zomwe zidapangidwa ndi Knative mgululi pambuyo popereka 'helloworld-go' yathu. ntchito:

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

Poda yokhala ndi chithunzi chathu cha 'helloworld-go' imayambitsidwa pomwe kservice itumizidwa. Ngati palibe kuchuluka kwa magalimoto, kuchuluka kwa ma pods kumachepetsedwa kukhala ziro. Ndipo mosemphanitsa, ngati kuchuluka kwa zopempha munthawi imodzi kupitilira malire omwe angasinthidwe, kuchuluka kwa ma pods kumawonjezeka.

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

Knative amakonza ingress yake pogwiritsa ntchito chida chapadera cha 'ingress' mu Knative API yamkati. Gloo amagwiritsa ntchito API iyi ngati kasinthidwe kake kuti apereke mawonekedwe a PaaS, kuphatikiza mtundu wamtundu wabuluu wobiriwira, kukakamiza kwa TLS, kutha kwa nthawi, ndi zina zapamwamba zamanjira.

Patapita kanthawi, tikuwona kuti ma pod athu asowa (chifukwa panalibe magalimoto obwera):

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

Pomaliza tidzayesetsa kuwafikira. Mutha kupeza mosavuta ulalo wa Knative Proxy pogwiritsa ntchito glooctl:

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

Popanda anaika glooctl mutha kuwona adilesi ndi doko mu ntchito ya 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

Titha kugwiritsa ntchito cURL:

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

Knative imapereka pafupifupi PaaS kwa opanga pamwamba pa Kubernetes omwe amagwiritsa ntchito Gloo's high-performance, full stack API gateway. Cholembachi changoyang'ana pamwamba pazosankha zambiri za Knative ndi zina zowonjezera. Momwemonso ndi Gloo!

Ngakhale kuti Knative akadali pulojekiti yaying'ono, gulu lake limatulutsa mitundu yatsopano milungu isanu ndi umodzi iliyonse, ndipo kukhazikitsidwa kwa zinthu zapamwamba kwayamba, monga kutumiza kwa TLS, kukulitsa gulu lowongolera. Pali mwayi waukulu kuti, chifukwa cha mgwirizano pakati pa makampani angapo amtambo, komanso monga maziko a Google Cloud Run yatsopano yopereka, Knative ikhoza kukhala njira yoyamba yamakompyuta opanda seva ndi PaaS pa Kubernetes. Tsatirani nkhani!

Kuchokera kwa Akonzi a SouthBridge
Malingaliro a owerenga ndi ofunikira kwa ife, kotero tikukupemphani kuti mutenge nawo mbali pakafukufuku wachidule wokhudzana ndi nkhani zamtsogolo za Knative, Kubernetes, kompyuta yopanda seva:

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi mukufuna kupitiriza kulemba zolemba ndi malangizo okhudza makompyuta a Knative komanso opanda seva?

  • Inde chonde.

  • Ayi zikomo.

Ogwiritsa ntchito 28 adavota. Ogwiritsa 4 adakana.

Source: www.habr.com

Kuwonjezera ndemanga