Che cos'è Knative?

Pubblicato il 12 ottobre 2021
Simbolo dell'infinito rosso e blu luminoso che fluttua sopra una superficie riflettente in un ambiente buio e nebbioso

Che cos'è Knative

Knative consente l'esecuzione di workload serverless sui cluster Kubernetes. Rende più veloce e semplice la creazione e l'orchestrazione di container con Kubernetes.

Knative (pronuncia KAY-native) è un'estensione della piattaforma di orchestrazione dei container Kubernetes. Fornisce strumenti e utility che rendono la creazione, l'implementazione e la gestione di applicazioni containerizzate all'interno di Kubernetes un'esperienza più semplice e nativa di Kubernetes (da qui il nome, "K" per "Kubernetes" + "nativa").

Esattamente come Kubernetes, Knative è un software open source. Inizialmente Google lo ha sviluppato in collaborazione con IBM®, Pivotal, Red Hat®, SAP e circa 50 altre aziende. Oggi, la Cloud Native Computing Foundation (CNCF) ospita il progetto open source Knative.

Perché Kubernetes ha bisogno di Knative

Kubernetes automatizza e gestisce l'implementazione, la manutenzione e il ridimensionamento di container, ossia componenti applicativi leggeri ed eseguibili che combinano un codice sorgente con tutte le librerie e le dipendenze del sistema operativo necessarie per eseguire il codice in qualsiasi ambiente.

I container consentono ai componenti applicativi di condividere le risorse di una singola istanza di un sistema operativo, più o meno allo stesso modo in cui le macchine virtuali (VM) consentono alle applicazioni di condividere le risorse di un singolo computer fisico. Più piccoli e più efficienti in termini di risorse rispetto alle macchine virtuali e più adatti ai cicli di rilascio incrementali delle metodologie di sviluppo Agile e DevOps, i container sono diventati di fatto le unità di calcolo delle moderne applicazioni cloud-native. Le aziende che usano i container segnalano altri benefici, tra cui una migliore qualità delle app, livelli di innovazione più elevati e altro ancora:

Man mano che lo sviluppo cloud-native diventa sempre più diffuso e i container proliferano all'interno di un'organizzazione, le funzionalità di orchestrazione dei container di Kubernetes, che includono pianificazione, bilanciamento del carico, monitoraggio dello stato di salute e altro, rendono tale proliferazione molto più facile da gestire. Tuttavia, Kubernetes è uno strumento complesso che richiede agli sviluppatori di eseguire o modellare numerose attività ripetitive, come l'estrazione del codice sorgente dell'applicazione dai repository, la creazione e il provisioning di un'immagine del container attorno al codice e la configurazione di connessioni di rete al di fuori di Kubernetes usando strumenti diversi. L'integrazione di container gestiti da Kubernetes in una pipeline automatizzata di integrazione continua/distribuzione continua (CI/DC) richiede strumenti speciali e una codifica personalizzata.

Knative elimina questa complessità con strumenti che automatizzano queste attività dall'interno di Kubernetes. Uno sviluppatore può definire il contenuto e la configurazione del container in un singolo file manifest YAML e Knative fa il resto, creando il container ed eseguendo la programmazione di rete per impostare un percorso, un ingresso, un bilanciamento del carico e altro ancora. Knative offre inoltre un'interfaccia a riga di comando, Knative CLI, che consente agli sviluppatori di accedere alle caratteristiche di Knative senza modificare i file YAML.

IBM DevOps

Cos'è DevOps?

Andrea Crawford spiega cos'è DevOps, il suo valore e in che modo le pratiche e gli strumenti DevOps ti aiutano a spostare le tue app nell'intera delivery pipeline, dall'ideazione alla produzione. Guidato dai principali leader di pensiero IBM, il curriculum è progettato con lo scopo di aiutare i leader aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti nell'AI che possono promuovere la crescita.

Rendere i container serverless

Il serverless computing è un modello di esecuzione cloud-native che rende le applicazioni più facili da sviluppare e più convenienti. Il modello di computing serverless

  • fornisce risorse di computing on demand, scalabili in modo trasparente in base alle richieste e scalabili a zero quando le richieste non vengono più effettuate;

  • scarica tutte le attività di gestione dell'infrastruttura (scalabilità, pianificazione, patching, provisioning e altro ancora) al provider di cloud, consentendo agli sviluppatori di concentrare il proprio tempo e i propri sforzi sullo sviluppo e l'innovazione; e

  • consente ai clienti del cloud di pagare solo per le risorse usate; non pagano mai per la capacità inutilizzata.

Da solo, Kubernetes non riesce a eseguire applicazioni serverless senza un software specializzato che integri Kubernetes con la piattaforma serverless di uno specifico provider di cloud. Knative consente l'esecuzione di qualsiasi container come workload serverless su qualsiasi cluster Kubernetes, indipendentemente dal fatto che il container sia basato su una funzione serverless o su altro codice applicativo (ad esempio, microservizi), tramite l'estrazione del codice e la gestione dell'instradamento della rete, i trigger degli eventi e l'autoscaling.

Come funziona Knative: componenti di Knative

Knative si appoggia a Kubernetes e aggiunge tre componenti principali o primitive: Build, Serving ed Eventing.

Build

Il componente Knative Build automatizza la trasformazione del codice sorgente in un container. Questo processo di solito comporta diversi passaggi, tra cui:

  • Estrazione del codice sorgente da un repository di codice, come GitHub

  • Installazione delle dipendenze sottostanti come variabili di ambiente e librerie software, di cui il codice ha bisogno per essere eseguito

  • Creazione di immagini di container

  • Inserimento delle immagini dei container in un registro in cui Kubernetes e altri sviluppatori possono trovarle.

