Un guide rapide du framework Knative Serverless pour les débutants



Depuis quelques années, l’attrait pour les frameworks sans serveur est en constante progression, et leur adoption par les développeurs ne cesse de croître.

Parallèlement, les applications basées sur des conteneurs jouissent d’une grande popularité, tout comme Kubernetes au sein des entreprises.

Il est indéniable que Kubernetes est un outil puissant avec un fort potentiel. Son écosystème se développe continuellement, avec l’émergence d’une variété de nouveaux outils et de technologies de pointe, notamment Knative, qui a la capacité d’améliorer encore les performances de Kubernetes.

Knative a été conçu pour pallier les situations menant à l’échec et pour établir une norme fondamentale pour les plateformes cloud et l’orchestration cloud native.

En d’autres termes, le framework sans serveur Knative est plus à même de répondre aux exigences d’une entreprise que d’autres solutions de déploiement sans serveur basées sur le cloud.

Dans ce guide, nous allons explorer Knative en détail, en abordant ses avantages, ses cas d’utilisation, la procédure d’installation, son fonctionnement, et bien plus encore.

C’est parti !

Qu’est-ce que Knative ?

Knative est un framework sans serveur basé sur Kubernetes, initialement développé par Google. Il permet de charger et d’exécuter des fonctions sans serveur en fonction des besoins de l’entreprise, réduisant ainsi le gaspillage. Il s’agit d’un projet open source qui ajoute des composants pour le déploiement, l’exécution et la gestion d’applications sans serveur sur Kubernetes.

L’objectif principal du framework sans serveur Knative est de gérer les normes d’orchestration multiplateforme. Cela est réalisé en intégrant des fonctionnalités telles que la création de conteneurs, la mise à l’échelle automatique, les modèles d’événements et la gestion des charges de travail.

Auparavant, il existait une multitude de solutions open source autres que Knative. Chaque solution avait son propre mode de déploiement, ce qui pouvait entraîner une fragmentation du marché en raison d’un manque de pratiques standardisées. Cela impliquait de choisir un fournisseur spécifique pour bénéficier de certaines fonctionnalités système.

Cependant, les problèmes de migration sont devenus une préoccupation majeure. Afin d’éviter ces difficultés, le framework sans serveur Knative a été introduit. Ainsi, si vous rencontrez des difficultés pour intégrer des tâches, Knative peut le faire efficacement dans un pipeline basé sur Kubernetes.

Knative est composé de trois éléments clés :

  • Knative Build : il prend en charge la création d’images de conteneurs et leur mise à disposition à partir du code source.
  • Knative Serving : il exploite Istio et Kubernetes pour connecter et déployer ces images de conteneurs via des ressources d’infrastructure allouées.
  • Knative Eventing : il permet aux utilisateurs de définir des déclencheurs d’événements et d’associer ces déclencheurs à des fonctions conteneurisées.

Chaque fois que Knative identifie un événement, il lance le processus correspondant pour une exécution à la demande. Avec Knative, il n’est pas nécessaire d’allouer des nœuds de conteneurs, des clusters ou des pods pour le travail, car Knative ne valide les ressources d’hébergement que lorsqu’un processus donné est en cours d’exécution. De cette manière, Knative combine les avantages du sans serveur et de la conteneurisation.

Concepts fondamentaux de Knative

Explorons maintenant les concepts clés du Framework Sans Serveur Knative et leur lien avec les primitives de Knative.

Construction

Knative-build facilite l’utilisation et l’extension des primitives Kubernetes existantes, permettant l’exécution de builds de conteneurs à partir de la source. Il prend en charge le code source à partir des dépendances et du référentiel, créant des images de conteneurs et les enregistrant.

Événements

Le système d’événements favorise une meilleure communication entre les consommateurs et les producteurs d’événements faiblement couplés pour la construction d’architectures axées sur les événements. Knative place ces événements dans une file d’attente qui doit être exécutée automatiquement sans script de la part des développeurs.

Par la suite, ces événements sont transmis aux conteneurs. Puis, il envoie des flux aux producteurs d’événements pour réaliser des tâches. Cela allège la charge de travail du développeur lors de la création de code pour l’établissement de la connexion.

