Cos'è Knative?
Knative consente l'esecuzione di carichi di lavoro serverless su cluster Kubernetes e rende la costruzione e l'orchestrazione di container con Kubernetes più facili e veloci.
sfondo nero e blu
Cos'è 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). 

Perché Kubernetes ha bisogno di Knative

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).

Rendere i container serverless

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

  • esegue il provisioning di risorse di calcolo on-demand, scalando in modo trasparente in base alle richieste - e scalando a zero quando non vengono più effettuate richieste;

  • esegue l'offload di tutte le attività di gestione dell'infrastruttura - scalabilità, pianificazione, applicazione di patch, provisioning, ecc. - al provider cloud, consentendo agli sviluppatori di concentrare il loro tempo e i loro sforzi sullo sviluppo e l'innovazione; e

  • consente ai clienti cloud di pagare solo per le risorse utilizzate - non pagano mai per la capacità inattiva.

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.

Come funziona Knative: componenti Knative

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.

Casi di utilizzo di Knative

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.

Soluzioni correlate
Red Hat OpenShift on IBM Cloud

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.

Esplora Red Hat OpenShift
IBM Cloud Satellite

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.

Esplora IBM Cloud Satellite
IBM Cloud Code Engine

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.

Esplora IBM Cloud Code Engine
Risorse Containers in the enterprise

Una nuova ricerca IBM documenta lo slancio crescente di adozione di container e Kubernetes.

Cos'è serverless?

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.

IT flessibile, resiliente e sicuro per il tuo cloud ibrido

I container fanno parte di una strategia di cloud ibrido che ti consente di creare e gestire i carichi di lavoro da qualsiasi ubicazione.

Passa alla fase successiva

Red Hat OpenShift on IBM Cloud offre agli sviluppatori OpenShift un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes. Implementa cluster Kubernetes completamente gestiti e altamente disponibili per le tue applicazioni containerizzate con un singolo clic.Poiché IBM gestisce OCP (OpenShift Container Platform), avrai più tempo per concentrarti sulle tue attività principali.

Esplora Red Hat OpenShift on IBM Cloud