Knative - k8s-i runga i te turanga-as-a-ratonga me te tautoko kore

Knative - k8s-i runga i te turanga-as-a-ratonga me te tautoko kore

Kare e kore kua noho a Kubernetes te turanga tino nui mo te tuku ipu. Ka whakaratohia e ia te kaha ki te whakahaere tata ki nga mea katoa ma te whakamahi i ona API me nga kaiwhakahaere ritenga e whakawhānui ana i ona API me nga rauemi ritenga.

Heoi, me whakarite tonu te kaiwhakamahi ki te whakatau me pehea te whakatakoto, te whirihora, te whakahaere me te tauine tono. Ko nga take o te whakatikatika i te tono, te whakamarumaru, me te rere o nga waka kei runga tonu i te whakaaro o te kaiwhakamahi. Ka wehe tenei i nga Kubernetes mai i nga papaa tikanga hei ratonga (PaaS), penei i a Cloud Foundry me Heroku.

He atanga kaiwhakamahi ngawari nga papaaho, a, e whai ana ki nga kaiwhakawhanake tono e tino whai waahi ana ki te whakatuu tono takitahi. Ko te ararere, te horahanga, me nga inenga e whakahaere marama ana ki te kaiwhakamahi e te punaha PaaS.

Ko te rerenga mahi puna-ki-kaipuke e whakahaerea ana e te PaaS ma te hanga i te ahua o te ipu, te tuku, te whakarite huarahi hou me te roheroto DNS mo nga waka taumai. Ka whakarewahia tenei katoa i runga i te whakahau git push.

Ko nga Kubernetes (ko te hiahia) ka whakarato noa i nga poraka hanga matua mo aua papaahi, ka waiho noa te hapori ki te mahi i nga mahi. Pehea Ka mea a Kelsey Hightower:

Ko Kubernetes he papa mo te hanga papa. Ko te waahi pai mo te tiimata, engari kaore i te whakaoti.

Ko te mutunga, ka kite matou i te tini o nga Kubernetes e hanga ana, me nga kamupene manaaki e ngana ana ki te hanga PaaS mo nga Kubernetes, penei i a OpenShift me Rancher. I roto i te tipu o te maakete Kube-PaaS, Knative, i whakaturia i te marama o Hurae 2018 e Google me Pivotal, kei te uru ki te mowhiti.

He mahi tahi a Knative i waenga i a Google me Pivotal, me te awhina iti mai i etahi atu kamupene penei i a IBM, RedHat me Solo.im. He rite nga mea PaaS ki a Kubernetes me te tautoko tino pai mo nga tono-rorohiko kore-tumau. Kaore i rite ki te hanga a Kubernetes, ka whakauruhia a Knative hei taapiri ki runga i nga kahui Kubernetes hototahi me te whirihora ma nga rauemi kaiwhakamahi.

He aha te Knative?

E kiia ana a Knative "He papaaapapa-a-Kubernetes mo te tuku me te whakahaere i nga taumahatanga mahi ma te whakamahi rorohiko kore-kaupapa hou." Ko te Knative, i te wa e utu ana i a ia ano he papaaho pera, ka kaha te tarai i nga ipu kia rite ki nga tono HTTP. Ko nga ratonga kaore i whakamahia i te mutunga ka heke iho ki te kore, e whakarato ana i te whakatauine-a-tono-kore.

Kei roto i a Knative he huinga mana whakahaere e whakauru ana ki tetahi huinga Kubernetes me te whakarato i nga kaha e whai ake nei:

  • hanga tono ipu mai i te waehere puna (kua whakaratohia e te waahanga hanga),
  • whakarato urunga ki nga waka taumai ki nga tono (e whakaratohia ana e te waahanga te taviniraa),
  • te tuku me te whakatauira aunoa i nga tono i runga i te tono (e whakaratohia ana e te waahanga te taviniraa),
  • te tautuhi i nga puna o nga huihuinga e arahi ana ki te whakarewatanga o nga tono (e whakaratohia ana e te waahanga Mahi).

Ko tetahi waahanga nui ko te Ratonga, e whakarato ana i te whakaratonga, te whakatau-aunoa, me te whakahaere waka mo nga tono whakahaere. Whai muri i te whakaurunga o Knative, kei a koe tonu te uru ki te Kubernetes API, ka taea e nga kaiwhakamahi te whakahaere tono noa ara, me te mahi ano hoki ki te patuiro i nga ratonga Knative, me te mahi tahi me te API tuatahi e whakamahia ana e enei ratonga (kowae, ratonga, me etahi atu).

Ma te awhina o te Ratonga, he mea aunoa ano te ararere waka puru-matomato, e whakarite ana i te wehenga waka i waenga i nga putanga hou me te tawhito o te tono ka tukuna e te kaiwhakamahi he putanga whakahou o te tono.

