Chapitre 4. Servir
4.1. Démarrer avec Knative Serving
4.1.1. Applications sans serveur
Les applications sans serveur sont créées et déployées en tant que services Kubernetes, définies par une route et une configuration, et contenues dans un fichier YAML. Pour déployer une application sans serveur à l'aide d'OpenShift Serverless, vous devez créer un objet Knative Service
.
Exemple de fichier YAML de l'objet Knative Service
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: hello 1 namespace: default 2 spec: template: spec: containers: - image: docker.io/openshift/hello-openshift 3 env: - name: RESPONSE 4 value: "Hello Serverless!"
Vous pouvez créer une application sans serveur en utilisant l'une des méthodes suivantes :
Créez un service Knative à partir de la console web d'OpenShift Container Platform.
Pour plus d'informations, voir Création d'applications à l'aide de la perspective du développeur.
-
Créer un service Knative en utilisant le CLI Knative (
kn
). -
Créer et appliquer un objet Knative
Service
sous la forme d'un fichier YAML, en utilisant le CLIoc
.
4.1.1.1. Créer des applications sans serveur en utilisant le CLI Knative
L'utilisation de la CLI Knative (kn
) pour créer des applications sans serveur offre une interface utilisateur plus rationalisée et plus intuitive que la modification directe des fichiers YAML. Vous pouvez utiliser la commande kn service create
pour créer une application sans serveur de base.
Conditions préalables
- OpenShift Serverless Operator et Knative Serving sont installés sur votre cluster.
-
Vous avez installé le CLI Knative (
kn
). - Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
Procédure
Créer un service Knative :
$ kn service create <service-name> --image <image> --tag <tag-value>
Où ?
-
--image
est l'URI de l'image pour l'application. --tag
est un indicateur facultatif qui peut être utilisé pour ajouter une étiquette à la révision initiale créée avec le service.Example command
$ kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
Exemple de sortie
Creating service 'event-display' in namespace 'default': 0.271s The Route is still working to reflect the latest desired specification. 0.580s Configuration "event-display" is waiting for a Revision to become ready. 3.857s ... 3.861s Ingress has not yet been reconciled. 4.270s Ready to serve. Service 'event-display' created with latest revision 'event-display-bxshg-1' and URL: http://event-display-default.apps-crc.testing
-
4.1.1.2. Créer des applications sans serveur à l'aide de YAML
La création de ressources Knative à l'aide de fichiers YAML utilise une API déclarative, qui vous permet de décrire des applications de manière déclarative et reproductible. Pour créer une application sans serveur à l'aide de YAML, vous devez créer un fichier YAML qui définit un objet Knative Service
, puis l'appliquer à l'aide de oc apply
.
Une fois le service créé et l'application déployée, Knative crée une révision immuable pour cette version de l'application. Knative effectue également la programmation du réseau pour créer une route, une entrée, un service et un équilibreur de charge pour votre application et fait automatiquement évoluer vos pods vers le haut ou vers le bas en fonction du trafic.
Conditions préalables
- OpenShift Serverless Operator et Knative Serving sont installés sur votre cluster.
- Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
-
Installez le CLI OpenShift (
oc
).
Procédure
Créez un fichier YAML contenant l'exemple de code suivant :
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-delivery namespace: default spec: template: spec: containers: - image: quay.io/openshift-knative/knative-eventing-sources-event-display:latest env: - name: RESPONSE value: "Hello Serverless!"
Naviguez jusqu'au répertoire où se trouve le fichier YAML et déployez l'application en appliquant le fichier YAML :
$ oc apply -f <filename>
Si vous ne souhaitez pas passer à la perspective Developer dans la console web d'OpenShift Container Platform ou utiliser le CLI Knative (kn
) ou les fichiers YAML, vous pouvez créer des composants Knative en utilisant la perspective Administator de la console web d'OpenShift Container Platform.
4.1.1.3. Créer des applications sans serveur en utilisant la perspective de l'administrateur
Les applications sans serveur sont créées et déployées en tant que services Kubernetes, définies par une route et une configuration, et contenues dans un fichier YAML. Pour déployer une application sans serveur à l'aide d'OpenShift Serverless, vous devez créer un objet Knative Service
.
Exemple de fichier YAML de l'objet Knative Service
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: hello 1 namespace: default 2 spec: template: spec: containers: - image: docker.io/openshift/hello-openshift 3 env: - name: RESPONSE 4 value: "Hello Serverless!"
Une fois le service créé et l'application déployée, Knative crée une révision immuable pour cette version de l'application. Knative effectue également la programmation du réseau pour créer une route, une entrée, un service et un équilibreur de charge pour votre application et fait automatiquement évoluer vos pods vers le haut ou vers le bas en fonction du trafic.
Conditions préalables
Pour créer des applications sans serveur à l'aide de la perspective Administrator, assurez-vous d'avoir effectué les étapes suivantes.
- L'opérateur OpenShift Serverless et Knative Serving sont installés.
- Vous vous êtes connecté à la console web et vous vous trouvez dans la perspective Administrator.
Procédure
-
Naviguez jusqu'à la page Serverless
Serving. - Dans la liste Create, sélectionnez Service.
- Saisir manuellement des définitions YAML ou JSON, ou glisser-déposer un fichier dans l'éditeur.
- Cliquez sur Create.
4.1.1.4. Création d'un service en mode hors ligne
Vous pouvez exécuter les commandes kn service
en mode déconnecté, de sorte qu'aucune modification n'est apportée au cluster et que le fichier de descripteur de service est créé sur votre machine locale. Une fois le fichier descripteur créé, vous pouvez le modifier avant de propager les changements au cluster.
Le mode hors ligne de la CLI Knative est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, permettant aux clients de tester les fonctionnalités et de fournir un retour d'information au cours du processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Conditions préalables
- OpenShift Serverless Operator et Knative Serving sont installés sur votre cluster.
-
Vous avez installé le CLI Knative (
kn
).
Procédure
En mode déconnecté, créez un fichier de descripteurs de service Knative local :
$ kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest \ --target ./ \ --namespace test
Exemple de sortie
Service 'event-display' created in namespace 'test'.
L'option
--target ./
active le mode hors ligne et spécifie./
comme répertoire de stockage de la nouvelle arborescence.Si vous n'indiquez pas de répertoire existant, mais que vous utilisez un nom de fichier, tel que
--target my-service.yaml
, aucune arborescence n'est créée. Seul le fichier de descripteurs de servicemy-service.yaml
est créé dans le répertoire actuel.Le nom de fichier peut avoir l'extension
.yaml
,.yml
, ou.json
. Le choix de.json
crée le fichier du descripteur de service au format JSON.L'option
--namespace test
place le nouveau service dans l'espace de nomstest
.Si vous n'utilisez pas
--namespace
, et que vous êtes connecté à un cluster OpenShift Container Platform, le fichier de descripteurs est créé dans l'espace de noms actuel. Sinon, le fichier de descripteurs est créé dans l'espace de nomsdefault
.
Examinez la structure de répertoire créée :
$ tree ./
Exemple de sortie
./ └── test └── ksvc └── event-display.yaml 2 directories, 1 file
-
Le répertoire actuel
./
spécifié avec--target
contient le nouveau répertoiretest/
qui porte le nom de l'espace de noms spécifié. -
Le répertoire
test/
contient le répertoireksvc
, nommé d'après le type de ressource. -
Le répertoire
ksvc
contient le fichier descripteurevent-display.yaml
, nommé d'après le nom du service spécifié.
-
Le répertoire actuel
Examinez le fichier de descripteurs de service généré :
$ cat test/ksvc/event-display.yaml
Exemple de sortie
apiVersion: serving.knative.dev/v1 kind: Service metadata: creationTimestamp: null name: event-display namespace: test spec: template: metadata: annotations: client.knative.dev/user-image: quay.io/openshift-knative/knative-eventing-sources-event-display:latest creationTimestamp: null spec: containers: - image: quay.io/openshift-knative/knative-eventing-sources-event-display:latest name: "" resources: {} status: {}
Liste des informations sur le nouveau service :
$ kn service describe event-display --target ./ --namespace test
Exemple de sortie
Name: event-display Namespace: test Age: URL: Revisions: Conditions: OK TYPE AGE REASON
L'option
--target ./
spécifie le répertoire racine de la structure de répertoires contenant les sous-répertoires de l'espace de noms.Vous pouvez également spécifier directement un nom de fichier YAML ou JSON à l'aide de l'option
--target
. Les extensions de fichier acceptées sont.yaml
,.yml
, et.json
.L'option
--namespace
spécifie l'espace de noms, qui communique àkn
le sous-répertoire contenant le fichier de descripteur de service nécessaire.Si vous n'utilisez pas
--namespace
et que vous êtes connecté à un cluster OpenShift Container Platform,kn
recherche le service dans le sous-répertoire portant le nom de l'espace de noms actuel. Sinon,kn
effectue la recherche dans le sous-répertoiredefault/
.
Utilisez le fichier descripteur de service pour créer le service sur le cluster :
$ kn service create -f test/ksvc/event-display.yaml
Exemple de sortie
Creating service 'event-display' in namespace 'test': 0.058s The Route is still working to reflect the latest desired specification. 0.098s ... 0.168s Configuration "event-display" is waiting for a Revision to become ready. 23.377s ... 23.419s Ingress has not yet been reconciled. 23.534s Waiting for load balancer to be ready 23.723s Ready to serve. Service 'event-display' created to latest revision 'event-display-00001' is available at URL: http://event-display-test.apps.example.com
4.1.1.5. Ressources supplémentaires
4.1.2. Vérifier le déploiement de votre application sans serveur
Pour vérifier que votre application serverless a été déployée avec succès, vous devez obtenir l'URL de l'application créée par Knative, puis envoyer une requête à cette URL et observer la sortie. OpenShift Serverless prend en charge l'utilisation d'URL HTTP et HTTPS, mais la sortie de oc get ksvc
imprime toujours les URL en utilisant le format http://
.
4.1.2.1. Vérifier le déploiement de votre application sans serveur
Pour vérifier que votre application serverless a été déployée avec succès, vous devez obtenir l'URL de l'application créée par Knative, puis envoyer une requête à cette URL et observer la sortie. OpenShift Serverless prend en charge l'utilisation d'URL HTTP et HTTPS, mais la sortie de oc get ksvc
imprime toujours les URL en utilisant le format http://
.
Conditions préalables
- OpenShift Serverless Operator et Knative Serving sont installés sur votre cluster.
-
Vous avez installé le CLI
oc
. - Vous avez créé un service Knative.
Conditions préalables
-
Installez le CLI OpenShift (
oc
).
Procédure
Recherchez l'URL de l'application :
oc get ksvc -YRFFGUNA nom_du_service>
Exemple de sortie
NAME URL LATESTCREATED LATESTREADY READY REASON event-delivery http://event-delivery-default.example.com event-delivery-4wsd2 event-delivery-4wsd2 True
Envoyez une requête à votre cluster et observez le résultat.
Exemple de demande HTTP
$ curl http://event-delivery-default.example.com
Exemple de demande HTTPS
$ curl https://event-delivery-default.example.com
Exemple de sortie
Hello Serverless!
Facultatif. Si vous recevez une erreur concernant un certificat auto-signé dans la chaîne de certificats, vous pouvez ajouter le drapeau
--insecure
à la commande curl pour ignorer l'erreur :$ curl https://event-delivery-default.example.com --insecure
Exemple de sortie
Hello Serverless!
ImportantLes certificats auto-signés ne doivent pas être utilisés dans un déploiement de production. Cette méthode ne doit être utilisée qu'à des fins de test.
Facultatif. Si votre cluster OpenShift Container Platform est configuré avec un certificat signé par une autorité de certification (CA) mais pas encore configuré globalement pour votre système, vous pouvez le spécifier avec la commande
curl
. Le chemin d'accès au certificat peut être transmis à la commande curl à l'aide de l'indicateur--cacert
:$ curl https://event-delivery-default.example.com --cacert <file>
Exemple de sortie
Hello Serverless!