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!"

1
Le nom de l'application.
2
L'espace de noms utilisé par l'application.
3
L'image de l'application.
4
Variable d'environnement imprimée par l'exemple d'application.

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 CLI oc.

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

  1. 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!"
  2. 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!"

1
Le nom de l'application.
2
L'espace de noms utilisé par l'application.
3
L'image de l'application.
4
Variable d'environnement imprimée par l'exemple d'application.

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

  1. Naviguez jusqu'à la page Serverless Serving.
  2. Dans la liste Create, sélectionnez Service.
  3. Saisir manuellement des définitions YAML ou JSON, ou glisser-déposer un fichier dans l'éditeur.
  4. 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.

Important

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

  1. 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 service my-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 noms test.

      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 noms default.

  2. 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épertoire test/ qui porte le nom de l'espace de noms spécifié.
    • Le répertoire test/ contient le répertoire ksvc, nommé d'après le type de ressource.
    • Le répertoire ksvc contient le fichier descripteur event-display.yaml, nommé d'après le nom du service spécifié.
  3. 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: {}

  4. 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épertoire default/.

  5. 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

  1. 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

  2. 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!

  3. 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!

    Important

    Les 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.

  4. 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!

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.