For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/install-knative.md.
Découvrez comment installer Knative sur OVHcloud Managed Kubernetes et déployer vos premiers conteneurs serverless
Objectif
Knative est une plateforme permettant de déployer et de gérer des applications Serverless sur Kubernetes.
Knative fournit un ensemble de composants middleware construits au-dessus de Kubernetes, qui masquent les détails complexes et permettent aux développeurs de se concentrer sur l'essentiel. Construit en codifiant les bonnes pratiques partagées par des implémentations réelles ayant fait leurs preuves, Knative résout les aspects « ennuyeux mais difficiles » du déploiement et de la gestion des services cloud native, afin que vous n'ayez pas à le faire vous-même.
Concrètement, vous allez déployer des composants Knative, et Knative créera lui-même les composants Kubernetes nécessaires. Vous n'avez pas à vous soucier des composants Kubernetes.
Knative prend en charge plusieurs couches de routage HTTP, notamment Istio, Gloo, Contour, Kourier et Ambassador.
Knative comporte deux composants :
Serving
Eventing
Il permet notamment :
le déploiement rapide de conteneurs Serverless ;
le scale to zero (pas d'appel = pas de pod = pas de consommation de mémoire/CPU) ;
le scale from zero (pic de trafic démarre x pods) ;
la gestion de la configuration et des révisions ;
la répartition du trafic entre les révisions, blue/green... ;
Knative a atteint la version 1.0. Pour célébrer cette étape, ce tutoriel vous guide dans l'installation de Knative sur un cluster OVHcloud Managed Kubernetes Service nouvellement créé, puis dans le déploiement d'une application d'exemple utilisant le composant Knative Serving. Vous pouvez utiliser la fonction Réinitialiser le cluster dans la section Public Cloud de l' pour réinitialiser votre cluster avant de suivre ce tutoriel.
Prérequis
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez la documentation Déployer une application Hello World.
En pratique
Installer la CLI Knative « kn »
La CLI Knative (kn) offre une interface rapide et simple pour créer des ressources Knative, comme des Knative Services et des sources d'événements, sans avoir à créer ou modifier directement des fichiers YAML.
kn simplifie également la réalisation de procédures autrement complexes, comme l'autoscaling et la répartition du trafic.
Pour installer la CLI, suivez les instructions correspondant à votre système d'exploitation.
Vérifiez ensuite que la CLI est correctement installée sur votre machine :
Comme couche réseau, vous pouvez installer celle de votre choix : Istio, Contour, Gloo ou Ambassador. Dans ce tutoriel, nous allons installer Kourier : un Ingress léger pour Knative Serving.
Installez le contrôleur Knative Kourier en exécutant la commande :
Comme vous pouvez le constater, un nouveau namespace kourier-system est créé avec un déploiement :
$ kubectl get deploy -n kourier-systemNAME READY UP-TO-DATE AVAILABLE AGE3scale-kourier-gateway 1/1 1 1 104m
Récupérez l'adresse IP externe ou le CNAME en exécutant la commande :
kubectl get service kourier -n kourier-system
Voici un exemple de résultat :
$ kubectl get service kourier -n kourier-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkourier LoadBalancer 10.3.15.239 135.125.83.166 80:31357/TCP,443:31782/TCP 2m19s
Avertissement : comme la création du LoadBalancer est asynchrone et que le provisionnement du load balancer peut prendre plusieurs minutes, vous obtiendrez certainement un état <pending> pour le champ EXTERNAL-IP. Réessayez dans quelques minutes pour obtenir l'adresse IP externe.
Conservez cette valeur pour l'utiliser dans la section suivante consacrée à la configuration du DNS.
Vérifier l'installation
Un nouveau namespace knative-serving a été créé sur votre cluster Kubernetes avec les composants Knative Serving ; vérifions que ces composants s'exécutent correctement :
Vous pouvez également vérifier la version installée de Knative Serving :
kubectl get namespace knative-serving -o 'go-template={{index .metadata.labels "app.kubernetes.io/version"}}'
Voici un exemple de résultat :
$ kubectl get namespace knative-serving -o 'go-template={{index .metadata.labels "app.kubernetes.io/version"}}'1.17.0
Knative Serving version 1.17.0 est correctement déployé dans notre cluster.
Configurer le DNS
Pour ce tutoriel, même si cela n'est pas obligatoire, vous pouvez configurer le DNS afin d'éviter d'avoir à exécuter des commandes curl avec un en-tête d'hôte.
Pour configurer le DNS pour Knative, récupérez l'adresse IP externe obtenue lors de la configuration réseau (135.125.83.166 dans cet exemple) et configurez-la chez votre fournisseur DNS comme suit :
Configurez un enregistrement A générique (wildcard) pour le domaine :
# Here knative.example.com is the domain suffix for your cluster*.knative.example.com == A 135.125.83.166
Chez OVHcloud, vous pouvez créer une nouvelle entrée dans une zone DNS existante, comme ceci :
Une fois votre fournisseur DNS configuré, indiquez à Knative d'utiliser ce domaine :
# Replace example.com with your domain suffixkubectl patch configmap/config-domain \ --namespace knative-serving \ --type merge \ --patch '{"data":{"knative.example.com":""}}'
Ainsi qu'un service, une route et une révision Knative :
$ kn service list -n knative-appsNAME URL LATEST AGE CONDITIONS READY REASONhello-world http://hello-world.knative-apps.knative.example.com hello-world-00001 51s 3 OK / 3 True$ kn route list -n knative-appsNAME URL READYhello-world http://hello-world.knative-apps.knative.example.com True$ kn revision list -n knative-appsNAME SERVICE TRAFFIC TAGS GENERATION AGE CONDITIONS READY REASONhello-world-00001 hello-world 100% 1 58s 4 OK / 4 True
Comme on peut le constater, par défaut, 100 % du trafic est dirigé vers la révision hello-world-00001.
Récupérons maintenant l'URL de la route :
$ kn service describe hello-world -n knative-apps -o urlhttp://hello-world.knative-apps.example.com
Avec cette information, nous pouvons tester l'appel à notre application :
$ curl http://hello-world.knative-apps.knative.example.com<!doctype html><html><head><title>OVH K8S</title></head><body><div className="title"><p>Hello from Kubernetes!</p><img src="./ovh.svg"/></div></body></html>
Réduction à zéro (scale to zero)
Une des forces de Knative Serving est l'autoscaling intégré. Cela signifie que votre Knative Service ne démarre votre application pour effectuer son travail que si nécessaire ; sinon, il effectue un « scale to zero » en arrêtant les instances et en attendant qu'une nouvelle requête arrive.
Ainsi, si vous n'envoyez pas de requêtes à votre application, les pods seront automatiquement supprimés !
$ kubectl get po -n knative-appsNo resources found in knative-apps namespace.
Et ensuite ?
Vous disposez désormais d'une application « Hello World » fonctionnelle, déployée sur Knative, sur un cluster OVHcloud Managed Kubernetes. Un prochain tutoriel vous présentera d'autres fonctionnalités intéressantes de Knative, comme la répartition du trafic, le déploiement blue/green et le scaling horizontal.
Dans ce tutoriel, nous n'avons vu que le composant Serving. Si le composant Knative Eventing vous intéresse, nous vous recommandons la documentation officielle.
Suppression (nettoyage)
Si vous le souhaitez, vous pouvez désinstaller les applications Knative, ainsi que les composants Serving et les composants principaux.
Tout d'abord, supprimez notre application Hello World :
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.