Knative - Platform-as-a-service basatu in k8s cù supportu serverless

Knative - Platform-as-a-service basatu in k8s cù supportu serverless

Kubernetes hè senza dubbitu diventatu a piattaforma dominante per l'implementazione di container. Fornisce a capacità di cuntrullà quasi tuttu cù i so API è i cuntrolli persunalizati chì estendenu e so API cù risorse persunalizati.

Tuttavia, l'utilizatore deve sempre piglià decisioni dettagliate nantu à esattamente cumu implementà, cunfigurà, gestisce è scala l'applicazioni. I prublemi di scala di l'applicazione, prutezzione è flussu di trafficu restanu à a discrezione di l'utilizatori. Questu distingue Kubernetes da e plataforme convenzionali cum'è serviziu (PaaS), cum'è Cloud Foundry è Heroku.

I plataformi anu una interfaccia d'utilizatore simplificata è sò destinati à i sviluppatori di l'applicazioni chì sò più spessu implicati in a creazione di applicazioni individuali. Routing, implementazione è metriche sò gestiti in modu trasparente à l'utilizatore da u sistema PaaS sottostante.

U flussu di travagliu da a fonte à a nave hè trattatu da PaaS creendu una maghjina di cuntainer persunalizata, implementendula, cunfigurà una nova ruta è u subdominiu DNS per u trafficu entrante. Tuttu chistu hè lanciatu nantu à u cumandimu git push.

Kubernetes (intenzionalmente) furnisce solu i blocchi di custruzzione core per tali piattaforme, lascendu a cumunità libera di fà u travagliu stessu. Cumu Kelsey Hightower hà dettu:

Kubernetes hè una piattaforma per custruisce e piattaforme. U megliu postu per inizià, ma micca finitu.

In u risultatu, vedemu una mansa di Kubernetes builds, è ancu cumpagnie d'ospiti chì cercanu di creà PaaS per Kubernetes, cum'è OpenShift è Rancher. À mezu à u crescente mercatu Kube-PaaS, Knative, fundata in lugliu 2018 da Google è Pivotal, entra in u ring.

Knative era una cullaburazione trà Google è Pivotal, cù un pocu aiutu da altre cumpagnie cum'è IBM, RedHat è Solo.im. Offre cose PaaS simili à Kubernetes cù un supportu di punta per l'applicazioni basate in l'informatica senza server. A cuntrariu di e custruzzioni di Kubernetes, Knative hè stallatu cum'è un add-on in qualsiasi cluster Kubernetes cumpatibile è cunfiguratu attraversu risorse d'utilizatori.

Cosa hè Knative?

Knative hè descritta cum'è "Una piattaforma basata in Kubernetes per a distribuzione è a gestione di carichi di travagliu cù l'informatica moderna senza servitore". Knative, mentre chì si fattura cum'è una tale piattaforma, attivamente autoscale cuntenituri in proporzione à e richieste HTTP concurrenti. I servizii inutilizati eventualmente scalanu à zero, furnisce una scala à a dumanda senza servitore.

Knative hè custituitu da un inseme di controller chì stallanu in ogni cluster Kubernetes è furnisce e seguenti capacità:

  • custruendu applicazioni containerizzate da u codice fonte (furnitu da u cumpunente custruisce),
  • furnisce l'accessu à u trafficu entrante à l'applicazioni (furnitu da u cumpunente Con),
  • consegna è scala automatica di l'applicazioni nantu à a dumanda (furnita ancu da u cumpunente Con),
  • identificà e fonti di l'avvenimenti chì portanu à u lanciu di l'applicazioni (furnitu da u cumpunente Eventing).

Un cumpunente chjave hè Serving, chì furnisce l'approvvigionamentu, l'auto-scaling è a gestione di u trafficu per l'applicazioni gestite. Dopu avè installatu Knative, avete sempre un accessu cumpletu à l'API Kubernetes, chì permette à l'utilizatori di gestisce l'applicazioni ordinariu manera, è serve dinù à debug servizii Knative, u travagliu cù u listessu primitivi API chi sti servizii usu (moduli, servizii, etc.).

Cù l'aiutu di Serving, u routing di u trafficu blu-verde hè ancu automatizatu, assicurendu a separazione di u trafficu trà e versioni novi è vechji di l'applicazione quandu l'utilizatore furnisce una versione aghjurnata di l'applicazione.

