Qu'est-ce que 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.
arrière-plan noir et bleu
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 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 natives cloud 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'effectuer 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 de 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 de cloud toutes les tâches de gestion de l'infrastructure (mise à l'échelle, planification, application de correctifs, mise à disposition, etc.), ce qui permet aux développeurs de consacrer leur temps et leurs efforts au développement et à l'innovation ;

  • 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 du 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 ;
  • dépôt des images de conteneur dans un registre dans lequel 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 évolutifs. Serving offre les fonctionnalités importantes suivantes :

  • Configuration. Elle définit et gère l'état d'un service. Elle assure également la gestion des versions : chaque modification de la configuration crée une nouvelle version du service, et les versions précédentes sont sauvegardées.

  • Routage de service intelligent. Il 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 de service intelligent à Istio, une autre application de l'écosystème Kubernetes – un maillage de services open source 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 s'en charge.

Cas d'utilisation de Knative

Pour récapituler, Knative 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 de 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, et c'est Knative qui l'exécute en tant que 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 d'applications conteneurisées par petites étapes rapides et itératives dans le cadre d'un flux de travaux Agile ou DevOps.  Et les services Knative 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. Mais 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 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. Knative permet aux développeurs de passer plus de temps à faire ce qu'ils font le mieux.

Solutions connexes
Red Hat OpenShift on IBM Cloud

Avec Red Hat OpenShift on IBM Cloud, les développeurs OpenShift disposent d'un moyen rapide et sécurisé de conteneuriser et déployer des charges de travail d'entreprise dans des clusters Kubernetes.

Explorer Red Hat OpenShift
IBM Cloud Satellite

Déployez et exécutez des applications de manière cohérente dans des environnements sur site, informatiques de périphérie et de cloud public de n'importe quel fournisseur de cloud, en utilisant un ensemble commun de services cloud, notamment des chaînes d'outils, des bases de données et l'IA.

Explorer IBM Cloud Satellite
IBM Cloud Code Engine

Plateforme sans serveur entièrement gérée, IBM Cloud Code Engine vous permet d'exécuter votre conteneur, votre code d'application ou votre travail par lots sur un moteur d'exécution de conteneur entièrement géré.

Explorer IBM Cloud Code Engine
Ressources Conteneurs dans l'entreprise

Une nouvelle étude d'IBM montre que l'adoption des conteneurs et de Kubernetes est en plein essor.

Qu'est-ce que le "sans serveur" ?

Le modèle sans serveur est un modèle de développement et d'exécution d'applications cloud qui permet aux développeurs de créer et d'exécuter du code sans avoir à gérer de serveurs ou à payer pour une infrastructure de cloud inactive.

Des technologies de l'information flexibles, résilientes et sécurisées pour votre cloud hybride

Les conteneurs font partie d'une stratégie de cloud hybride qui vous permet de créer et de gérer les charges de travail à partir de n'importe où.

Pour aller plus loin

Avec Red Hat OpenShift on IBM Cloud, les développeurs OpenShift disposent d'un moyen rapide et sécurisé de conteneuriser et déployer des charges de travail d'entreprise dans des clusters Kubernetes. D'un clic, déployez des clusters Kubernetes hautement disponibles et entièrement gérés pour vos applications conteneurisées.Comme IBM gère OpenShift Container Platform (OCP), vous aurez davantage de temps pour vous concentrer sur vos tâches principales.

Explorer Red Hat OpenShift on IBM Cloud