Knative
arrière-plan noir et bleu
Knative

Knative permet aux charges de travail sans serveur de s'exécuter dans des clusters Kubernetes, et facilite et accélère la création et l'orchestration de conteneurs avec Kubernetes.

Produits à la une

Red Hat OpenShift on IBM Cloud

IBM Cloud Code Engine

IBM Cloud Satellite

IBM Cloud Kubernetes Service


Qu'est-ce que Knative ?

Knative (prononcez Kay-NAY-tive)est une extension de la plateforme d'orchestration de conteneurs Kubernetes qui permet aux charges de travail sans serveur de s'exécuter dans des clusters Kubernetes. Elle fournit des outils et des utilitaires qui simplifient la création, le déploiement et la gestion d'applications conteneurisées dans Kubernetes en les inscrivant dans une expérience Kubernetes native et plus simple (d'où son nom, «K» pour «Kubernetes» + native).

Comme Kubernetes, Knative est un logiciel open source . À l'origine, il a été développé par Google en collaboration avec IBM, Pivotal, Red Hat, SAP  et près de 50 autres entreprises. Aujourd'hui, le projet open source Knative est hébergé par le Cloud Native Computing Foundation (CNCF). 


Pourquoi Kubernetes a besoin de Knative

Kubernetes automatise et planifie le déploiement, la gestion et la mise à l'échelle des conteneurs, des composants d'application légers et exécutables qui combinent le code source avec toutes les bibliothèques et dépendances du système d'exploitation (OS) nécessaires pour exécuter le code dans n'importe quel environnement. 

Les conteneurs permettent aux composants d'application de partager les ressources d'une seule instance d'un système d'exploitation, de la même manière que les machines virtuelles (VM) permettent aux applications de partager les ressources d'un seul ordinateur physique. Plus petits et plus efficaces en termes de ressources que les machines virtuelles, et mieux adaptés aux cycles de publication incrémentiels des méthodologies de développement Agile et DevOps, les conteneurs sont devenus les unités de calcul de facto des applications cloud native modernes. Les entreprises qui utilisent des conteneurs font état d'autres avantages, notamment des applications de meilleure qualité, des niveaux d'innovation plus élevés,  entre autres:

Télécharger le rapport complet: les conteneurs dans l'entreprise (PDF, 1,4 Mo)

Alors que le développement cloud natif continue de se démocratiser et que les conteneurs prolifèrent dans une organisation, les fonctionnalités d'orchestration de conteneurs de Kubernetes (planification ,équilibrage de charge, surveillance de l'état d'intégrité, etc.) rendent cette prolifération beaucoup plus facile à gérer. Cependant, Kubernetes est un outil complexe qui exige des développeurs qu'ils effectuent ou tentent d'exécuter de nombreuses tâches (extraction du code source de référentiels, création et approvisionnement d'une image de conteneur autour du code, configuration des connexions réseau )en dehors de Kubernetes, à l'aide de différents outils. Et l'incorporation de conteneurs gérés par Kubernetes dans un pipeline automatisé d'intégration continue/livraison continue (CI/DC) nécessite des outils spéciaux et un codage personnalisé.

Knative élimine cette complexité avec des outils qui automatisent ces tâches  dans Kubernetes. Un développeur peut définir le contenu et la configuration du conteneur dans un seul fichier manifeste YAML, et Knative se charge du reste, en créant le conteneur et en effectuant la programmation du réseau pour configurer une route, une entrée,  un équilibrage de charge,  etc. (Knative propose également une interface en ligne de commande, la CLI Knative, qui permet aux développeurs d'accéder aux fonctions Knative sans modifier les fichiers  YAML .)


Rendre les conteneurs sans serveur

L'informatique sans serveur est un modèle d'exécution cloud natif qui rend les applications encore plus faciles à développer et plus rentables à exploiter. Le modèle informatique sans serveur

  • fournit des ressources informatiques à la demande, en les mettant à l'échelle de manière transparente en fonction des demandes, et en les réduisant à zéro lorsqu'il n'existe plus de demandes, 
  • laisse à la charge du fournisseur du cloud toutes les tâches de gestion de l'infrastructure (mise à l'échelle, planification, application de correctifs, approvisionnement, etc.), ce qui permet aux développeurs de dédier leur temps et leurs efforts au développement et à l'innovation et
  • permet aux clients du cloud de ne payer que les ressources utilisées puisqu'ils ne paient jamais la capacité inactive.

