第 1 章 Knative Serving CLI 命令
1.1. kn service 命令
您可以使用以下命令创建和管理 Knative 服务。
1.1.1. 使用 Knative CLI 创建无服务器应用程序
通过使用 Knative (kn
) CLI 创建无服务器应用程序,通过直接修改 YAML 文件来提供更精简且直观的用户界面。您可以使用 kn service create
命令创建基本无服务器应用程序。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建 Knative 服务:
$ kn service create <service-name> --image <image> --tag <tag-value>
其中:
-
--image
是应用的镜像的 URI。 --tag
是一个可选标志,可用于向利用服务创建的初始修订版本添加标签。示例命令
$ kn service create event-display \ --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
输出示例
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
-
1.1.2. 使用 Knative CLI 更新无服务器应用程序
在以递增方式构建服务时,您可以使用 kn service update
命令进行命令行上的互动会话。与 kn service apply
命令不同,在使用 kn service update
命令时,只需要指定您要更新的更改,而不是指定 Knative 服务的完整配置。
示例命令
通过添加新环境变量来更新服务:
$ kn service update <service_name> --env <key>=<value>
通过添加新端口来更新服务:
$ kn service update <service_name> --port 80
通过添加新的请求和限制参数来更新服务:
$ kn service update <service_name> --request cpu=500m --limit memory=1024Mi --limit cpu=1000m
为修订分配
latest
标签:$ kn service update <service_name> --tag <revision_name>=latest
为服务的最新
READY
修订将标签从testing
更新为staging
:$ kn service update <service_name> --untag testing --tag @latest=staging
将
test
标签添加到接收 10% 流量的修订,并将其它流量发送到服务的最新READY
修订:$ kn service update <service_name> --tag <revision_name>=test --traffic test=10,@latest=90
1.1.3. 应用服务声明
您可以使用 kn service apply
命令声明性配置 Knative 服务。如果服务不存在,则使用已更改的选项更新现有服务。
kn service apply
命令对 shell 脚本或持续集成管道特别有用,因为用户通常希望在单个命令中完全指定服务的状态来声明目标状态。
使用 kn service apply
时,必须为 Knative 服务提供完整的配置。这与 kn service update
命令不同,它只在命令中指定您要更新的选项。
示例命令
创建服务:
$ kn service apply <service_name> --image <image>
将环境变量添加到服务:
$ kn service apply <service_name> --image <image> --env <key>=<value>
从 JSON 或 YAML 文件中读取服务声明:
$ kn service apply <service_name> -f <filename>
1.1.4. 使用 Knative CLI 描述无服务器应用程序
您可以使用 kn service describe
命令来描述 Knative 服务。
示例命令
描述服务:
$ kn service describe --verbose <service_name>
--verbose
标志是可选的,但可以包含它以提供更详细的描述。常规输出和详细输出之间的区别在以下示例中显示:没有
--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
带有
--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
以 YAML 格式描述服务:
$ kn service describe <service_name> -o yaml
以 JSON 格式描述服务:
$ kn service describe <service_name> -o json
仅输出服务 URL:
$ kn service describe <service_name> -o url