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.
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.
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
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.
Knative si appoggia a Kubernetes e aggiunge tre componenti principali o primari: Build, Serving ed Eventing.
Il componente Knative Build automatizza la trasformazione del codice sorgente in un container. Questo processo di solito comporta diversi passaggi, tra cui:
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.
Il componente Serving implementa ed esegue i container come servizi Knative scalabili. Serving offre le seguenti funzionalità essenziali:
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.
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.
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.
Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.
Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.
Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.