Qu’est-ce que Knative ?

Publié le 12 octobre 2021
Symbole infini lumineux en rouge et bleu flottant au-dessus d’une surface réfléchissante dans un environnement sombre et brumeux

Knative défini

Knative permet d’exécuter les workloads sans serveur sur des clusters Kubernetes. Il accélère et facilite la création et l’orchestration des conteneurs avec Kubernetes.

Knative est une extension de la plateforme d’orchestration de conteneurs Kubernetes. Les outils et fonctionnalités proposés facilitent la création, le déploiement et la gestion des applications conteneurisées, offrant une expérience plus « native dans Kubernetes » (d’où son nom : « K » comme « Kubernetes » + « native »).

Comme Kubernetes, Knative est un logiciel open source initialement développé par Google en collaboration avec IBM, Pivotal, Red Hat, SAP et près de 50 autres entreprises. Aujourd’hui, la Cloud Native Computing Foundation (CNCF) héberge le projet open source Knative.

Pourquoi Kubernetes a besoin de Knative

Kubernetes automatise et planifie le déploiement, la gestion et la mise à l’échelle des conteneurs. Ces derniers sont des composants applicatifs légers et exécutables, qui associent le code source aux bibliothèques et dépendances du système d’exploitation nécessaires à l’exécution du code, quel que soit l’environnement.

Les conteneurs permettent aux composants d’une 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 économes en ressources que les VM, 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 par défaut des applications cloud natives modernes. Les entreprises qui les utilisent citent d’autres avantages, notamment une meilleure qualité des applications, des niveaux d’innovation plus élevés, et bien plus encore :

Dans un contexte où le développement cloud natif gagne en popularité et les conteneurs se multiplient au sein de l’entreprise, les capacités d’orchestration de conteneurs de Kubernetes (planification, équilibrage de la charge, surveillance de la santé, etc.) facilitent grandement la gestion de ce volume croissant. Cependant, Kubernetes est un outil complexe qui oblige les développeurs à effectuer ou à modéliser de nombreuses tâches répétitives telles que l’extraction du code source de l’application à partir de référentiels, la création et le provisionnement d’images de conteneurs autour du code et la configuration des connexions réseau hors Kubernetes à l’aide de différents outils. Incorporer les conteneurs gérés par Kubernetes dans un pipeline automatisé d’intégration continue/livraison continue (CI/DC) requiert des outils spécialisés et un codage personnalisé.

Knative élimine cette complexité grâce à des outils qui automatisent ces tâches directement dans Kubernetes. Le développeur définit le contenu et la configuration du conteneur dans un seul et même fichier manifeste YAML, et Knative se charge de créer le conteneur et de programmer le réseau pour définir l’itinéraire, l’entrée, l’équilibrage de charge, etc. Knative propose également une interface de ligne de commande appelée CLI Knative, qui permet aux développeurs d’accéder aux fonctionnalités de Knative sans modifier les fichiers YAML.

IBM DevOps

Qu’est-ce que le DevOps ?

Andrea Crawford présente le DevOps, démontre sa valeur, et explique de quelle façon les pratiques et les outils DevOps vous aident à faire progresser vos applications dans l’ensemble du pipeline de livraison logiciel, de l’idéation à la production. Dirigé par des leaders d’opinion d’IBM, le programme a pour but d’aider les chefs d’entreprise à acquérir les connaissances nécessaires pour donner la priorité aux investissements dans l’IA capables de stimuler la croissance.

Rendre les conteneurs serverless

L’informatique sans serveur est un modèle d’exécution cloud natif qui facilite le développement des applications et améliore sa rentabilité. Le modèle informatique sans serveur

  • provisionne les ressources informatiques à la demande, les met à l’échelle en toute transparence, en fonction des requêtes, et les met à zéro lorsque plus aucune requête n’est faite ;

  • confie au fournisseur de cloud toutes les tâches de gestion de l’infrastructure (mise à l’échelle, planification, application des correctifs, provisionnement, etc.), pour permettre aux développeurs de se concentrer sur le développement et l’innovation ; et

  • permet aux clients du cloud de ne payer que les ressources utilisées ; ils ne paient jamais pour une capacité inutilisée.

À lui seul, Kubernetes ne peut pas exécuter d’applications sans serveur sans un logiciel spécialisé qui l’intègre à la plateforme sans serveur d’un fournisseur de cloud spécifique. Knative permet à n’importe quel conteneur de s’exécuter en tant que workload sans serveur sur 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 abstrayant le code et en gérant le routage réseau, les déclencheurs d’événements et la mise à l’échelle automatique.

Comment fonctionne Knative : composants Knative

Knative s’appuie sur Kubernetes et ajoute trois composants principaux, ou fonctions primitives : Build, Serving et Eventing.

Build

Le composant Knative Build automatise la conversion du code source en conteneur. Ce processus comprend généralement plusieurs étapes, notamment :

  • Extraire le code source à partir d’un référentiel de code tel que GitHub ;

  • Installer les dépendances sous-jacentes (variables d’environnement et bibliothèques de logiciels) dont le code a besoin pour s’exécuter ;

  • Création d’images de conteneurs

  • Mettre les images de conteneurs dans un registre où Kubernetes et les autres développeurs pourront les trouver.

Knative utilise les API Kubernetes, ainsi que d’autres outils, pour son processus de création. Le développeur crée 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 création du conteneur.

Serving

