Knative - ikpo okwu dabere na k8s-dị ka ọrụ nwere nkwado enweghị nkesa

Knative - ikpo okwu dabere na k8s-dị ka ọrụ nwere nkwado enweghị nkesa

Obi abụọ adịghị ya na Kubernetes abụrụla ebe a na-ebuga akpa akpa. Ọ na-enye ikike ịchịkwa ihe fọrọ nke nta ka ọ bụrụ ihe ọ bụla site na iji API ya na ndị na-achịkwa omenala na-agbatị API ya na akụrụngwa omenala.

Agbanyeghị, onye ọrụ ka ga-eme mkpebi zuru oke gbasara otu esi ebuga, hazie, jikwaa yana ngwa nha. Okwu gbasara nlebawanye ngwa, nchedo, na mgbagharị okporo ụzọ ka dị n'aka onye ọrụ. Nke a na-edobe Kubernetes iche na nyiwe omenala dị ka ọrụ (PaaS), dị ka Cloud Foundry na Heroku.

Igwe ikpo okwu nwere interface ọrụ dị mfe ma na-ezubere ndị mmepe ngwa bụ ndị na-etinyekarị aka n'ịhazi ngwa n'otu n'otu. A na-ejikwa sistemu PaaS dị n'okpuru na-elekọta onye ọrụ nhazi, mbugharị, na metrik.

A na-ejikwa PaaS na-arụ ọrụ isi iyi na ụgbọ mmiri site na ịmepụta ihe oyiyi akpa omenala, na-ebuga ya, ịmepụta ụzọ ọhụrụ na subdomain DNS maka okporo ụzọ na-abata. Emere ihe a niile na iwu git push.

Kubernetes (ma kpachapụrụ anya) na-enye naanị isi ihe ụlọ maka nyiwe dị otú ahụ, na-ahapụ obodo ka ha nweere onwe ha ịrụ ọrụ ahụ n'onwe ha. Kedu Kelsey Hightower kwuru:

Kubernetes bụ ikpo okwu maka ịmepụta nyiwe. Ọnọdụ kachasị mma maka ịmalite, ma ọ bụghị imecha.

N'ihi ya, anyị na-ahụ ụyọkọ Kubernetes na-ewuli elu, yana ụlọ ọrụ ndị na-agba ọsọ na-agbalị ịmepụta PaaS maka Kubernetes, dị ka OpenShift na Rancher. N'ime ahịa Kube-PaaS na-eto eto, Knative, nke Google na Pivotal tọrọ ntọala na July 2018, na-abanye na mgbanaka ahụ.

Knative bụ mmekorita n'etiti Google na Pivotal, site na enyemaka dị nta sitere na ụlọ ọrụ ndị ọzọ dị ka IBM, RedHat na Solo.im. Ọ na-enye Kubernetes ihe PaaS ndị yiri ya na nkwado ọkaibe maka ngwa dabere na kọmpụta enweghị ihe nkesa. N'adịghị ka Kubernetes na-ewuli elu, a na-etinye Knative ka ọ bụrụ mgbakwunye na ụyọkọ Kubernetes ọ bụla dakọtara ma hazie ya site na akụrụngwa onye ọrụ.

Kedu ihe bụ Knative?

A kọwapụtara Knative dị ka "Ikpo okwu dabere na Kubernetes maka ịnyefe na ijikwa ibu ọrụ site na iji kọmpụta enweghị ihe nkesa ọgbara ọhụrụ." Knative, ka ọ na-akwụ ụgwọ n'onwe ya dị ka ikpo okwu dị otú ahụ, na-arụsi ọrụ ike na akpaaka akpaaka n'ikwekọ na arịrịọ HTTP. Ọrụ ejighi eji emecha gbadaa ruo efu, na-enye ụdị mkpara enweghị ihe nkesa.

Knative nwere usoro njikwa na-arụnye na ụyọkọ Kubernetes ọ bụla ma nye ikike ndị a:

  • ngwa ihe eji arụ ọrụ ụlọ sitere na koodu isi mmalite (nke akụrụngwa nyere Mee),
  • na-enye ohere ịnweta okporo ụzọ na-abata na ngwa (nyere site na mpaghara -eje ozi),
  • nnyefe na akpaka scaling nke ngwa na-achọrọ (nke a na-enyekwa ya -eje ozi),
  • na-achọpụta isi mmalite nke mmemme na-eduga na mmalite ngwa (nke a na-enye site na mpaghara Ememe).

Otu ihe dị mkpa bụ Ije ozi, nke na-enye ndokwa, nhazi akpaaka, na njikwa okporo ụzọ maka ngwa a na-achịkwa. Mgbe ị wụnyechara Knative, ị ka nwere ohere zuru oke na Kubernetes API, na-enye ndị ọrụ ohere ijikwa ngwa nkịtị ụzọ, ma na-ejekwa ozi iji mebie ọrụ Knative, na-arụ ọrụ na otu API primitives nke ọrụ ndị a na-eji (modul, ọrụ, wdg).

Site n'enyemaka nke Ịje ozi, a na-akpakwa ụzọ okporo ụzọ na-acha anụnụ anụnụ na-acha akwụkwọ ndụ akwụkwọ ndụ, na-ahụ na nkewa nke okporo ụzọ n'etiti ụdị ngwa ọhụrụ na nke ochie mgbe onye ọrụ na-ebunye ụdị ngwa ahụ emelitere.

