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

Les frameworks sans serveur sont en demande depuis quelques années et sont de plus en plus adoptés par les développeurs.

Néanmoins, les applications basées sur des conteneurs sont déjà populaires, tout comme Kubernetes parmi les entreprises.

Kubernetes, sans aucun doute, est un excellent outil ayant un bon potentiel. Son écosystème se développe également avec une variété de nouveaux outils et les dernières technologies, telles que Knative, qui a le pouvoir de rendre Kubernetes encore meilleur.

Knative a été introduit pour surmonter les situations qui conduisent à l’échec et établir une norme de base pour les plates-formes cloud et l’orchestration cloud native.

En d’autres termes, le framework sans serveur Knative peut mieux répondre aux besoins d’une entreprise que d’autres déploiements sans serveur basés sur le cloud.

Dans ce guide, je parlerai de Knative, de ses avantages, de ses cas d’utilisation, de la procédure d’installation, de la procédure de travail, etc.

Nous y voilà!

Qu’est-ce que Knatif ?

Knative est un framework sans serveur basé sur Kubernetes qui a d’abord été développé par Google. Il charge et exécute des fonctions sans serveur en fonction des besoins de l’entreprise, minimisant ainsi le gaspillage. Il s’agit d’un projet open source qui ajoute des composants pour déployer, exécuter et gérer des applications sans serveur sur Kubernetes.

L’objectif principal du framework sans serveur Knative est de gérer les normes d’orchestration multiplateforme. Ceci est mis en œuvre en intégrant la fonction de création de conteneurs, de mise à l’échelle automatique, de modèles d’événements et de gestion de la charge de travail.

Auparavant, il existait une variété de solutions open source autres que Knative. Chaque solution a son mode de déploiement, ce qui peut entraîner une fragmentation du marché car il y a un manque de pratiques standardisées. Cela signifie que le choix d’un fournisseur spécifique est nécessaire si vous souhaitez une fonctionnalité système particulière.

Cependant, les problèmes de migration ont commencé à venir au premier plan. Et pour éviter de tels problèmes, le framework sans serveur Knative a été introduit. Ainsi, si vous avez du mal à incorporer des tâches, Knative peut le faire efficacement dans le pipeline basé sur Kubernetes.

Knative a trois pièces :

  • Knative Build : il crée des images de conteneurs et les rend disponibles à partir du code source.
  • Knative Serving : il utilise Istio et Kubernetes pour connecter et déployer ces images de conteneur via les ressources d’infrastructure attribuées.
  • Knative Eventing : il permet aux utilisateurs de définir les déclencheurs d’événements et permet aux utilisateurs d’associer les déclencheurs d’événements à des fonctions conteneurisées.

Chaque fois que Knative identifie un événement, il définit le processus associé pour l’exécuter à la demande. Avec Knative, il n’est pas nécessaire d’allouer des nœuds de conteneur, des clusters et des pods pour le travail, car Knative ne valide les ressources d’hébergement que lorsqu’un processus donné s’exécute. De cette façon, Knative équilibre les avantages du sans serveur et du conteneur.

Concepts de base de Knative

Discutons des principaux concepts de Knative Serverless Framework et de leur lien avec les primitives Knative.

Construire

Knative-building aide à utiliser et à étendre les primitives de Kubernetes existantes, vous permettant d’exécuter des builds de conteneurs à partir de l’origine. Il active le code source à partir des dépendances et du référentiel, en créant des images de conteneur et en les enregistrant.

Événements

L’événement vous aide à créer une meilleure communication entre les consommateurs et les producteurs d’événements faiblement couplés pour la construction de l’architecture pilotée par les événements. Knative place ces événements dans une file d’attente qui devait être exécutée automatiquement sans le script des développeurs.

Plus tard, ces événements sont livrés aux conteneurs. Il envoie ensuite des flux aux producteurs d’événements pour effectuer des tâches. Cela réduira la charge de travail du développeur dans la création de code pour l’établissement de la connexion.

Les fonctions

Une fonction est une unité de déploiement indépendante et un service de service Knative, comme un microservice. Son code est écrit pour effectuer une seule tâche, telle que :

  • Traitement d’un fichier dans une base de données
  • Enregistrer un utilisateur dans une base de données
  • Exécution d’un travail planifié

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 écrasez facilement les fonctionnalités du framework sans serveur Knative à l’aide de plugins. Chaque fichier serverless.yml contient une propriété de plugin qui comporte divers plugins.

Ressources

Les ressources sont les composants de l’infrastructure sans serveur Knative que votre fonction utilise, notamment :

  • 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 plus.

Prestations de service

Les services sont comme un projet. Par conséquent, un service est l’unité d’organisation du framework sans serveur Knative. Bien que vous puissiez avoir plusieurs services pour une seule application, vous pouvez considérer le service comme un fichier de projet.

C’est là que vous pourrez définir les fonctions, les événements et les ressources, le tout dans un seul fichier intitulé serverless.yml, serverless.json ou serverless.js. Lorsque vous déployez les services avec le framework sans serveur, tout dans le fichier est déployé en même temps.

Portion

Knative-serving est intégré à Istio et Kubernetes qui prend en charge le déploiement d’applications. Il permet le développement rapide de conteneurs sans serveur, la programmation réseau et la mise à l’échelle automatique des composants Istio. Knative-serving considère les conteneurs comme un service évolutif pouvant aller d’une instance à plusieurs instances de conteneur.

Caractéristiques de Knative

Discutons de certaines des fonctionnalités du framework sans serveur Knative :

  • Knative est un framework sans serveur basé sur Kubernetes qui vous permet de déployer des services sur Kubernetes.
  • Il intègre facilement Knative à l’environnement pris en charge
  • Les développeurs peuvent utiliser directement l’API Kubernetes avec l’aide de Knative pour déployer des services sans serveur
  • Il permet aux utilisateurs de déclencher des services sans serveur à l’aide du système d’événements de Knative

Comment fonctionne Knative ?

Le framework sans serveur Knative fonctionne comme un segment de pilotage d’événements et connecte Istio et Kubernetes. Kubernetes fonctionne en tant qu’orchestrateur pour les microservices et les conteneurs. Istio, d’autre part, est une technologie de maillage open source qui rassemble divers composants pour interagir avec l’utilisateur et lui-même.

Knative offre aux utilisateurs plusieurs composants ciblés pour effectuer le travail quotidien de base. Ces composants sont utilisés encore et encore dans une variété d’applications. Un développeur peut utiliser n’importe quel langage de programmation. Par conséquent, vous n’avez pas besoin de connaissances spécifiques des langues car Knative ne reconnaît que les images de conteneurs.

Il y a trois composants du framework sans serveur Knative qui sont les clés de son fonctionnement.

Construire de nouveaux conteneurs

Le composant de construction est responsable de la construction de nouveaux conteneurs. Il peut convertir les codes sources en conteneur. Knative peut être configuré pour répondre aux besoins spécifiques de l’entreprise.

Tout d’abord, Knative extrait le code source de la bibliothèque comme Github. Ensuite, des dépendances sous-jacentes sont ajoutées afin que le code s’exécute efficacement. Les images de conteneur sont ensuite construites et placées dans des fichiers auxquels la plateforme Kubernetes peut accéder.

Le conteneur est mis à la disposition des développeurs utilisant Kubernetes et Knative. Ainsi, les conteneurs sont construits tant que l’origine du code est connue.

Servir ou exécuter la plate-forme

Le composant de service est responsable du fonctionnement de la plate-forme. Ça implique:

  • Configuration : la configuration est certaine dans la gestion de plusieurs versions du service. Chaque fois qu’il y a un déploiement de la nouvelle fonctionnalité d’un conteneur, Knative enregistre la version existante et en crée une nouvelle avec les dernières modifications et fonctionnalités. De plus, Knative définit l’état d’un service.
  • Mise à l’échelle automatique : pour mieux faire fonctionner les conteneurs sans serveur, vous devez être capable de mettre à l’échelle automatiquement les conteneurs à la hausse ou à la baisse. Knative peut adapter automatiquement les services à plusieurs si nécessaire.
  • Routage de service intelligent : il s’agit d’une partie importante du mécanisme de fonctionnement de Knative. Il permet aux développeurs de diriger le flux et la quantité de trafic vers différentes versions existantes des microservices. Tout en introduisant de nouvelles fonctionnalités et des stratégies de déploiement bleu-vert, le routage de service intelligent peut être utilisé.

Il vous permet d’exposer une fraction des utilisateurs aux tests et à la version récents et d’acheminer progressivement un vaste trafic vers la nouvelle version.

Eventing pour définir des fonctions

Le composant événementiel de Knative est responsable 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 laisser Knative faire son travail. Knative gère la liste des événements et la livraison des événements.

Avantages de Knative

Knative fournit des services tels que la gestion des itinéraires, la publication progressive et la connexion aux services. Il bénéficie d’une vaste communauté. Voyons comment Knative influence les entreprises à adopter cette technologie.

  • Contrairement à d’autres solutions, Knative a des événements standards et est compatible avec la solution FaaS. Il offre un cadre standard CloudEvent qui aide à concevoir une architecture sans serveur.
  • Bien que Knative ne soit pas un PaaS, il vous permet de créer un PaaS sans serveur avec la plate-forme d’orchestration sans serveur.
  • Knative a une conception sans serveur à part entière et mature.
  • Il prend en charge plusieurs plates-formes et vous offre une norme universelle parmi les fournisseurs de cloud pour éliminer le risque de lier les fournisseurs à une solution spécifique.

  • Knative fournit un cadre flexible.
  • Il prend en charge les versions progressives proportionnelles.
  • Vous pouvez découvrir l’écosystème sans serveur dans un environnement conteneurisé.
  • Knative supprime la fiabilité de la gestion et de l’outillage.
  • Vous pouvez rapidement migrer vers d’autres fournisseurs de cloud intégrés à Knative en mettant en œuvre Kubernetes.
  • Il offre un modèle de calcul basé sur les demandes.
  • Il vous permet de gérer les flux de travail en tant que service.
  • Avec Knative, vous pouvez traiter les données IoT, exécuter 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 que les développeurs incorporeront de nouvelles versions.
  • Le modèle basé sur les événements de Knative aide à mettre en œuvre des conceptions, y compris l’abonnement, la connexion au système externe et l’enregistrement.

Défis de Knative (et quelques solutions)

Défis d’efficacité

Un framework Knative qui prend en charge les applications appropriées offre de meilleures performances à un coût minimal. Cependant, une mauvaise combinaison d’applications peut entraîner des coûts plus élevés et des ressources de conteneur sous-utilisées. Cela pourrait entraîner de mauvaises performances des applications, ce qui est le plus grand défi du déploiement sans serveur de Knative.

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

Vous pouvez surmonter ce défi en effectuant 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 chacun et estimez la consommation totale de ressources. Répétez cette opération pour plusieurs applications afin de créer et d’exécuter une configuration d’essai pour valider les estimations.

Défis fonctionnels

Les défis fonctionnels de Knative pourraient ê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 phase difficile, mais il nécessite un léger changement d’approche, ce qui signifie qu’une seule erreur peut ruiner les performances du logiciel.
  • Les données d’entreprise consistent en plusieurs étapes de transactions et les fonctions sans état maintiennent le contexte à travers toutes les étapes. Knative n’a pas cette capacité comme le peuvent les outils sans serveur du cloud public.

Une surveillance régulière et la résolution des problèmes peuvent vous aider à maintenir vos performances à des scores décents.

Défis opérationnels

Par rapport aux offres sans serveur dans un cloud public, il existe un défi opérationnel avec Knative. Les administrateurs ne contrôlent pas les serveurs sous-jacents avec le cloud public. Mais, ils devront gérer les serveurs avec Kubernetes, les conteneurs, Knative et Istio lui-même.

Knative étend au minimum la complexité des opérations et du développement pour les entreprises qui se sont déjà engagées dans Kubernetes et les conteneurs. Ceux qui s’engagent dans le maillage de services et les microservices trouveront dans Knative une extension naturelle.

Cas d’utilisation de Knative

Pour les applications qui donnent lieu à un nombre variable d’événements restant dans ou au-delà des limites établies dans le temps, Knative est ce qu’il y a de mieux pour elles. Les cas d’utilisation spécifiques du framework sans serveur Knative incluent :

L’orientation événementielle est essentielle. Si les équipes informatiques ne peuvent pas imaginer une application comme une série d’événements au lieu de transactions, Knative peut ne pas être un bon choix pour des raisons fonctionnelles et d’efficacité.

Prérequis et installation de Knative

Comme nous le voyons dans les sections ci-dessus, Knative est un ensemble de composants tels que les événements et le service qui s’exécutent sur un maillage de services et un cluster d’orchestration de la charge de travail. Il existe des utilitaires de ligne de commande que nous devons installer pour un fonctionnement simple. Ainsi, nous avons besoin de quelques dépendances pour nous assurer que nous pouvons procéder à l’installation.

Conditions préalables

Il existe plusieurs options pour installer Kubernetes. Docker Desktop vient activer un cluster Kubernetes simple qui sert à diverses fins. L’approche simple consiste à utiliser Kubernetes dans Docker pour exécuter le cluster Kubernetes avec les nœuds de conteneur Docker. Le moyen pratique de travailler avec le cluster consiste à utiliser l’outil de ligne de commande Knative.

La CLI Knative offre une interface simple et rapide pour créer ses ressources. Il aide dans des tâches complexes telles que la répartition du trafic et la mise à l’échelle automatique. Le moyen le plus pratique consiste à télécharger le binaire compatible à partir de la page GitHub.

Installation

Une fois que nous avons tous les prérequis, nous pouvons procéder à l’installation des composants. Pour l’environnement de développement, il existe un plugin de démarrage rapide. Le plug-in aide à installer un cluster Knative local à l’aide du client Knative. Vous pouvez télécharger le plug-in de démarrage rapide à partir de la page de publication officielle.

Conclusion : l’avenir de Knative

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

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

La technologie Knative est plus influente pour les développeurs en examinant ses avantages par rapport aux alternatives sans serveur. Knative vous aidera à gagner un temps précieux en remplaçant le besoin de construire et de maintenir les extensions Kubernetes. Les développeurs sont plutôt satisfaits de la technologie Knative car elle est facile à utiliser et constitue une excellente alternative aux solutions sans serveur.

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