Chapitre 7. CLI Knative


7.1. Commandes CLI de Knative Serving

7.1.1. commandes de service kn

Vous pouvez utiliser les commandes suivantes pour créer et gérer les services Knative.

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

7.1.1.2. Mettre à jour des applications sans serveur en utilisant le CLI Knative

Vous pouvez utiliser la commande kn service update pour des sessions interactives sur la ligne de commande lorsque vous construisez un service de manière incrémentale. Contrairement à la commande kn service apply, lorsque vous utilisez la commande kn service update, vous ne devez spécifier que les changements que vous souhaitez mettre à jour, plutôt que la configuration complète du service Knative.

Exemple de commandes

  • Mettre à jour un service en ajoutant une nouvelle variable d'environnement :

    $ kn service update <service_name> --env <key>=<value>
  • Mettre à jour un service en ajoutant un nouveau port :

    $ kn service update <service_name> --port 80
  • Mettre à jour un service en ajoutant de nouveaux paramètres de demande et de limite :

    $ kn service update <service_name> --request cpu=500m --limit memory=1024Mi --limit cpu=1000m
  • Attribuer la balise latest à une révision :

    $ kn service update -YRFFGUNA nom_du_service> --tag -YRFFGUNA nom_de_la_révision>=latest
  • Mettre à jour une balise de testing à staging pour la dernière révision READY d'un service :

    $ kn service update <service_name> --untag testing --tag @latest=staging
  • Ajoutez la balise test à une révision qui reçoit 10 % du trafic, et envoyez le reste du trafic à la dernière révision READY d'un service :

    $ kn service update -YRFFGUNA nom_du_service> --tag -YRFFGUNA nom_de_la_révision>=test --traffic test=10,@latest=90

7.1.1.3. Application des déclarations de service

Vous pouvez configurer un service Knative de manière déclarative en utilisant la commande kn service apply. Si le service n'existe pas, il est créé, sinon le service existant est mis à jour avec les options qui ont été modifiées.

La commande kn service apply est particulièrement utile pour les scripts shell ou dans un pipeline d'intégration continue, où les utilisateurs souhaitent généralement spécifier entièrement l'état du service en une seule commande pour déclarer l'état cible.

Lorsque vous utilisez kn service apply, vous devez fournir la configuration complète du service Knative. Cela diffère de la commande kn service update, qui vous demande seulement de spécifier dans la commande les options que vous souhaitez mettre à jour.

Exemple de commandes

  • Créer un service :

    kn service apply <service_name> --image <image> $ kn service apply <service_name> --image <image>
  • Ajouter une variable d'environnement à un service :

    $ kn service apply <service_name> --image <image> --env <key>=<value>
  • Lire la déclaration de service à partir d'un fichier JSON ou YAML :

    $ kn service apply <service_name> -f <filename>

7.1.1.4. Décrire des applications sans serveur en utilisant le CLI Knative

Vous pouvez décrire un service Knative en utilisant la commande kn service describe.

Exemple de commandes

  • Décrire un service :

    kn service describe --verbose <service_name>

    Le drapeau --verbose est facultatif mais peut être inclus pour fournir une description plus détaillée. La différence entre une sortie normale et une sortie verbeuse est illustrée dans les exemples suivants :

    Exemple de sortie sans l'indicateur --verbose

    Name:       hello
    Namespace:  default
    Age:        2m
    URL:        http://hello-default.apps.ocp.example.com
    
    Revisions:
      100%  @latest (hello-00001) [1] (2m)
            Image:  docker.io/openshift/hello-openshift (pinned to aaea76)
    
    Conditions:
      OK TYPE                   AGE REASON
      ++ Ready                   1m
      ++ ConfigurationsReady     1m
      ++ RoutesReady             1m

    Exemple de sortie avec l'indicateur --verbose

    Name:         hello
    Namespace:    default
    Annotations:  serving.knative.dev/creator=system:admin
                  serving.knative.dev/lastModifier=system:admin
    Age:          3m
    URL:          http://hello-default.apps.ocp.example.com
    Cluster:      http://hello.default.svc.cluster.local
    
    Revisions:
      100%  @latest (hello-00001) [1] (3m)
            Image:  docker.io/openshift/hello-openshift (pinned to aaea76)
            Env:    RESPONSE=Hello Serverless!
    
    Conditions:
      OK TYPE                   AGE REASON
      ++ Ready                   3m
      ++ ConfigurationsReady     3m
      ++ RoutesReady             3m

  • Décrire un service au format YAML :

    $ kn service describe <service_name> -o yaml
  • Décrire un service au format JSON :

    $ kn service describe -YRFFGUNA nom_du_service> -o json
  • Imprimer uniquement l'URL du service :

    $ kn service describe <service_name> -o url

7.1.2. commandes du service kn en mode déconnecté

7.1.2.1. A propos du mode hors ligne de la CLI Knative

Lorsque vous exécutez les commandes kn service, les modifications se propagent immédiatement au cluster. Cependant, vous pouvez également exécuter les commandes kn service en mode déconnecté. Lorsque vous créez un service en mode déconnecté, aucune modification n'est apportée au cluster, mais le fichier descripteur de service est créé sur votre machine locale.

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.

Une fois le fichier descripteur créé, vous pouvez le modifier manuellement et le suivre dans un système de contrôle de version. Vous pouvez également propager les modifications au cluster en utilisant les commandes kn service create -f, kn service apply -f, ou oc apply -f sur les fichiers descripteurs.