Knative n'onwe ya dabere na ịwụnye njikwa ingress dakọtara. N'oge edere akụkọ a na-akwado Ọnụ ụzọ Gloo API и Ntupu ọrụ Istio. Ọ ga-ahazi mbata dị ka ọ ga-esi banye na ngwa ndị Knative jisiri ike.

Mesh Service Istio nwere ike ịbụ nnukwu ndabere maka ndị ọrụ Knative chọrọ ịnwale ya na-etinyeghị njikwa njikwa Istio, ebe Knative dabere na ọnụ ụzọ ámá.

N'ihi nke a, ọtụtụ ndị ọrụ na-ahọrọ Gloo ka ọ bụrụ ọnụ ụzọ Knative, na-enye ụdị ikike nke Istio (maka ebumnuche iji naanị Knative), ebe ha na-ejikwa akụrụngwa dị ntakịrị ma nwee ọnụ ahịa arụmọrụ dị ala.

Ka anyị nwalee Knative na omume na nkwụnye. Aga m eji ụyọkọ arụnyere ọhụrụ na-agba na GKE:

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

Ka anyị malite ịwụnye Knative na Gloo. Enwere ike ime nke a n'usoro ọ bụla:

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

Anyị na-elele na Pods niile nọ na ọkwa "Na-agba ọsọ":

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 adịla njikere maka ịnyagharị, ka anyị mepụta ọrụ Knative na-akpachapụ anya (ka anyị kpọọ ya kservice) wee mee njem na ya.

Ọrụ Knative na-enye ụzọ dị mfe iji nyefee ngwa na Kubernetes karịa ụdị Deployment+Service+Ingress. Anyị ga-arụ ọrụ na ihe atụ a:

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

Edepụtara m nke a na faịlụ, wee tinye ya na ụyọkọ Kubernetes m otu a:

kubectl apply -f ksvc.yaml -n default

Anyị nwere ike ịlele akụrụngwa nke Knative mepụtara na ụyọkọ ahụ ka anyị nyefechara 'helloworld-go' anyị. kservice:

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

A na-ewepụta pọd ahụ nwere onyonyo 'helloworld-go' mgbe ebugara kservice. Ọ bụrụ na enweghị okporo ụzọ, ọnụ ọgụgụ pọd ga-ebelata ka ọ bụrụ efu. Ma ọzọ, ma ọ bụrụ na ọnụ ọgụgụ nke imekotaotuugbo arịrịọ karịrị a ụfọdụ configurable ọnụ ụzọ, ọnụ ọgụgụ nke pods ga-abawanye.

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

Knative na-ahazi ntinye ya site na iji akụrụngwa 'mbanye' pụrụ iche n'ime API Knative. Gloo na-eji API nke a dị ka nhazi ya iji nye atụmatụ PaaS, gụnyere ụdị ntinye akwụkwọ ndụ akwụkwọ ndụ na-acha anụnụ anụnụ, mmanye TLS na-akpaghị aka, nkwụsị oge, na njirimara ụzọ ụzọ ndị ọzọ dị elu.

Mgbe oge ụfọdụ gasịrị, anyị na-ahụ na pọd anyị apụọla n'anya (n'ihi na ọ dịghị okporo ụzọ na-abata):

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

N'ikpeazụ, anyị ga-agbalị iru ha. Ị nwere ike na-adị mfe na mfe nweta URL maka Knative Proxy iji glooctl:

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

Enweghị arụnyere glooctl ị nwere ike ịhụ adreesị na ọdụ ụgbọ mmiri na ọrụ 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

Ka anyị jiri cURL mee ụfọdụ data:

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

Knative na-enye ihe fọrọ nke nta ka ọ bụrụ-PaaS maka ndị mmepe n'elu Kubernetes na-apụ apụ na-eji nnukwu arụmọrụ Gloo, ọnụ ụzọ API zuru ezu. Mbipute a kpụchapụrụ naanị n'elu nhọrọ nhazi nke Knative yana atụmatụ ndị ọzọ. Otu ihe ahụ na Gloo!

N'agbanyeghị na Knative ka bụ ọrụ na-eto eto, ndị otu ya na-ewepụta nsụgharị ọhụrụ kwa izu isii, na mmejuputa atụmatụ dị elu amalitela, dị ka ntinye TLS na-akpaghị aka, na-akpachapụ anya nke njikwa njikwa. Enwere ezigbo ohere na, n'ihi mmekorita n'etiti ọtụtụ ụlọ ọrụ igwe ojii, yana dịka ndabere nke onyinye Google Cloud Run, Knative nwere ike bụrụ nhọrọ bụ isi maka mgbakọ na-enweghị ihe nkesa yana PaaS na Kubernetes. Soro akụkọ!

Site na ndị editọ SouthBridge
Echiche ndị na-agụ akwụkwọ dị anyị mkpa, yabụ anyị na-arịọ gị ka ị sonye na nyocha dị nkenke metụtara akụkọ n'ọdịnihu gbasara Knative, Kubernetes, kọmputa enweghị ihe nkesa:

Naanị ndị ọrụ edebanyere aha nwere ike isonye na nyocha a. banye, Biko.

Ekwesịrị m ịga n'ihu na-ede akụkọ na ntuziaka gbasara kọmpụta Knative na enweghị nkesa?

  • Ee biko.

  • Mba, daalụ.

Ndị ọrụ 28 tụrụ vootu. Ndị ọrụ 4 anabataghị.

isi: www.habr.com

Tinye a comment