Knative stessu dipende da a stallazione di un controller di ingressu cumpatibile. À u mumentu di a scrittura di stu articulu hè supportatu Gloo API Gateway и Istio Service Mesh. Configurerà l'ingressu dispunibule per indirizzà u trafficu à l'applicazioni gestite da Knative.

Istio Service Mesh pò esse una grande dependenza per l'utilizatori di Knative chì volenu pruvà senza installà u pannellu di cuntrollu Istio, postu chì Knative dipende solu da a porta.

Per questa causa, a maiò parte di l'utilizatori preferiscenu Gloo cum'è una porta d'ingressu à Knative, chì furnisce un inseme di capacità simili à Istio (per u scopu di utilizà solu Knative), mentre chì utilizanu assai menu risorse è avè i costi operativi più bassi.

Testemu Knative in azzione nantu à u stand. Aduprà un cluster appena installatu chì funziona in GKE:

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

Cuminciamu à stallà Knative è Gloo. Questu pò esse fattu in ogni ordine:

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

Cuntrollamu chì tutti i Pods sò in u statu "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 hè prontu per u routing, creemu un serviziu Knative auto-scaling (chiamemu kservice) è indirizzemu u trafficu à questu.

I servizii Knative furniscenu una strada più faciule per furnisce l'applicazioni à Kubernetes cà u mudellu di Deployment + Service + Ingress convenzionale. Avemu da travaglià cù questu esempiu:

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

Aghju copiatu questu in un schedariu, dopu appiicatu à u mo cluster Kubernetes in questu modu:

kubectl apply -f ksvc.yaml -n default

Pudemu vede e risorse create da Knative in u cluster dopu a consegna di u nostru "helloworld-go" kservice:

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

U pod cù a nostra maghjina "helloworld-go" hè lanciata quandu u kservice hè implementatu. Se ùn ci hè micca trafficu, u numeru di pods serà ridutta à zero. È vice versa, se u numeru di dumande simultanee supera un certu limitu configurabile, u numeru di pods aumenterà.

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

Knative cunfigura u so ingressu utilizendu una risorsa speciale "ingress" in l'API interna Knative. Gloo usa questa API cum'è a so cunfigurazione per furnisce funzioni simili à PaaS, cumpresu un mudellu di implementazione blu-verde, applicazione automatica di TLS, timeout è altre funzioni avanzate di routing.

Dopu qualchì tempu, vedemu chì i nostri podi sò spariti (perchè ùn ci era micca trafficu entrante):

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

Infine cercheremu di ghjunghje à elli. Pudete facilmente è facilmente uttene l'URL per Knative Proxy utilizendu glooctl:

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

Senza installatu glooctl pudete vede l'indirizzu è u portu in u serviziu 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

Eseguimu qualchi dati cù cURL:

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

Knative furnisce un guasi PaaS per i sviluppatori in cima à Kubernetes out-of-the-box chì utilizanu a porta API API full-stack high-performance di Gloo. Questu post hà solu graffiatu a superficia di l'estese opzioni di persunalizazione di Knative è e funzioni supplementari. U stessu cù Gloo!

Malgradu u fattu chì Knative hè sempre un prughjettu ghjovanu, a so squadra libera novi versioni ogni sei simani, è l'implementazione di funzioni avanzate hà cuminciatu, cum'è l'implementazione automatica di TLS, a scala automatica di u pannellu di cuntrollu. Ci hè una bona chance chì, per via di a cullaburazione trà parechje cumpagnie di nuvola, è cum'è a basa di a nova offerta Cloud Run di Google, Knative puderia diventà l'opzione primaria per l'informatica senza servitore è PaaS in Kubernetes. Segui a nutizia !

Da l'editori di SouthBridge
L'opinioni di i lettori sò impurtanti per noi, cusì vi dumandemu di participà à una breve indagine in relazione à articuli futuri nantu à Knative, Kubernetes, l'informatica senza servitore:

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Deve cuntinuà à scrive articuli è guide nantu à l'informatica Knative è serverless?

  • Iè per piacè.

  • Innò, grazie.

28 utilizatori anu vutatu. 4 utilizatori si sò astenuti.

Source: www.habr.com

Add a comment