Ko te Knative ake e whakawhirinaki ana ki te whakauru i tetahi kaiwhakahaere whakauru hototahi. I te wa e tuhi ana ka tautokohia tenei tuhinga Gloo API Gateway и Istio Service Mesh. Ka whirihorahia te whakaurunga e waatea ana hei arataki i nga waka ki nga tono a Knative-whakahaere.

Ka taea e Istio Service Mesh te whakawhirinaki nui mo nga kaiwhakamahi Knative e hiahia ana ki te whakamatau me te kore e whakauru i te paewhiri mana Istio, na te mea ka whakawhirinaki noa a Knative ki te kuaha.

Mo konei, ko te nuinga o nga kaiwhakamahi e pai ana ki a Gloo hei huarahi ki te Knative, e whakarato ana i nga momo kaha ki a Istio (mo te whakamahi i te Knative anake), me te whakamahi i nga rauemi iti rawa me te iti o nga utu whakahaere.

Kia whakamatauria a Knative i runga i te turanga. Ka whakamahia e ahau he kahui hou kua whakauruhia ki te GKE:

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

Me timata taatau ki te whakauru Knative me Gloo. Ka taea tenei i nga tikanga katoa:

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

Ka tirohia e matou ko nga Pods katoa kei roto i te mana "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

Kua reri a Gloo mo te ararere, me hanga he ratonga Knative tauine-aunoa (karangatia he kservice) me te ara waka ki reira.

Ko nga ratonga Knative he huarahi ngawari ake ki te tuku tono ki nga Kubernetes i te tauira Tukunga+Ratonga+Ingress. Ka mahi tatou me tenei tauira:

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

I tāruahia e au tēnei ki tētahi kōnae, kātahi ka hoatu ki taku kāhui Kubernetes penei:

kubectl apply -f ksvc.yaml -n default

Ka taea e matou te tiro i nga rauemi i hangaia e Knative i roto i te roopu i muri i te tuku i a maatau 'helloworld-go' ratonga:

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

Ka whakarewahia te peera me to tatou ahua 'helloworld-go' i te wa e tukuna ana te kservice. Mena karekau he waka, ka heke te maha o nga poti ki te kore. A he rereke, ki te nui ake te maha o nga tono tukutahi i tetahi paepae whirihora, ka piki ake te maha o nga poti.

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

Ka whirihora a Knative i tana whakaurunga ma te whakamahi i tetahi rauemi 'ingress' motuhake i roto i te Knative API o roto. Ka whakamahi a Gloo i tenei API hei whirihoranga ki te whakarato i nga ahuatanga penei i te PaaS, tae atu ki te tauira tuku puru-matomato, te whakaurunga TLS aunoa, nga waahi, me etahi atu waahanga ararere matatau.

I muri i etahi wa, ka kite matou kua ngaro o matou poti (na te mea kaore he waka e haere mai ana):

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

Ka mutu ka ngana taatau ki te toro atu ki a raatau. Ka taea e koe te tiki i te URL mo Knative Takawaenga ma te whakamahi glooctl:

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

Karekau he whakauru glooctl ka kite koe i te wahitau me te tauranga i te ratonga 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

Me whakahaere etahi raraunga ma te whakamahi i te cURL:

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

Ka whakaratohia e Knative he tata-PaaS mo nga kaiwhakawhanake i runga ake o nga Kubernetes waho-o-te-pouaka ma te whakamahi i te kuaha API mahi-nui a Gloo, taapu tonu. Ko tenei pou kua rakuraku noa i te mata o nga whiringa whakaritenga a Knative me etahi atu waahanga. He rite ano ki a Gloo!

Ahakoa te mea he kaupapa rangatahi tonu a Knative, ka tukuna e tana roopu nga putanga hou ia ono wiki, a kua timata te whakatinanatanga o nga ahuatanga o mua, penei i te tuku TLS aunoa, te whakatikatika aunoa o te paewhiri mana. He pai te tupono, na te mahi tahi i waenga i nga kamupene kapua maha, me te putake o te whakahere Cloud Run hou a Google, ka taea e Knative te kowhiringa tuatahi mo te rorohiko kore utu me te PaaS i runga i nga Kubernetes. Whaia nga korero!

Na nga Etita o SouthBridge
He mea nui ki a matou nga whakaaro o nga kaipanui, no reira ka tono matou kia whai waahi koe ki tetahi rangahau poto e pa ana ki nga tuhinga a meake nei mo te Knative, Kubernetes, rorohiko kore utu:

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

Me haere tonu ahau ki te tuhi tuhinga me nga kaiarahi mo te rorohiko Knative me te kore tūmau?

  • Ae koa.

  • Kao, mihi.

28 nga kaiwhakamahi i pooti. 4 nga kaiwhakamahi i aukati.

Source: will.com

Tāpiri i te kōrero