Le composant Serving déploie et exécute les conteneurs en tant que services Knative évolutifs. Serving fournit les fonctionnalités essentielles suivantes :

  • La configuration définit et gère l’état d’un service. Elle assure également la gestion des versions : chaque modification apportée à la configuration entraîne la création d’une nouvelle version du service, et les versions précédentes sont enregistrées.

  • Le routage intelligent des services permet aux développeurs d’acheminer le trafic vers les différentes versions du service. Supposons que vous ayez créé une nouvelle version du service, mais que vous souhaitiez la déployer auprès d’un groupe d’utilisateurs avant de procéder à une migration complète. Le routage intelligent des services vous permet d’acheminer un pourcentage de requêtes utilisateurs vers le nouveau service, et le reste vers une version précédente. Au fur et à mesure que votre confiance dans le nouveau service s’accroît, vous pourrez y acheminer davantage de trafic.

  • Mise à l’échelle automatique. Knative peut faire évoluer les services jusqu’à des milliers d’instances ; il peut également les réduire à zéro (c’est-à-dire aucune instance du conteneur), ce qui est essentiel pour prendre en charge les applications sans serveur.

Knative Serving emprunte les capacités de routage intelligent des services Istio, une autre application de l’écosystème Kubernetes. Istio est un maillage de services open source pour Kubernetes qui fournit également les fonctionnalités suivantes : authentification pour les demandes de service, chiffrement automatique du trafic pour une communication sécurisée entre les services, indicateurs détaillés portant sur les microservices et les fonctions serverless, ainsi que d’autres outils permettant aux développeurs et aux administrateurs d’optimiser l’infrastructure. 

Eventing

Le composant Eventing de Knative permet à différents événements de déclencher leurs services et fonctions basés sur des conteneurs. Knative met en file d’attente et transmet ces événements aux conteneurs adaptés. Il n’est donc pas nécessaire d’écrire des scripts ou de mettre en œuvre un middleware 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 à effectuer par leurs conteneurs.

Les sources Knative Event permettent aux développeurs de créer plus facilement des connexions avec les producteurs d'événements tiers. Knative Event crée automatiquement la connexion avec le producteur d’événements et achemine les événements générés. Nul besoin de savoir le faire par programmation : KNative se charge de tout.

Cas d’utilisation de Knative

Pour résumer, Knative prend en charge plusieurs cas d’utilisation visant à simplifier le développement d’applications conteneurisées, ou encore à optimiser l’utilisation des conteneurs.

Rationaliser Kubernetes. En éliminant les tâches répétitives de construction et de configuration, Knative améliore la productivité des développeurs dans Kubernetes. Knative profitera tout particulièrement aux équipes de développement qui peinent à faire face au nombre croissant de clusters Kubernetes.

Accélérer le passage au « sans serveur ». Les environnements sans serveur peuvent être difficiles à configurer et à gérer manuellement. Knative permet aux entreprises de configurer rapidement leurs workloads sans serveur. En ce qui concerne les développeurs, il suffit qu’ils créent le conteneur pour que Knative l’exécute comme fonction sans serveur en arrière-plan.

Prendre en charge les cycles de vie Agile et DevOps. En permettant aux développeurs d’accélérer la création des conteneurs et de leurs nouvelles versions, Knative facilite le déploiement des applications conteneurisées par petites étapes rapides et itératives dans le cadre des workflows Agile ou DevOps. Les services Knative s’intègrent facilement aux pipelines CI/CD automatisés, sans requérir un logiciel particulier, ni une programmation personnalisée.

Déploiement aisé de nouvelles fonctionnalités. Le déploiement de nouvelles versions auprès des clients peut révéler des problèmes logiciels susceptibles d’affecter les processus métier. La configuration et le routage de Knative permettent aux développeurs d’exposer les nouvelles révisions de conteneurs à un sous-ensemble de la base d’utilisateurs. Ils peuvent ensuite élargir progressivement cette audience au fur et à mesure qu’ils résolvent les problèmes ou revenir rapidement à des versions antérieures si nécessaire.

Permettre aux développeurs de se concentrer sur le codage et l’innovation. Le DevOps permet aux développeurs d’administrer leurs propres environnements. Mais en fin de compte, ce qui les intéresse, c’est de pouvoir créer logiciels sans bogues et fonctionnalités innovantes, et non de configurer des files d'attente de bus de messages pour déclencher des événements, ni de gérer l’évolutivité des conteneurs. Knative permet aux développeurs de consacrer plus de temps à faire ce qu’ils savent faire de mieux.

Solutions connexes
IBM Instana Observability

Exploitez le pouvoir de l’IA et de l’automatisation pour résoudre de manière proactive les problèmes de la pile d’applications.

Découvrir IBM Instana Observability
Solutions DevOps

Utilisez les logiciels et outils DevOps pour construire, déployer et gérer des applications cloud natives sur plusieurs appareils et environnements.

Découvrir les solutions DevOps
Services de conseil en cloud

Renforcez l’agilité et la croissance de votre entreprise. Modernisez en continu vos applications sur n’importe quelle plateforme grâce à nos services de conseil cloud.

Découvrir les services de conseil cloud
Passer à l’étape suivante

De la détection proactive des incidents avec IBM Instana aux informations en temps réel sur l’ensemble de votre pile, garantissez la fiabilité de vos applications cloud-native.

  1. Découvrir IBM Instana
  2. Découvrir les solutions DevOps