Le mode hors ligne a plusieurs utilisations :

  • Vous pouvez modifier manuellement le fichier descripteur avant de l'utiliser pour effectuer des modifications sur le cluster.
  • Vous pouvez suivre localement le fichier descripteur d'un service dans un système de contrôle de version. Cela vous permet de réutiliser le fichier descripteur ailleurs que dans le cluster cible, par exemple dans des pipelines d'intégration continue (CI), des environnements de développement ou des démonstrations.
  • Vous pouvez examiner les fichiers descripteurs créés pour en savoir plus sur les services Knative. En particulier, vous pouvez voir comment le service résultant est influencé par les différents arguments passés à la commande kn.

Le mode hors ligne a ses avantages : il est rapide et ne nécessite pas de connexion au cluster. Cependant, le mode hors ligne ne dispose pas de la validation côté serveur. Par conséquent, vous ne pouvez pas, par exemple, vérifier que le nom du service est unique ou que l'image spécifiée peut être extraite.

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

7.1.3. kn commandes de conteneurs

Vous pouvez utiliser les commandes suivantes pour créer et gérer plusieurs conteneurs dans un service spec Knative.

7.1.3.1. Prise en charge des conteneurs multiples par le client Knative

Vous pouvez utiliser la commande kn container add pour imprimer les spécifications des conteneurs YAML sur la sortie standard. Cette commande est utile pour les cas d'utilisation multi-conteneurs car elle peut être utilisée avec d'autres drapeaux standard kn pour créer des définitions.

La commande kn container add accepte tous les drapeaux relatifs aux conteneurs qui peuvent être utilisés avec la commande kn service create. La commande kn container add peut également être enchaînée en utilisant les pipes UNIX (|) pour créer plusieurs définitions de conteneurs à la fois.

Exemple de commandes
  • Ajouter un conteneur à partir d'une image et l'imprimer sur la sortie standard :

    kn container add <container_name> --image <image_uri>

    Example command

    $ kn container add sidecar --image docker.io/example/sidecar

    Exemple de sortie

    containers:
    - image: docker.io/example/sidecar
      name: sidecar
      resources: {}

  • Enchaînez deux commandes kn container add, puis passez-les à une commande kn service create pour créer un service Knative avec deux conteneurs :

    $ kn container add <first_container_name> --image <image_uri> | \
    kn container add <second_container_name> --image <image_uri> | \
    kn service create <service_name> --image <image_uri> --extra-containers -

    --extra-containers - spécifie un cas particulier où kn lit l'entrée du tuyau au lieu d'un fichier YAML.

    Example command

    $ kn container add sidecar --image docker.io/example/sidecar:first | \
    kn container add second --image docker.io/example/sidecar:second | \
    kn service create my-service --image docker.io/example/my-app:latest --extra-containers -

    L'option --extra-containers peut également accepter un chemin vers un fichier YAML :

    $ kn service create <service_name> --image <image_uri> --extra-containers <filename>

    Example command

    $ kn service create my-service --image docker.io/example/my-app:latest --extra-containers my-extra-containers.yaml

7.1.4. commandes de domaine kn

Vous pouvez utiliser les commandes suivantes pour créer et gérer les mappages de domaines.

7.1.4.1. Créer un mappage de domaine personnalisé en utilisant le CLI Knative

Conditions préalables

  • L'opérateur OpenShift Serverless et Knative Serving sont installés sur votre cluster.
  • Vous avez créé un service ou une route Knative, et vous contrôlez un domaine personnalisé que vous souhaitez associer à ce CR.

    Note

    Votre domaine personnalisé doit pointer vers le DNS du cluster OpenShift Container Platform.

  • 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

  • Associe un domaine à un CR dans l'espace de noms actuel :

    kn domain create <domain_mapping_name> --ref <target_name>

    Example command

    $ kn domain create example-domain-map --ref example-service

    L'indicateur --ref spécifie un CR cible adressable pour le mappage de domaine.

    Si aucun préfixe n'est fourni lors de l'utilisation de l'indicateur --ref, il est supposé que la cible est un service Knative dans l'espace de noms actuel.

  • Associer un domaine à un service Knative dans un espace de noms spécifié :

    kn domain create <domain_mapping_name> --ref <ksvc:service_name:service_namespace>

    Example command

    $ kn domain create example-domain-map --ref ksvc:example-service:example-namespace

  • Associer un domaine à une route Knative :

    $ kn domain create <domain_mapping_name> --ref <kroute:route_name>

    Example command

    $ kn domain create example-domain-map --ref kroute:example-route

7.1.4.2. Gérer les mappages de domaines personnalisés en utilisant le CLI Knative

Après avoir créé une ressource personnalisée (CR) sur DomainMapping, vous pouvez dresser la liste des CR existantes, consulter les informations relatives à une CR existante, mettre à jour les CR ou les supprimer à l'aide de l'interface de programmation Knative (kn).

Conditions préalables

  • L'opérateur OpenShift Serverless et Knative Serving sont installés sur votre cluster.
  • Vous avez créé au moins un CR DomainMapping.
  • Vous avez installé l'outil 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

  • Liste des CR existants sur DomainMapping:

    $ kn domain list -n <domain_mapping_namespace>
  • Voir les détails d'un DomainMapping CR existant :

    $ kn domain describe <domain_mapping_name>
  • Mettre à jour un CR DomainMapping pour qu'il pointe vers une nouvelle cible :

    $ kn domain update --ref <target>
  • Supprimer un CR DomainMapping:

    kn domain delete <domain_mapping_name>
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.