Fonctions

Une fonction est une unité de déploiement autonome et un service de Knative, similaire à un microservice. Son code est conçu pour réaliser une seule tâche, telle que :

  • Le traitement d’un fichier dans une base de données
  • L’enregistrement d’un utilisateur dans une base de données
  • L’exécution d’une tâche planifiée

Le framework sans serveur Knative est conçu pour vous permettre de développer et de déployer efficacement des fonctions, et de les gérer.

Plugins

Étendez ou personnalisez facilement les fonctionnalités du framework sans serveur Knative à l’aide de plugins. Chaque fichier serverless.yml inclut une propriété de plugin qui contient divers plugins.

Ressources

Les ressources sont les éléments de l’infrastructure sans serveur Knative que votre fonction utilise, parmi lesquelles :

  • Une source d’événement AWS SQS
  • Une tâche planifiée (exécutée toutes les 5 minutes, 10 minutes, etc.)
  • Une source d’événements Kafka

Et bien plus encore.

Services

Les services sont analogues à un projet. Par conséquent, un service est l’unité d’organisation au sein du framework sans serveur Knative. Bien qu’il soit possible d’avoir plusieurs services pour une seule application, le service peut être considéré comme un fichier de projet.

C’est là que vous pouvez définir les fonctions, les événements et les ressources, le tout dans un seul fichier nommé serverless.yml, serverless.json ou serverless.js. Lorsque vous déployez les services avec le framework sans serveur, l’intégralité du fichier est déployée en une seule opération.

Serving

Knative-serving est intégré à Istio et Kubernetes, ce qui facilite le déploiement d’applications. Il offre le développement rapide de conteneurs sans serveur, la programmation réseau et la mise à l’échelle automatique des composants d’Istio. Knative-serving considère les conteneurs comme un service évolutif capable de passer d’une instance à de multiples instances de conteneurs.

Fonctionnalités de Knative

Explorons quelques-unes des fonctionnalités du framework sans serveur Knative :

  • Knative est un framework sans serveur basé sur Kubernetes qui permet de déployer des services sur Kubernetes.
  • Il facilite l’intégration de Knative avec l’environnement pris en charge
  • Les développeurs peuvent directement utiliser l’API Kubernetes, assistés par Knative, pour déployer des services sans serveur.
  • Il permet aux utilisateurs de déclencher des services sans serveur via le système d’événements de Knative

Comment fonctionne Knative ?

Le framework sans serveur Knative fonctionne comme un segment de pilotage d’événements, assurant la liaison entre Istio et Kubernetes. Kubernetes sert d’orchestrateur pour les microservices et les conteneurs. Istio, quant à lui, est une technologie de maillage open source qui rassemble différents composants pour interagir avec l’utilisateur et entre eux.

Knative met à disposition des utilisateurs différents composants ciblés pour réaliser les tâches quotidiennes de base. Ces composants sont réutilisés dans diverses applications. Un développeur peut choisir n’importe quel langage de programmation, car Knative ne reconnaît que les images de conteneurs.

Le fonctionnement du framework sans serveur Knative repose sur trois composants fondamentaux.

Création de nouveaux conteneurs

Le composant de construction est responsable de la création de nouveaux conteneurs. Il peut convertir le code source en conteneur. Knative peut être configuré pour répondre aux exigences spécifiques de l’entreprise.

Tout d’abord, Knative récupère le code source à partir de bibliothèques comme Github. Ensuite, les dépendances sous-jacentes sont ajoutées pour assurer l’exécution efficace du code. Les images de conteneurs sont ensuite créées et placées dans des fichiers accessibles à la plateforme Kubernetes.

Le conteneur est mis à la disposition des développeurs utilisant Kubernetes et Knative. Les conteneurs sont donc créés dès que l’origine du code est connue.

Service ou exécution de la plateforme

