Knative - k8s ki baze sou platfòm-kòm-yon-sèvis ak sipò san sèvè

Knative - k8s ki baze sou platfòm-kòm-yon-sèvis ak sipò san sèvè

Kubernetes te san dout vin platfòm dominan pou deplwaman veso. Li bay kapasite pou kontwole prèske anyen lè l sèvi avèk API li yo ak kontwolè koutim ki pwolonje API li yo ak resous koutim.

Sepandan, itilizatè a toujou dwe pran desizyon detaye sou egzakteman ki jan yo deplwaye, konfigirasyon, jere, ak echèl aplikasyon yo. Pwoblèm ki genyen nan echèl aplikasyon an, pwoteksyon, ak koule trafik rete nan diskresyon itilizatè a. Sa a mete Kubernetes apa de platfòm konvansyonèl kòm yon sèvis (PaaS), tankou Cloud Foundry ak Heroku.

Platfòm yo gen yon koòdone itilizatè senplifye epi yo vize a devlopè aplikasyon ki pi souvan patisipe nan mete kanpe aplikasyon endividyèl yo. Wout, deplwaman, ak mezi yo jere transparan pou itilizatè a pa sistèm PaaS ki kache.

PaaS jere workflow sous-a-bato pa kreye yon imaj veso koutim, deplwaye li, mete kanpe yon nouvo wout ak DNS sou-domèn pou trafik fèk ap rantre. Tout bagay sa yo lanse sou lòd git push.

Kubernetes (espre) sèlman bay blòk debaz yo pou platfòm sa yo, kite kominote a lib pou fè travay la tèt yo. Ki jan Kelsey Hightower te di:

Kubernetes se yon platfòm pou bati platfòm. Pi bon pozisyon pou kòmanse, men pa fini.

Kòm yon rezilta, nou wè yon pakèt moun Kubernetes bati, osi byen ke konpayi hosting ki ap eseye kreye PaaS pou Kubernetes, tankou OpenShift ak Rancher. Nan mitan k ap grandi mache Kube-PaaS la, Knative, ki te fonde an Jiyè 2018 pa Google ak Pivotal, ap antre nan bag la.

Knative te yon kolaborasyon ant Google ak Pivotal, ak yon ti èd nan men lòt konpayi tankou IBM, RedHat ak Solo.im. Li ofri bagay ki sanble PaaS ak Kubernetes ak sipò siperyè pou aplikasyon ki baze sou òdinatè san sèvè. Kontrèman ak Kubernetes bati, Knative enstale kòm yon adisyon sou nenpòt gwoup Kubernetes konpatib ak konfigirasyon atravè resous itilizatè.

Ki sa ki Knative?

Knative dekri kòm "Yon platfòm ki baze sou Kubernetes pou delivre ak jere chaj travay lè l sèvi avèk enfòmatik modèn san sèvè." Knative, pandan y ap voye bòdwo tèt li kòm yon platfòm, aktivman autoscales veso yo nan pwopòsyon ak demann HTTP konkouran. Sèvis ki pa itilize yo evantyèlman diminye jiska zewo, bay dekale sou demann san sèvè.

Knative konsiste de yon seri contrôleur ki enstale nan nenpòt gwoup Kubernetes epi ki bay kapasite sa yo:

  • bati aplikasyon pou kontenè apati kòd sous (konpozan an bay Bati),
  • bay aksè a trafik fèk ap rantre nan aplikasyon yo (konpozan a bay Sèvi),
  • livrezon ak dechèl otomatik aplikasyon yo sou demann (tou bay nan eleman an Sèvi),
  • idantifye sous evènman ki mennen nan lansman aplikasyon (konpozan an bay Evènman).

Yon eleman kle se Sèvi, ki bay pwovizyon, oto-echèl, ak jesyon trafik pou aplikasyon jere. Apre enstale Knative, ou toujou gen aksè konplè a Kubernetes API, sa ki pèmèt itilizatè yo jere aplikasyon yo nòmal la fason, epi tou li sèvi debogaj sèvis Knative, k ap travay ak menm primitif API ke sèvis sa yo itilize (modil, sèvis, elatriye).

Avèk èd nan Sèvi, wout trafik ble-vèt tou otomatik, asire separasyon trafik ant vèsyon nouvo ak ansyen nan aplikasyon an lè itilizatè a delivre yon vèsyon mete ajou nan aplikasyon an.