Knative usa le API di Kubernetes e altri strumenti per il suo processo di Build. Uno sviluppatore può creare un singolo manifest (in genere un file YAML) che specifica tutte le variabili (posizione del codice sorgente, dipendenze necessarie e altro ancora) e Knative usa il manifest per automatizzare la creazione del container.

Serving

Il componente Serving implementa ed esegue i container come servizi Knative scalabili. Serving offre le seguenti funzionalità essenziali:

  • La configurazione definisce e mantiene lo stato di un servizio. Fornisce inoltre 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 verso versioni diverse del servizio. Supponiamo che tu abbia creato una nuova versione del servizio ma desideri distribuirla a un sottoinsieme di utenti prima di migrare tutti gli utenti. L'instradamento intelligente dei servizi ti consente di indirizzare una percentuale delle richieste degli utenti al nuovo servizio e il resto a una versione precedente; man mano che acquisisci maggiore fiducia nel nuovo servizio, puoi indirizzare più traffico verso di esso.

  • Scalabilità automatica. Knative può scalare i servizi fino a migliaia di istanze; può anche scalarli fino a zero, cioè senza istanze del container, il che è fondamentale per supportare le applicazioni serverless.

Serving di Knative prende in prestito l'instradamento intelligente dei servizi da Istio, un'altra applicazione dell'ecosistema Kubernetes. Service mesh open source per Kubernetes, Istio fornisce anche l'autenticazione per le richieste di servizio, la crittografia automatica del traffico per garantire una comunicazione sicura tra i servizi, metriche dettagliate sui microservizi e sulle operazioni delle funzioni serverless e altri strumenti per sviluppatori e amministratori per ottimizzare l'infrastruttura.

Eventing

Il componente Eventing di Knative consente di attivare, attraverso eventi differenti, i propri servizi e funzioni basati su container. Knative mette in coda e invia quegli eventi ai container appropriati, per cui non è necessario scrivere script o implementare middleware per la funzionalità. Knative gestisce inoltre i canali, code di eventi tra cui gli sviluppatori possono scegliere, e il bus, una piattaforma di messaggistica che invia eventi ai container. Consente inoltre agli sviluppatori di configurare feed, che collegano un evento a un'azione che deve essere eseguita dai loro container.

Le sorgenti di Event di Knative rendono più facile per gli sviluppatori creare connessioni con produttori di eventi di terze parti. Eventing di Knative crea automaticamente la connessione al produttore di eventi e instrada gli eventi generati. Non serve capire come farlo a livello di codice: Knative pensa a tutto.

Casi d'uso di Knative

Ricapitolando, Knative supporta diversi casi d'uso per gli utenti Kubernetes che desiderano semplificare lo sviluppo di app containerizzate o portare l'uso dei container a un livello superiore.

Semplificazione di Kubernetes. Eliminando le attività ripetitive di creazione e configurazione, Knative rende più produttivi gli sviluppatori che lavorano con Kubernetes. Qualsiasi team di sviluppo che abbia difficoltà a gestire un numero crescente di cluster Kubernetes è il candidato ideale per Knative.

Accelerare il percorso verso il serverless. Gli ambienti serverless possono essere scoraggianti da configurare e gestire manualmente. Knative consente alle organizzazioni di configurare rapidamente workload serverless. Per quanto riguarda gli sviluppatori, stanno solo costruendo un container: è Knative che lo esegue come funzione serverless dietro le quinte.

Supportare i cicli di vita Agile e DevOps. Consentendo agli sviluppatori di creare più rapidamente nuovi container e nuove versioni di container, Knative facilita l'implementazione di applicazioni containerizzate in passaggi brevi, veloci e iterativi come parte di un workflow Agile o DevOps. I servizi Knative si integrano agevolmente nelle pipeline CI/CD automatizzate, senza bisogno di un software speciale o una programmazione personalizzata.

Facilitare l'implementazione di nuove caratteristiche. L'implementazione di nuove versioni per i clienti può mettere in evidenza problemi software che potrebbero influire sui processi aziendali. La configurazione e l'instradamento di Knative consentono agli sviluppatori di far conoscere le nuove revisioni dei container a un sottoinsieme della base utenti. Con il passare del tempo aumentano gradualmente quel destinatario man mano che risolvono i problemi o, se necessario, ripristinano rapidamente le versioni precedenti.

Mantenere gli sviluppatori concentrati sulla codifica e l'innovazione. DevOps potrebbe consentire agli sviluppatori di amministrare i propri ambienti. Ma alla fine della giornata, gli sviluppatori vogliono concentrarsi sulla creazione di un software privo di bug e di caratteristiche innovative, non sulla configurazione di code di bus di messaggi per l'attivazione di eventi o la gestione della scalabilità dei container. Knative consente agli sviluppatori di dedicare più tempo a fare quello che sanno fare meglio.

Soluzioni correlate
IBM Instana Observability

Sfrutta la potenza dell'AI e dell'automazione per risolvere in modo proattivo i problemi in tutto lo stack di applicazioni.

Esplora IBM Instana Observability
Soluzioni DevOps

Utilizza il software e gli strumenti DevOps per creare, implementare e gestire app cloud-native su più dispositivi e ambienti.

Esplora le soluzioni DevOps
Servizi di consulenza cloud

Accelera l'agilità e la crescita della tua azienda. Modernizza costantemente le applicazioni su tutte le tue piattaforme usufruendo dei nostri servizi di consulenza per il cloud.

Esplora i servizi di consulenza cloud
Fasi successive

Dal rilevamento proattivo dei problemi con IBM Instana alle analisi in tempo reale su tutto il tuo stack, puoi mantenere le applicazioni cloud-native in esecuzione in modo affidabile.

  1. Scopri IBM Instana
  2. Esplora le soluzioni DevOps