Le composant de service est responsable du fonctionnement de la plateforme. Cela comprend :

  • Configuration : la configuration est essentielle pour la gestion de plusieurs versions d’un service. Chaque fois qu’une nouvelle fonctionnalité d’un conteneur est déployée, Knative enregistre la version existante et crée une nouvelle version avec les dernières modifications et fonctionnalités. Knative définit également l’état d’un service.
  • Mise à l’échelle automatique : pour que les conteneurs sans serveur fonctionnent de manière optimale, il est nécessaire de pouvoir les adapter automatiquement en fonction des besoins. Knative peut ajuster automatiquement les services à de multiples instances si nécessaire.
  • Routage intelligent des services : il s’agit d’un aspect important du mécanisme de fonctionnement de Knative. Il permet aux développeurs de contrôler le flux et la quantité de trafic vers les différentes versions existantes des microservices. Le routage intelligent des services peut être utilisé lors de l’introduction de nouvelles fonctionnalités et de stratégies de déploiement bleu-vert.

Il permet d’exposer une partie des utilisateurs aux tests et à la version récente, et d’acheminer progressivement un grand volume de trafic vers la nouvelle version.

Événements pour la définition des fonctions

Le composant événementiel de Knative est chargé de la description de la fonction de Knative. Il permet de définir le fonctionnement des conteneurs en fonction des événements. Différents événements déclenchent des fonctions spécifiques des conteneurs.

Les développeurs peuvent définir les déclencheurs d’événements et les conteneurs associés pour que Knative puisse faire son travail. Knative gère la liste des événements et leur livraison.

Avantages de Knative

Knative fournit des services tels que la gestion des itinéraires, le déploiement progressif et la connexion aux services. Il bénéficie d’une communauté active et étendue. Examinons comment Knative influence l’adoption de cette technologie par les entreprises.

  • Contrairement à d’autres solutions, Knative possède des événements standard et est compatible avec la solution FaaS. Il propose un framework CloudEvent standard qui facilite la conception d’une architecture sans serveur.
  • Bien que Knative ne soit pas un PaaS, il permet de créer un PaaS sans serveur en utilisant la plateforme d’orchestration sans serveur.
  • Knative est doté d’une conception sans serveur complète et mature.
  • Il prend en charge plusieurs plateformes et offre une norme universelle parmi les fournisseurs de cloud, réduisant ainsi le risque de dépendance à un fournisseur spécifique.

  • Knative offre un framework flexible.
  • Il prend en charge les déploiements progressifs proportionnels.
  • Vous pouvez explorer l’écosystème sans serveur dans un environnement conteneurisé.
  • Knative élimine la nécessité de gérer et d’outiller les infrastructures.
  • Vous pouvez migrer rapidement vers d’autres fournisseurs de cloud intégrés à Knative en implémentant Kubernetes.
  • Il propose un modèle de calcul basé sur la demande.
  • Il permet de gérer les flux de travail en tant que service.
  • Avec Knative, vous pouvez traiter les données IoT, réaliser des contrôles d’accessibilité et valider les configurations de vos groupes de sécurité.
  • Il permet aux développeurs de se concentrer sur le codage et de créer rapidement du code itératif.
  • Il garantit l’intégration des nouvelles versions par les développeurs.
  • Le modèle basé sur les événements de Knative facilite l’implémentation de conceptions, notamment l’abonnement, la connexion à un système externe et l’enregistrement.

Défis de Knative (et quelques solutions)

Défis d’efficacité

Un framework Knative qui prend en charge des applications appropriées offre de meilleures performances à un coût minimal. Cependant, une mauvaise combinaison d’applications peut entraîner une augmentation des coûts et une sous-utilisation des ressources de conteneurs. Cela peut entraîner de mauvaises performances d’application, ce qui constitue le principal défi du déploiement sans serveur de Knative.

Ainsi, un pool de ressources mal dimensionné ou de mauvaises applications peuvent annuler de nombreux avantages de Knative.

Vous pouvez surmonter ce défi en réalisant des tests pour vérifier les quantités de ressources et la combinaison d’applications sur Knative. Mesurez les charges d’événements en dimensionnant les charges moyennes et maximales pour chacune, puis évaluez la consommation totale de ressources. Répétez cette procédure pour différentes applications afin de mettre en place et d’exécuter une configuration de test pour valider les estimations.

Défis fonctionnels