Knative tèt li depann sou enstale yon kontwolè antre konpatib. Nan moman ekri atik sa a sipòte Gloo API Gateway и Istio sèvis may. Li pral configured antre ki disponib pou wout trafik nan aplikasyon Knative jere yo.

Istio Service Mesh kapab yon gwo depandans pou itilizatè Knative ki vle eseye li san yo pa enstale panèl kontwòl Istio, paske Knative sèlman depann sou pòtay la.

Pou rezon sa a, pifò itilizatè yo prefere Gloo kòm yon pòtay nan Knative, bay yon seri kapasite ki sanble ak Istio (nan bi pou yo sèvi ak sèlman Knative), pandan y ap itilize siyifikativman mwens resous epi yo gen pi ba pri operasyonèl.

Ann teste Knative an aksyon sou kanpe la. Mwen pral sèvi ak yon gwoup ki fèk enstale ki kouri nan GKE:

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

Ann kòmanse enstale Knative ak Gloo. Sa a ka fè nan nenpòt lòd:

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

Nou tcheke ke tout Pods yo nan estati "Kouri":

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 pare pou routage, ann kreye yon sèvis Knative oto-echèl (se pou nou rele li kservice) ak wout trafik nan li.

Sèvis knative bay yon chemen pi fasil pou bay aplikasyon pou Kubernetes pase modèl Deployment+Service+Ingress konvansyonèl la. Nou pral travay ak egzanp sa 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

Mwen kopye sa a nan yon dosye, Lè sa a, aplike li nan gwoup Kubernetes mwen an fason sa a:

kubectl apply -f ksvc.yaml -n default

Nou ka wè resous Knative kreye nan gwoup la apre nou fin livre 'helloworld-go' nou an. kservice:

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

Pod la ak imaj 'helloworld-go' nou an lanse lè kservice la deplwaye. Si pa gen trafik, kantite gous yo pral redwi a zewo. Ak vis vèrsa, si kantite demann similtane depase yon sèten papòt configurable, kantite gous yo ap ogmante.

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

Knative configured antre li yo lè l sèvi avèk yon resous espesyal 'ingress' nan API entèn Knative la. Gloo sèvi ak API sa a kòm konfigirasyon li pou bay karakteristik ki sanble ak PaaS, tankou yon modèl deplwaman ble-vèt, aplikasyon TLS otomatik, delè, ak lòt karakteristik routage avanse.

Apre kèk tan, nou wè gous nou yo te disparèt (paske pa te gen okenn trafik fèk ap rantre):

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

Finalman nou pral eseye rive jwenn yo. Ou ka fasil epi fasil jwenn URL la pou Knative Proxy lè l sèvi avèk glooctl:

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

San yo pa enstale glooctl ou ka wè adrès la ak pò nan sèvis la 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

Ann kouri kèk done lè l sèvi avèk cURL:

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

Knative bay devlopè yo prèske PaaS anplis Kubernetes ki pa nan bwat la lè l sèvi avèk pòtay API ki gen gwo pèfòmans Gloo a. Pòs sa a te sèlman grate sifas opsyon personnalisation vaste Knative a ak karakteristik adisyonèl. Menm jan ak Gloo!

Malgre lefèt ke Knative se toujou yon pwojè jèn, ekip li a lage nouvo vèsyon chak sis semèn, ak aplikasyon an nan karakteristik avanse te kòmanse, tankou deplwaman otomatik TLS, dekale otomatik nan panèl la kontwòl. Gen yon bon chans ke, kòm yon rezilta nan kolaborasyon ant plizyè konpayi nwaj, ak kòm baz nouvo ofrann Cloud Run Google la, Knative ta ka vin opsyon prensipal pou informatique san sèvè ak PaaS sou Kubernetes. Swiv nouvèl la!

Soti nan Editè yo nan SouthBridge
Opinyon lektè yo enpòtan pou nou, kidonk nou mande w patisipe nan yon sondaj kout ki gen rapò ak atik fiti sou Knative, Kubernetes, òdinatè san sèvè:

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Èske mwen ta dwe kontinye ekri atik ak gid sou Knative ak òdinatè san sèvè?

  • Wi tanpri.

  • Non mèsi.

28 itilizatè yo te vote. 4 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè