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.