En soi, Kubernetes ne peut pas exécuter des applications sans serveur sans un logiciel spécialisé qui intègre Kubernetes à la plateforme sans serveur d'un fournisseur de cloud spécifique. Knative permet à n'importe quel conteneur de fonctionner comme une charge de travail sans serveur dans n'importe quel cluster Kubernetes , que le conteneur soit construit autour d'une fonction sans serveur ou d'un autre code d'application (par exemple, des microservices), en masquant le code et en gérant le routage réseau, les déclencheurs d'événements et la mise à l'échelle automatique.


Fonctionnement de Knative : composants Knative

Knative se situe au-dessus de Kubernetes et ajoute trois composants principaux, ou primitives: Build, Serving et  Eventing. 

Build


Le composant Knative Build automatise le processus de conversion le code source en conteneur. Ce processus comporte généralement plusieurs étapes, dont les suivantes:

  • Extraction du code source d'un référentiel de code, tel que GitHub
  • Installation des dépendances sous-jacentes, telles que les variables d'environnement et les bibliothèques logicielles, dont le code a besoin pour fonctionner
  • Génération d'images de conteneur
  • Mettre les images de conteneurs dans un registre où Kubernetes (et les autres développeurs) peuvent les trouver.

Knative utilise les API de Kubernetes et d'autres outils pour son processus de construction. Un développeur peut créer un manifeste unique (généralement un fichier YAML ) qui spécifie toutes les variables (emplacement du  code source, dépendances requises, etc.). et Knative utilise le manifeste pour automatiser la construction du conteneur. 

Serving


Le composant Serving déploie et exécute des conteneurs comme services Knative . Le service assure le suivi des fonctionnalités importantes:

  • Configuration définit et gère l'état d'un service. Il assure également la gestion des versions : chaque modification de la configuration crée une version du service, et les versions précédentes sont sauvegardées. 
  • service intelligent  permet aux développeurs de router le trafic vers différentes versions du service. Supposons que vous avez créé une version d'un service et souhaitez la déployer pour un sous-ensemble d'utilisateurs avant de migrer tous les utilisateurs. Avec le routage de service intelligent, vous acheminez un pourcentage des demandes des utilisateurs vers le nouveau service et le reste de la demande vers une version antérieure. À mesure que votre confiance dans le nouveau service s'accroît, vous pouvez y acheminer davantage de trafic. 
  • Mise à l'échelle automatique . Knative peut mettre à l'échelle les services dans des milliers d'instances ; il peut également revenir à zéro, c'est-à-dire sans aucune instance du conteneur, ce qui est essentiel pour la prise en charge d'applications sans serveur.

Knative Serving emprunte le routage intelligent de service à Istio, une autre application de l'écosystème Kubernetes. un maillage de services ouverts pour Kubernetes. Istio permet également l'authentification des demandes de service, le chiffrement automatique du trafic pour établir une communication sécurisée entre les services, ainsi que des mesures détaillées sur les microservices et les opérations des fonctions sans serveur que les développeurs et les administrateurs peuvent utiliser pour optimiser l'infrastructure. (Pour plus de détails sur la façon dont Knative utilise Istio, voir «Istio et Knative : Extension de Kubernetes pour une nouvelle expérience de développeur.»)

Eventing


Le composant Eventing de Knative permet à différents événements de déclencher leurs services et fonctions basés sur un conteneur. Knative met en file d'attente et transmet ces événements aux conteneurs appropriés, de sorte qu'il n'est pas nécessaire d'écrire des scripts ou d'implémenter le logiciel intermédiaire pour cette fonctionnalité. Knative gère également les canaux, qui sont des files d'attente d'événements, parmi lesquels les développeurs peuvent choisir, et le bus, une plateforme de messagerie qui transmet les événements aux conteneurs. Il permet également aux développeurs de configurer des flux qui relient un événement à une action que doivent exécuter leurs conteneurs.

Les sources

Knative Event permettent aux développeurs de créer plus facilement des connexions avec des producteurs d'événements tiers. Knative eventing créera automatiquement la connexion avec le producteur d'événements et acheminera les événements générés. Il n'est pas nécessaire de chercher comment le faire par programme : Knative fait tout le travail.


Cas d'utilisation de Knative

