Home
topics
Cosa è Knative?
Knative (pronunciato Kay-NAY-tive) è un'estensione della piattaforma di orchestrazione di container Kubernetes che consente di eseguire carichi di lavoro serverless su cluster Kubernetes e fornisce strumenti e programmi di utilità che rendono la costruzione, l' implementazione e la gestione di applicazioni containerizzate all'interno di Kubernetes un'esperienza più semplice e più 'nativa per Kubernetes' (da cui il nome - 'K' per 'Kubernetes' + nativo).
Come Kubernetes, Knative è un software open-source. È stato originariamente sviluppato da Google in collaborazione con IBM, Pivotal, Red Hat, SAP e quasi altre 50 aziende. Oggi, il progetto open-source Knative è ospitato dalla Cloud Native Computing Foundation (CNCF).
Kubernetes automatizza e pianifica l'implementazione, la gestione e la scalabilità dei container - componenti applicativi leggeri ed eseguibili che combinano il codice sorgente con tutte le librerie e le dipendenze del sistema operativo (SO) necessarie per eseguire il codice in qualsiasi ambiente.
I container consentono ai componenti delle applicazioni 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 delle VM, e più adatti ai cicli di rilascio incrementali delle metodologie di sviluppo Agile e DevOps , i container sono diventati de facto le unità di calcolo delle moderne applicazioni native del cloud. Le aziende che usano i container segnalano anche altri vantaggi, tra cui una migliore qualità delle applicazioni, maggiori livelli di innovazione e molto altro:
Scarica il report completo: Containers in the enterprise (PDF, 1,4 MB)
Man mano che lo sviluppo nativo del cloud diventa più popolare e i container proliferano in un'organizzazione, le funzionalità di orchestrazione dei container - pianificazione, bilanciamento del carico, monitoraggio dello stato di integrità e altro ancora - rendono tale proliferazione molto più facile da gestire. Comunque, Kubernetes è uno strumento complesso che richiede agli sviluppatori di eseguire o definire come template molte attività ripetitive - estrarre il codice sorgente delle applicazioni dai repository, costruire e fare il provisioning dell' immagine del container intorno al codice, configurare le connessioni di rete - al di fuori di Kubernetes, utilizzando diversi strumenti. E integrare i container gestiti da Kubernetes in un sistema automatizzato in una pipeline automatizzata di integrazione continua/fornitura continua (CI/DC) richiede strumenti speciali e 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, l'ingresso, il bilanciamento del carico di lavoro e altro ancora. (Knative offre anche un'interfaccia della riga di comando, Knative CLI, che consente agli sviluppatori di accedere alle funzioni Knative senza modificare i file YAML).
Ilserverless computing è un modello di esecuzione nativo del cloud che rende le applicazioni ancora più facili da sviluppare e più economicamente convenienti da eseguire. Il modello serverless computing
Da solo, Kubernetes non può eseguire applicazioni serverless senza un software specializzato che integri Kubernetes con la piattaforma serverless di uno specifico provider cloud. Knative consente a qualsiasi container di essere eseguito come un carico di lavoro serverless su qualsiasi cluster di Kubernetes - indipendentemente dal fatto che il container sia costruito intorno a una funzione serverless , o ad altro codice applicativo (ad esempio, microservizi) - astraendo il codice e gestendo l' instradamento di rete, i trigger di eventi e la scalabilità automatica.
Knative poggia su Kubernetes e aggiunge tre componenti principali o primitive: Build, Serving ed Eventing.
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:
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.
Il componente Serving implementa ed esegue i container come servizi Knative scalabili. Questo componente fornisce le seguenti importanti funzionalità:
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".)
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.
Riepilogando, Knative supporta diversi casi di utilizzo per gli utenti Kubernetes che desiderano semplificare lo sviluppo di applicazioni containerizzate o portare il loro uso dei container al livello successivo.
Semplificazione di Kubernetes. Eliminando le ripetitive attività di creazione e configurazione, Knative rende più produttivi gli sviluppatori che lavorano con Kubernetes . Qualsiasi team di sviluppo che fatica a gestire un numero crescente di cluster Kubernetes è un candidato ideale per Knative.
Accelerazione del percorso verso il serverless. Gli ambienti serverless possono essere sconfortanti da impostare e gestire manualmente. Knative consente alle organizzazioni di configurare rapidamente carichi di lavoro serverless . Per quanto riguarda gli sviluppatori, stanno solo costruendo un container - è Knative che lo esegue come una funzione serverless dietro le quinte.
Supporto dei cicli di vita Agile e DevOps. Consentendo agli sviluppatori di creare nuovi container e versioni di container più rapidamente, Knative rende più facile implementare applicazioni containerizzate in piccoli passi veloci e iterativi come parte di un flusso di lavoro Agile o DevOps . E i servizi Knative si integrano facilmente nelle pipeline CI/CD automatizzate senza richiedere un software speciale o una programmazione personalizzata.
Semplificazione dell'implementazione di nuove funzioni. L'implementazione di nuove release presso i clienti può evidenziare problemi software che possono ripercuotersi sui processi di business. La configurazione e l'instradamento di Knative consentono agli sviluppatori di presentare le nuove revisioni del container a un sottogruppo della base di utenti, per poi aumentare gradualmente questa platea nel tempo man mano che risolvono i problemi - oppure, se necessario, tornano rapidamente alle versioni meno recenti.
Mantenere gli sviluppatori concentrati sulla codifica e l'innovazione. DevOps può consentire agli sviluppatori ad amministrare i propri ambienti. Ma in fin dei conti gli sviluppatori vogliono concentrarsi sulla costruzione di software senza bug e su nuove funzionalità innovative, non sulla configurazione di code di bus di messaggi per l'attivazione di eventi o sulla gestione della scalabilità dei container. Knative consente agli sviluppatori di dedicare più tempo a ciò che sanno fare meglio.
Con Red Hat OpenShift on IBM Cloud, gli sviluppatori OpenShift hanno a disposizione un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes.
Implementa ed esegui le applicazioni in modo coerente in ambienti on-premise, di edge computing e di cloud pubblico da qualsiasi provider cloud, utilizzando un set comune di servizi cloud, tra cui le toolchain, i database e l'AI.
IBM Cloud Code Engine è una piattaforma serverless completamente gestita che consente di eseguire il tuo container, codice applicativo o lavoro batch su un runtime del container completamente gestito.
Una nuova ricerca IBM documenta lo slancio crescente di adozione di container e Kubernetes.
Serverless è un modello di sviluppo ed esecuzione di applicazioni cloud che consente agli sviluppatori di compilare ed eseguire codice senza gestire dei server o pagare per un'infrastruttura cloud inattiva.
I container fanno parte di una strategia di cloud ibrido che ti consente di creare e gestire i carichi di lavoro da qualsiasi ubicazione.