Les défis fonctionnels de Knative peuvent être :

  • Knative dépend de fonctions qui correspondent à un modèle sans état. Cela signifie qu’aucune donnée n’est stockée dans le composant lui-même. Le développement des fonctions n’est pas une étape difficile, mais il nécessite un léger changement d’approche. Une seule erreur peut compromettre les performances du logiciel.
  • Les données d’entreprise se composent de plusieurs étapes de transactions, et les fonctions sans état maintiennent le contexte à travers toutes les étapes. Knative ne possède pas cette capacité, contrairement aux outils sans serveur du cloud public.

Une surveillance régulière et la résolution de problèmes peuvent vous aider à maintenir vos performances à des niveaux satisfaisants.

Défis opérationnels

Par rapport aux offres sans serveur dans un cloud public, il existe un défi opérationnel avec Knative. Avec le cloud public, les administrateurs n’ont pas de contrôle sur les serveurs sous-jacents. Cependant, ils devront gérer les serveurs avec Kubernetes, les conteneurs, Knative et Istio lui-même.

Knative réduit au minimum la complexité des opérations et du développement pour les entreprises qui ont déjà adopté Kubernetes et les conteneurs. Ceux qui utilisent le maillage de services et les microservices trouveront que Knative représente une extension naturelle.

Cas d’utilisation de Knative

Knative est idéal pour les applications qui génèrent un nombre variable d’événements, en restant dans les limites établies ou en les dépassant. Les cas d’utilisation spécifiques du framework sans serveur Knative incluent :

L’orientation événementielle est primordiale. Si les équipes informatiques ne peuvent pas envisager une application comme une série d’événements plutôt que comme des transactions, Knative pourrait ne pas être un choix judicieux pour des raisons fonctionnelles et d’efficacité.

Prérequis et installation de Knative

Comme nous l’avons vu dans les sections précédentes, Knative est un ensemble de composants, notamment les événements et les services, qui fonctionnent sur un maillage de services et un cluster d’orchestration de la charge de travail. Certains utilitaires de ligne de commande doivent être installés pour assurer un fonctionnement simplifié. Par conséquent, nous avons besoin de quelques dépendances pour garantir le bon déroulement de l’installation.

Conditions préalables

Il existe plusieurs options pour installer Kubernetes. Docker Desktop permet d’activer un cluster Kubernetes simple qui peut être utilisé à diverses fins. Une approche simple consiste à utiliser Kubernetes dans Docker pour exécuter le cluster Kubernetes avec les nœuds de conteneurs Docker. L’outil de ligne de commande Knative est la méthode la plus pratique pour interagir avec le cluster.

La CLI Knative offre une interface simple et rapide pour la création des ressources. Elle facilite des tâches complexes telles que la répartition du trafic et la mise à l’échelle automatique. La méthode la plus pratique consiste à télécharger le fichier binaire compatible à partir de la page GitHub.

Installation

Une fois que tous les prérequis sont en place, nous pouvons procéder à l’installation des composants. Pour l’environnement de développement, il existe un plugin de démarrage rapide. Ce plugin facilite l’installation d’un cluster Knative local à l’aide du client Knative. Vous pouvez télécharger le plugin de démarrage rapide depuis la page de publication officielle.

Conclusion : l’avenir de Knative

Knative a transformé l’informatique sans serveur en fournissant une mise à l’échelle automatique des applications. Son impact sur le système interopérable et modulaire est significatif.

À l’avenir, on s’attend à ce que Knative comble les lacunes actuelles et devienne l’une des technologies les plus performantes pour exécuter une architecture sans serveur.

La technologie Knative est plus avantageuse pour les développeurs, si l’on compare ses bénéfices aux alternatives sans serveur. Knative vous aidera à gagner un temps précieux en remplaçant la nécessité de créer et de maintenir les extensions Kubernetes. Les développeurs apprécient particulièrement Knative, car elle est facile à utiliser et constitue une excellente alternative aux solutions sans serveur.

Par conséquent, si vous souhaitez optimiser la puissance de l’environnement Kubernetes dans vos flux de travail cloud, adoptez la technologie Knative et constatez-en les avantages par vous-même.