Pour récapituler, Knatives prend en charge plusieurs cas d'utilisation pour les utilisateurs de Kubernetes qui souhaitent simplifier le développement d'applications conteneurisées ou faire passer leur utilisation des conteneurs au niveau supérieur.

  • Rationalisation Kubernetes. En éliminant les tâches répétitives de génération et de configuration, Knative rend les développeurs travaillant avec Kubernetes plus productifs. Toute équipe de développement qui peine à gérer un nombre croissant de  clusters  Kubernetes est un candidat idéal pour Knative.
  • Accélération de la transition vers la technologie sans serveur. Les environnements sans serveur peuvent être décourageants à mettre en place et à gérer manuellement. Knative permet aux organisations de configurer rapidement des charges de travail sans serveur . En ce qui concerne les développeurs, leur travail se limite à la création d'un conteneur :  Knative le fait fonctionner comme une fonction sans serveur dans les coulisses.
  • Support des cycles de vie Agile et DevOps. En permettant aux développeurs de créer plus rapidement des conteneurs et des versions de conteneurs, Knative facilite le déploiement des applications conteneurisées par petites étapes rapides et itératives dans le cadre d'un flux de travaux Agile ou  DevOps . Et les services Knatives s'intègrent facilement dans les pipelines CI/CD automatisés sans nécessiter de logiciel spécial ou de programmation personnalisée.
  • Lissage des nouveaux déploiements de fonction Le déploiement de nouvelles versions auprès des clients peut exposer des problèmes logiciels susceptibles d'affecter les processus métier. Les développeurs de configuration et de routage de Knative exposent les nouvelles révisions des conteneurs à un sous-ensemble de la base d'utilisateurs, puis augmentent progressivement cette audience au fil du temps, à mesure qu'ils résolvent les problèmes ou reviennent rapidement aux anciennes versions si nécessaire.
  • Faire en sorte que les développeurs se concentrent sur le codage et l'innovation. DevOps peut permettre aux développeurs d'administrer leurs propres environnements. En fin de compte, les développeurs veulent se concentrer sur la création de logiciels sans bogues et de fonctionnalités innovantes, et non pas sur la  configuration  des files d'attente du bus de messagerie pour le déclenchement d'événements ou la gestion de l'évolutivité des conteneurs. Les développeurs de Knative passent plus de temps à faire ce qu'ils font le mieux.

Knative et IBM Cloud

Les conteneurs sont idéaux pour moderniser vos applications et optimiser votre infrastructure informatique. Les services de conteneurs d'IBM Cloud, qui reposent sur des technologies open source comme Kubernetes, Knative et Istio, peuvent faciliter et accélérer votre transition vers le développement d'applications cloud natives et vers une approche de cloud hybride ouvert qui intègre les meilleures dispositifs et fonctions du cloud privé, cloud public et de l'infrastructure informatique sur site.

Pour aller plus loin:

  • Découvrez comment vous pouvez déployer des clusters hautement disponibles et entièrement gérés pour vos applications conteneurisées en un seul clic à l'aide de Red Hat OpenShift sur IBM Cloud.
  • Déployez et gérez des applications conteneurisées de manière cohérente dans des environnements sur site, en périphérie et dans le cloud public de n'importe quel fournisseur, avec IBM Cloud Satellite.
  • Exécutez des images de conteneurs, des travaux par lots ou du code source en tant que charge de travail sans serveur, sans dimensionnement, déploiement, mise en réseau ou mise à l'échelle, avec IBM Cloud Code Engine.

Pour commencer immédiatement avec Knative, inscrivez-vous pour obtenir un compte IBM Cloud.


Solutions connexes

Cloud hybride

Une stratégie de cloud hybride ouvert vous permet de créer et de gérer des charges de travail de n'importe où, sans être lié à un fournisseur.


Solutions d'infrastructure sur site

Découvrez comment l'infrastructure cloud sur site peut apporter la résilience et la sécurité à votre environnement de cloud hybride, même en cas de perturbation.


Red Hat OpenShift

Red Hat OpenShift on IBM Cloud exploite OpenShift dans les environnements publics et hybrides afin d'offrir vitesse, réactivité sur le marché, évolutivité et fiabilité.


IBM Cloud Satellite

Avec IBM Cloud Satellite, vous pouvez lancer des services cloud cohérents n'importe où – dans des environnements sur site, de périphérie et de cloud public.


IBM Cloud Code Engine

IBM Cloud Code Engine, une plateforme sans serveur entièrement gérée, exécute des charges de travail conteneurisées, notamment des applications Web, des microservices, des fonctions déterminées par les événements, et ainsi de suite.