Knative poggia su Kubernetes e aggiunge tre componenti principali o primitive: Build, Serving ed Eventing.
Build
Il componente Knative Build automatizza il processo di trasformazione del codice sorgente in un container. Questo processo in genere comporta una serie di passi, tra cui:
- Estrarre il codice sorgente da un repository di codici, come GitHub
- Installare le dipendenze sottostanti - come le variabili d'ambiente e le librerie software - di cui il codice ha bisogno per essere eseguito
- Creare le immagini del container
- Inserire le immagini del container in un registro dove Kubernetes (e altri sviluppatori) possano trovarle.
Knative usa le API Kubernetes e altri strumenti per il suo processo Build. Uno sviluppatore può creare un singolo manifest (di norma un file YAML ) che specifica tutte le variabili - ubicazione del codice sorgente, dipendenze richieste, ecc. - e Knative usa il manifest per automatizzare la costruzione del container.
Serving
Il componente Serving implementa ed esegue i container come servizi Knative scalabili. Questo componente fornisce le seguenti importanti funzionalità:
- La configurazione definisce e mantiene lo stato di un servizio. Fornisce anche la gestione delle versioni: ogni modifica alla configurazione crea una nuova versione del servizio e le versioni precedenti vengono salvate.
- L' instradamento intelligente dei servizi consente agli sviluppatori di indirizzare il traffico a diverse versioni del servizio. Supponiamo di aver creato una nuova versione di un servizio, ma di volerla implementare a un sottoinsieme di utenti prima di migrare tutti gli utenti. L' instradamento intelligente dei servizi ti consente di instradare una percentuale delle richieste degli utenti al nuovo servizio e il resto delle richieste a una versione precedente; man mano che diventi più sicuro del nuovo servizio, puoi instradare più traffico verso di esso.
- Scalabilità automatica. Knative può scalare i servizi fino a migliaia di istanze; può anche scalarli fino a zero - cioè, nessuna istanza del container - cosa fondamentale per supportare applicazioni serverless .
Knative Serving prende in prestito l' instradamento intelligente dei servizi da Istio, un'altra applicazione dell'ecosistema Kubernetes. una rete di servizi open-source per Kubernetes. Istio fornisce anche l' autenticazione per le richieste di servizio, la crittografia automatica del traffico per una comunicazione sicura tra i servizi e metriche dettagliate sui microservizi e le operazioni di funzioni serverless che gli sviluppatori e gli amministratori possono utilizzare per ottimizzare l'infrastruttura. (Per ulteriori dettagli su come Knative utilizza Istio, leggi "Istio and Knative: Extending Kubernetes for a New Developer Experience".)
Eventing
Il componente Eventing di Knative consente a diversi eventi di attivare i relativi servizi e funzioni basati sui container. Knative accoda e fornisce questi eventi ai container appropriati, quindi non è necessario scrivere script o implementare middleware per la funzionalità. Knative gestisce anche i canali, che sono code di eventi tra cui gli sviluppatori possono scegliere, e il bus, una piattaforma di messaggistica che fornisce eventi ai container. Consente anche agli sviluppatori di impostare i feed, che collegano un evento a un'azione che deve essere eseguita dai container.
Le origini Event Knative rendono più facile per gli sviluppatori creare connessioni a produttori di eventi di terze parti. Eventing di Knative creerà automaticamente la connessione al produttore di eventi e instraderà gli eventi generati. Non è necessario capire come farlo programmaticamente - Knative svolge tutto il lavoro.