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évisionREADY
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évisionREADY
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.
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.
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
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 commandekn 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.
NoteVotre 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>