Knative CLI
Knative Functions、Serving 和 Eventing 的 CLI 命令概述
摘要
第 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>
$ kn service create <service-name> --image <image> --tag <tag-value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
--image是应用的镜像的 URI。 --tag是一个可选标志,可用于向利用服务创建的初始修订版本添加标签。示例命令
kn service create showcase \ --image quay.io/openshift-knative/showcase$ kn service create showcase \ --image quay.io/openshift-knative/showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
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> --env <key>=<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过添加新端口来更新服务:
kn service update <service_name> --port 80
$ kn service update <service_name> --port 80Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过添加新的请求和限制参数来更新服务:
kn service update <service_name> --request cpu=500m --limit memory=1024Mi --limit cpu=1000m
$ kn service update <service_name> --request cpu=500m --limit memory=1024Mi --limit cpu=1000mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为修订分配
latest标签:kn service update <service_name> --tag <revision_name>=latest
$ kn service update <service_name> --tag <revision_name>=latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为服务的最新
READY修订将标签从testing更新为staging:kn service update <service_name> --untag testing --tag @latest=staging
$ kn service update <service_name> --untag testing --tag @latest=stagingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
test标签添加到接收 10% 流量的修订,并将其它流量发送到服务的最新READY修订:kn service update <service_name> --tag <revision_name>=test --traffic test=10,@latest=90
$ kn service update <service_name> --tag <revision_name>=test --traffic test=10,@latest=90Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境变量添加到服务:
kn service apply <service_name> --image <image> --env <key>=<value>
$ kn service apply <service_name> --image <image> --env <key>=<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 JSON 或 YAML 文件中读取服务声明:
kn service apply <service_name> -f <filename>
$ kn service apply <service_name> -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.4. 使用 Knative CLI 描述无服务器应用程序 复制链接链接已复制到粘贴板!
您可以使用 kn service describe 命令来描述 Knative 服务。
示例命令
描述服务:
kn service describe --verbose <service_name>
$ kn service describe --verbose <service_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow --verbose标志是可选的,但可以包含它以提供更详细的描述。常规输出和详细输出之间的区别在以下示例中显示:没有
--verbose标记的输出示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有
--verbose标记的输出示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 YAML 格式描述服务:
kn service describe <service_name> -o yaml
$ kn service describe <service_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以 JSON 格式描述服务:
kn service describe <service_name> -o json
$ kn service describe <service_name> -o jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仅输出服务 URL:
kn service describe <service_name> -o url
$ kn service describe <service_name> -o urlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 处于离线模式的 kn service 命令 复制链接链接已复制到粘贴板!
1.2.1. 关于 Knative CLI 离线模式 复制链接链接已复制到粘贴板!
执行 kn service 命令时,更改会立即传播到集群。但是,作为替代方案,您可以在离线模式下执行 kn service 命令。当您以离线模式创建服务时,集群不会发生任何更改,而是在本地计算机上创建服务描述符文件。
Knative CLI 的离线模式只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
创建描述符文件后,您可以手动修改并在版本控制系统中跟踪该文件。您还可以使用 kn service create -f、kn service apply -f 或 oc apply -f 命令将更改传播到集群。
离线模式有几种用途:
- 在使用描述符文件对集群进行更改之前,您可以手动修改该文件。
- 您可以在本地跟踪版本控制系统中服务的描述符文件。这可让您在目标集群以外的位置重复使用描述符文件,例如在持续集成(CI)管道、开发环境或演示中。
-
您可以检查创建的描述符文件,以了解 Knative 服务的信息。特别是,您可以看到生成的服务如何受到传递给
kn命令的不同参数的影响。
离线模式有其优点:速度非常快,不需要连接到集群。但是,离线模式缺少服务器端验证。因此,您无法验证服务名称是否唯一,或者是否可以拉取指定镜像。
1.2.2. 使用离线模式创建服务 复制链接链接已复制到粘贴板!
您可以在离线模式下执行 kn service 命令,以便集群中不会发生任何更改,而是在本地机器上创建服务描述符文件。创建描述符文件后,您可以在向集群传播更改前修改该文件。
Knative CLI 的离线模式只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn) CLI。
流程
在离线模式下,创建一个本地 Knative 服务描述符文件:
kn service create showcase \ --image quay.io/openshift-knative/showcase \ --target ./ \ --namespace test$ kn service create showcase \ --image quay.io/openshift-knative/showcase \ --target ./ \ --namespace testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Service 'showcase' created in namespace 'test'.
Service 'showcase' created in namespace 'test'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow --target ./标志启用脱机模式,并将./指定为用于存储新目录树的目录。如果您没有指定现有目录,但使用文件名,如
--target my-service.yaml,则不会创建目录树。相反,当前目录中只创建服务描述符my-service.yaml文件。文件名可以具有
.yaml、.yml或.json扩展名。选择.json以 JSON 格式创建服务描述符文件。namespace test选项将新服务放在test命名空间中。如果不使用
--namespace,且您登录到 OpenShift Container Platform 集群,则会在当前命名空间中创建描述符文件。否则,描述符文件会在default命名空间中创建。
检查创建的目录结构:
tree ./
$ tree ./Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
--target指定的当前./目录包含新的test/目录,它在指定的命名空间后命名。 -
test/目录包含ksvc,它在资源类型后命名。 -
ksvc目录包含描述符文件showcase.yaml,根据指定的服务名称命名。
-
使用
检查生成的服务描述符文件:
cat test/ksvc/showcase.yaml
$ cat test/ksvc/showcase.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出新服务的信息:
kn service describe showcase --target ./ --namespace test
$ kn service describe showcase --target ./ --namespace testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --target ./选项指定包含命名空间子目录的目录结构的根目录。另外,您可以使用
--target选项直接指定 YAML 或 JSON 文件名。可接受的文件扩展包括.yaml、.yml和.json。--namespace选项指定命名空间,与kn通信包含所需服务描述符文件的子目录。如果不使用
--namespace,并且您登录到 OpenShift Container Platform 集群,kn会在以当前命名空间命名的子目录中搜索该服务。否则,kn在default/子目录中搜索。
使用服务描述符文件在集群中创建服务:
kn service create -f test/ksvc/showcase.yaml
$ kn service create -f test/ksvc/showcase.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. kn 容器命令 复制链接链接已复制到粘贴板!
您可以使用以下命令在 Knative 服务规格中创建和管理多个容器。
1.3.1. Knative 客户端多容器支持 复制链接链接已复制到粘贴板!
您可以使用 kn container add 命令将 YAML 容器 spec 打印到标准输出。此命令对多容器用例很有用,因为它可以与其他标准 kn 标志一起使用来创建定义。
kn container add 命令接受与容器相关的所有标志,它们都支持与 kn service create 命令搭配使用。kn container add 命令也可以使用 UNIX 管道 (|) 一次创建多个容器定义来串联。
示例命令
从镜像添加容器并将其打印到标准输出中:
kn container add <container_name> --image <image_uri>
$ kn container add <container_name> --image <image_uri>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
kn container add sidecar --image docker.io/example/sidecar
$ kn container add sidecar --image docker.io/example/sidecarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
containers: - image: docker.io/example/sidecar name: sidecar resources: {}containers: - image: docker.io/example/sidecar name: sidecar resources: {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将两个
kn container add命令链接在一起,然后将它们传递给kn service create命令创建带有两个容器的 Knative 服务: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 -
$ 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 -Copy to Clipboard Copied! Toggle word wrap Toggle overflow --extra-containers -指定一个特殊情况,kn读取管道输入,而不是 YAML 文件。示例命令
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 -
$ 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 -Copy to Clipboard Copied! Toggle word wrap Toggle overflow --extra-containers标志也可以接受到 YAML 文件的路径:kn service create <service_name> --image <image_uri> --extra-containers <filename>
$ kn service create <service_name> --image <image_uri> --extra-containers <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
kn service create my-service --image docker.io/example/my-app:latest --extra-containers my-extra-containers.yaml
$ kn service create my-service --image docker.io/example/my-app:latest --extra-containers my-extra-containers.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. kn 域命令 复制链接链接已复制到粘贴板!
您可以使用下列命令创建和管理域映射。
1.4.1. 使用 Knative CLI 创建自定义域映射 复制链接链接已复制到粘贴板!
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
您已创建了 Knative 服务或路由,并控制要映射到该 CR 的自定义域。
注意您的自定义域必须指向 OpenShift Container Platform 集群的 DNS。
-
已安装 Knative (
kn) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
将域映射到当前命名空间中的 CR:
kn domain create <domain_mapping_name> --ref <target_name>
$ kn domain create <domain_mapping_name> --ref <target_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
kn domain create example.com --ref showcase
$ kn domain create example.com --ref showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow --ref标志为域映射指定一个可寻址的目标 CR。如果使用
--ref标志时没有提供前缀,则会假定目标为当前命名空间中的 Knative 服务。将域映射到指定命名空间中的 Knative 服务:
kn domain create <domain_mapping_name> --ref <ksvc:service_name:service_namespace>
$ kn domain create <domain_mapping_name> --ref <ksvc:service_name:service_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
kn domain create example.com --ref ksvc:showcase:example-namespace
$ kn domain create example.com --ref ksvc:showcase:example-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将域映射到 Knative 路由:
kn domain create <domain_mapping_name> --ref <kroute:route_name>
$ kn domain create <domain_mapping_name> --ref <kroute:route_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
kn domain create example.com --ref kroute:example-route
$ kn domain create example.com --ref kroute:example-routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2. 使用 Knative CLI 管理自定义域映射 复制链接链接已复制到粘贴板!
创建 DomainMapping 自定义资源 (CR) 后,您可以使用 Knative (kn) CLI 列出现有 CR、查看现有 CR 的信息、更新 CR 或删除 CR。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
您至少已创建了一个
DomainMappingCR。 -
已安装 Knative (
kn) CLI 工具。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
列出现有的
DomainMappingCR:kn domain list -n <domain_mapping_namespace>
$ kn domain list -n <domain_mapping_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看现有
DomainMappingCR 的详情:kn domain describe <domain_mapping_name>
$ kn domain describe <domain_mapping_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
DomainMappingCR 以指向新目标:kn domain update --ref <target>
$ kn domain update --ref <target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
DomainMappingCR:kn domain delete <domain_mapping_name>
$ kn domain delete <domain_mapping_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 配置 Knative CLI 复制链接链接已复制到粘贴板!
您可以通过创建 config.yaml 配置文件来自定义 Knative (kn) CLI 设置。您可以使用 --config 标志来提供此配置,否则会从默认位置提取配置。默认配置位置符合 XDG Base Directory 规格,对于 UNIX 系统和 Windows 系统有所不同。
对于 UNIX 系统:
-
如果设置了
XDG_CONFIG_HOME环境变量,Knative (kn) CLI 查找的默认配置位置为$XDG_CONFIG_HOME/kn。 -
如果没有设置
XDG_CONFIG_HOME环境变量,Knative (kn) CLI 会在$HOME/.config/kn/config.yaml的用户主目录中查找配置。
对于 Windows 系统,默认的 Knative (kn) CLI 配置位置为 %APPDATA%\kn。
配置文件示例
- 1
- 指定 Knative (
kn) CLI 是否应该在PATH环境变量中查找插件。这是一个布尔值配置选项。默认值为false。 - 2
- 指定 Knative (
kn) CLI 查找插件的目录。默认路径取决于操作系统,如前面所述。这可以是用户可见的任何目录。 - 3
sink-mappingsspec 定义了在 Knative (kn) CLI 命令中使用--sink标志时使用的 Kubernetes 可寻址资源。- 4
- 您用来描述接收器(sink)的前缀。
svc(用于服务)、channel和broker是 Knative (kn) CLI 中预定义的前缀。 - 5
- Kubernetes 资源的 API 组。
- 6
- Kubernetes 资源的版本。
- 7
- Kubernetes 资源类型的复数名称。例如,
services或brokers。
第 3 章 Knative CLI 插件 复制链接链接已复制到粘贴板!
Knative (kn) CLI 支持使用插件,这允许您通过添加不是核心发行版本一部分的自定义命令和其他共享命令来扩展 kn 安装的功能。Knative (kn) CLI 插件的使用方式与主 kn 功能相同。
目前,红帽支持 kn-source-kafka 插件和 kn-event 插件。
kn-event 插件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
3.1. 使用 kn-event 插件构建事件 复制链接链接已复制到粘贴板!
您可以使用 kn event build 命令的 builder 接口来构建事件。然后,您可以稍后发送该事件或在另一个上下文中使用它。
先决条件
-
已安装 Knative (
kn) CLI。
流程
构建事件:
kn event build --field <field-name>=<value> --type <type-name> --id <id> --output <format>
$ kn event build --field <field-name>=<value> --type <type-name> --id <id> --output <format>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
--field标志将数据作为字段值对添加到事件中。您可以多次使用它。 -
--type标志允许您指定指定事件类型的字符串。 -
--id标志指定事件的 ID。 您可以将
json或yaml参数与--output标志一起使用,以更改事件的输出格式。所有这些标记都是可选的。
构建简单的事件
kn event build -o yaml
$ kn event build -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 结果为 YAML 格式
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 构建示例事务事件
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 格式的结果事件
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
3.2. 使用 kn-event 插件发送事件 复制链接链接已复制到粘贴板!
您可以使用 kn event send 命令来发送事件。事件可以发送到公开的地址,或发送到集群中的可寻址资源,如 Kubernetes 服务,以及 Knative 服务、代理和频道。命令使用与 kn event build 命令相同的 builder 接口。
先决条件
-
已安装 Knative (
kn) CLI。
流程
发送事件:
kn event send --field <field-name>=<value> --type <type-name> --id <id> --to-url <url> --to <cluster-resource> --namespace <namespace>
$ kn event send --field <field-name>=<value> --type <type-name> --id <id> --to-url <url> --to <cluster-resource> --namespace <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
--field标志将数据作为字段值对添加到事件中。您可以多次使用它。 -
--type标志允许您指定指定事件类型的字符串。 -
--id标志指定事件的 ID。 -
如果您要将事件发送到公开的目的地,请使用
--to-url标志指定 URL。 如果要将事件发送到集群内 Kubernetes 资源,请使用
--to标志指定目的地。-
使用
<Kind>:<ApiVersion>:<name>格式指定 Kubernetes 资源。
-
使用
--namespace标志指定命名空间。如果省略,则会从当前上下文中获取命名空间。所有这些标志都是可选的,除了目的地规格外,您需要使用
--to-url或--to。以下示例显示向 URL 发送事件:
示例命令
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例显示了将事件发送到 in-cluster 资源:
示例命令
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
第 4 章 Knative Eventing CLI 命令 复制链接链接已复制到粘贴板!
4.1. kn source 命令 复制链接链接已复制到粘贴板!
您可以使用以下命令列出、创建和管理 Knative 事件源。
4.1.1. 使用 Knative CLI 列出可用事件源类型 复制链接链接已复制到粘贴板!
您可以使用 kn source list-types CLI 命令列出集群中创建和使用的事件源类型。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Eventing。
-
已安装 Knative (
kn) CLI。
流程
列出终端中的可用事件源类型:
kn source list-types
$ kn source list-typesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
TYPE NAME DESCRIPTION ApiServerSource apiserversources.sources.knative.dev Watch and send Kubernetes API events to a sink PingSource pingsources.sources.knative.dev Periodically send ping events to a sink SinkBinding sinkbindings.sources.knative.dev Binding for connecting a PodSpecable to a sink
TYPE NAME DESCRIPTION ApiServerSource apiserversources.sources.knative.dev Watch and send Kubernetes API events to a sink PingSource pingsources.sources.knative.dev Periodically send ping events to a sink SinkBinding sinkbindings.sources.knative.dev Binding for connecting a PodSpecable to a sinkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:在 OpenShift Container Platform 中,您也可以使用 YAML 格式列出可用事件源类型:
kn source list-types -o yaml
$ kn source list-types -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.2. Knative CLI sink 标记 复制链接链接已复制到粘贴板!
当使用 Knative (kn) CLI 创建事件源时,您可以使用 --sink 标志指定事件从该资源发送到的接收器。sink 可以是任何可寻址或可调用的资源,可以从其他资源接收传入的事件。
以下示例创建使用服务 http://event-display.svc.cluster.local 的接收器绑定作为接收器:
使用 sink 标记的命令示例
kn source binding create bind-heartbeat \ --namespace sinkbinding-example \ --subject "Job:batch/v1:app=heartbeat-cron" \ --sink http://event-display.svc.cluster.local \ --ce-override "sink=bound"
$ kn source binding create bind-heartbeat \
--namespace sinkbinding-example \
--subject "Job:batch/v1:app=heartbeat-cron" \
--sink http://event-display.svc.cluster.local \
--ce-override "sink=bound"
- 1
http://event-display.svc.cluster.local中的svc确定接收器是一个 Knative 服务。其他默认的接收器前缀包括channel和broker。
4.1.3. 使用 Knative CLI 创建和管理容器源 复制链接链接已复制到粘贴板!
您可以使用 kn source container 命令来使用 Knative (kn) 创建和管理容器源。使用 Knative CLI 创建事件源提供了比直接修改 YAML 文件更精简且直观的用户界面。
创建容器源
kn source container create <container_source_name> --image <image_uri> --sink <sink>
$ kn source container create <container_source_name> --image <image_uri> --sink <sink>
删除容器源
kn source container delete <container_source_name>
$ kn source container delete <container_source_name>
描述容器源
kn source container describe <container_source_name>
$ kn source container describe <container_source_name>
列出现有容器源
kn source container list
$ kn source container list
以 YAML 格式列出现有容器源
kn source container list -o yaml
$ kn source container list -o yaml
更新容器源
此命令为现有容器源更新镜像 URI:
kn source container update <container_source_name> --image <image_uri>
$ kn source container update <container_source_name> --image <image_uri>
4.1.4. 使用 Knative CLI 创建 API 服务器源 复制链接链接已复制到粘贴板!
您可以使用 kn source apiserver create 命令,使用 kn CLI 创建 API 服务器源。使用 kn CLI 创建 API 服务器源可提供比直接修改 YAML 文件更精简且直观的用户界面。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Eventing。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI(
oc)。 -
已安装 Knative (
kn) CLI。
如果要重新使用现有服务帐户,您可以修改现有的 ServiceAccount 资源,使其包含所需的权限,而不是创建新资源。
以 YAML 文件形式,为事件源创建服务帐户、角色和角色绑定:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 YAML 文件:
oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建具有事件 sink 的 API 服务器源。在以下示例中,sink 是一个代理:
kn source apiserver create <event_source_name> --sink broker:<broker_name> --resource "event:v1" --service-account <service_account_name> --mode Resource
$ kn source apiserver create <event_source_name> --sink broker:<broker_name> --resource "event:v1" --service-account <service_account_name> --mode ResourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要检查 API 服务器源是否已正确设置,请创建一个 Knative 服务,在日志中转储传入的信息:
kn service create event-display --image quay.io/openshift-knative/showcase
$ kn service create event-display --image quay.io/openshift-knative/showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用代理作为事件 sink,请创建一个触发器将事件从
default代理过滤到服务:kn trigger create <trigger_name> --sink ksvc:event-display
$ kn trigger create <trigger_name> --sink ksvc:event-displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在 default 命名空间中启动 pod 来创建事件:
oc create deployment event-origin --image quay.io/openshift-knative/showcase
$ oc create deployment event-origin --image quay.io/openshift-knative/showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查以下命令生成的输出来检查是否正确映射了控制器:
kn source apiserver describe <source_name>
$ kn source apiserver describe <source_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 Kubernetes 事件是否已发送到 Knative,请查看 event-display 日志或使用 Web 浏览器查看事件。
要在网页浏览器中查看事件,请使用以下命令返回的链接:
kn service describe event-display -o url
$ kn service describe event-display -o urlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 图 4.1. 浏览器页面示例
另外,要在终端中查看日志,请输入以下命令来查看 pod 的 event-display 日志:
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除 API 服务器源
删除触发器:
kn trigger delete <trigger_name>
$ kn trigger delete <trigger_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除事件源:
kn source apiserver delete <source_name>
$ kn source apiserver delete <source_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除服务帐户、集群角色和集群绑定:
oc delete -f authentication.yaml
$ oc delete -f authentication.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.5. 使用 Knative CLI 创建 ping 源 复制链接链接已复制到粘贴板!
您可以使用 kn source ping create 命令,通过 Knative (kn) CLI 创建 ping 源。使用 Knative CLI 创建事件源提供了比直接修改 YAML 文件更精简且直观的用户界面。
先决条件
- 在集群中安装了 OpenShift Serverless Operator、Knative Serving 和 Knative Eventing。
-
已安装 Knative (
kn) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
可选: 如果要使用此流程验证步骤,请安装 OpenShift CLI (
oc) 。
流程
要验证 ping 源是否可以工作,请创建一个简单的 Knative 服务,在服务日志中转储传入的信息:
kn service create event-display \ --image quay.io/openshift-knative/showcase$ kn service create event-display \ --image quay.io/openshift-knative/showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于您要请求的每一组 ping 事件,请在与事件消费者相同的命名空间中创建一个 ping 源:
kn source ping create test-ping-source \ --schedule "*/2 * * * *" \ --data '{"message": "Hello world!"}' \ --sink ksvc:event-display$ kn source ping create test-ping-source \ --schedule "*/2 * * * *" \ --data '{"message": "Hello world!"}' \ --sink ksvc:event-displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令并检查输出,检查是否正确映射了控制器:
kn source ping describe test-ping-source
$ kn source ping describe test-ping-sourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
您可以通过查看 sink pod 的日志来验证 Kubernetes 事件是否已发送到 Knative 事件。
默认情况下,如果在 60 秒内都没有流量,Knative 服务会终止其 Pod。本指南中演示的示例创建了一个 ping 源,每 2 分钟发送一条消息,因此每个消息都应该在新创建的 pod 中观察到。
查看新创建的 pod:
watch oc get pods
$ watch oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Ctrl+C 取消查看 pod,然后查看所创建 pod 的日志:
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除 ping 源
删除 ping 源:
kn delete pingsources.sources.knative.dev <ping_source_name>
$ kn delete pingsources.sources.knative.dev <ping_source_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.6. 使用 Knative CLI 创建 Apache Kafka 事件源 复制链接链接已复制到粘贴板!
您可以使用 kn source kafka create 命令,使用 Knative (kn) CLI 创建 Kafka 源。使用 Knative CLI 创建事件源提供了比直接修改 YAML 文件更精简且直观的用户界面。
先决条件
-
OpenShift Serverless Operator、Knative Eventing、Knative Serving 和
KnativeKafka自定义资源(CR)已安装在集群中。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您可以访问 Red Hat AMQ Streams(Kafka)集群,该集群会生成您要导入的 Kafka 信息。
-
已安装 Knative (
kn) CLI。 -
可选:如果您想要使用此流程中的验证步骤,已安装 OpenShift CLI (
oc)。
流程
要验证 Kafka 事件源是否可以工作,请创建一个 Knative 服务,在服务日志中转储传入的事件:
kn service create event-display \ --image quay.io/openshift-knative/showcase$ kn service create event-display \ --image quay.io/openshift-knative/showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
KafkaSourceCR:kn source kafka create <kafka_source_name> \ --servers <cluster_kafka_bootstrap>.kafka.svc:9092 \ --topics <topic_name> --consumergroup my-consumer-group \ --sink event-display$ kn source kafka create <kafka_source_name> \ --servers <cluster_kafka_bootstrap>.kafka.svc:9092 \ --topics <topic_name> --consumergroup my-consumer-group \ --sink event-displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将此命令中的占位符值替换为源名称、引导服务器和主题的值。
--servers、--topics和--consumergroup选项指定到 Kafka 集群的连接参数。--consumergroup选项是可选的。可选:查看您创建的
KafkaSourceCR 的详情:kn source kafka describe <kafka_source_name>
$ kn source kafka describe <kafka_source_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
触发 Kafka 实例将信息发送到主题:
oc -n kafka run kafka-producer \ -ti --image=quay.io/strimzi/kafka:latest-kafka-2.7.0 --rm=true \ --restart=Never -- bin/kafka-console-producer.sh \ --broker-list <cluster_kafka_bootstrap>:9092 --topic my-topic$ oc -n kafka run kafka-producer \ -ti --image=quay.io/strimzi/kafka:latest-kafka-2.7.0 --rm=true \ --restart=Never -- bin/kafka-console-producer.sh \ --broker-list <cluster_kafka_bootstrap>:9092 --topic my-topicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在提示符后输入信息。这个命令假设:
-
Kafka 集群安装在
kafka命名空间中。 -
KafkaSource对象已被配置为使用my-topic主题。
-
Kafka 集群安装在
通过查看日志来验证消息是否显示:
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 Knative Functions CLI 命令 复制链接链接已复制到粘贴板!
5.1. kn 功能命令 复制链接链接已复制到粘贴板!
5.1.1. 使用 Knative CLI 创建功能 复制链接链接已复制到粘贴板!
您可以为命令行上的标志指定功能的路径、运行时、模板和镜像 registry,或者使用 -c 标志在终端中启动交互式体验。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn) CLI。
流程
创建功能项目:
kn func create -r <repository> -l <runtime> -t <template> <path>
$ kn func create -r <repository> -l <runtime> -t <template> <path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可接受的运行时值包括
quarkus、node、typescript、go、python、springboot和rust。 可接受的模板值包括
http和cloudevents。示例命令
kn func create -l typescript -t cloudevents examplefunc
$ kn func create -l typescript -t cloudevents examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Created typescript function in /home/user/demo/examplefunc
Created typescript function in /home/user/demo/examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以指定包含自定义模板的存储库。
示例命令
kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
$ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Created node function in /home/user/demo/examplefunc
Created node function in /home/user/demo/examplefuncCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
可接受的运行时值包括
5.1.2. 在本地运行一个函数 复制链接链接已复制到粘贴板!
您可以使用 kn func run 命令在当前目录中本地运行函数,或者在 --path 标志指定的目录中运行。如果您运行的函数之前没有被构建,或者项目文件自上次构建以来已修改过,kn func run 命令将在运行它前构建该函数。
在当前目录中运行函数的命令示例
kn func run
$ kn func run
在指定为路径的目录中运行函数的示例
kn func run --path=<directory_path>
$ kn func run --path=<directory_path>
您也可以在运行该函数前强制重建现有镜像,即使项目文件没有更改项目文件,则使用 --build 标志:
使用 build 标记的 run 命令示例
kn func run --build
$ kn func run --build
如果将 build 标志设置为 false,这将禁用构建镜像,并使用之前构建的镜像运行该功能:
使用 build 标记的 run 命令示例
kn func run --build=false
$ kn func run --build=false
您可以使用 help 命令了解更多有关 kn func run 命令选项的信息:
构建 help 命令
kn func help run
$ kn func help run
5.1.3. 构建函数 复制链接链接已复制到粘贴板!
在运行功能前,您必须构建 function 项目。如果使用 kn func run 命令,则该函数会自动构建。但是,您可以使用 kn func build 命令在不运行的情况下构建函数,这对于高级用户或调试场景非常有用。
kn func build 命令创建可在您的计算机或 OpenShift Container Platform 集群中运行的 OCI 容器镜像。此命令使用功能项目名称和镜像 registry 名称为您的功能构建完全限定镜像名称。
5.1.3.1. 镜像容器类型 复制链接链接已复制到粘贴板!
默认情况下,kn func build 使用 Red Hat Source-to-Image (S2I) 技术创建一个容器镜像。
使用 Red Hat Source-to-Image (S2I) 的 build 命令示例.
kn func build
$ kn func build
5.1.3.2. 镜像 registry 类型 复制链接链接已复制到粘贴板!
OpenShift Container Registry 默认用作存储功能镜像的镜像 registry。
使用 OpenShift Container Registry 的 build 命令示例
kn func build
$ kn func build
输出示例
Building function image Function image has been built, image: registry.redhat.io/example/example-function:latest
Building function image
Function image has been built, image: registry.redhat.io/example/example-function:latest
您可以使用 --registry 标志覆盖使用 OpenShift Container Registry 作为默认镜像 registry:
build 命令覆盖 OpenShift Container Registry 以使用 quay.io
kn func build --registry quay.io/username
$ kn func build --registry quay.io/username
输出示例
Building function image Function image has been built, image: quay.io/username/example-function:latest
Building function image
Function image has been built, image: quay.io/username/example-function:latest
5.1.3.3. push 标记 复制链接链接已复制到粘贴板!
您可以将 --push 标志添加到 kn func build 命令中,以便在成功构建后自动推送功能镜像:
使用 OpenShift Container Registry 的 build 命令示例
kn func build --push
$ kn func build --push
5.1.3.4. help 命令 复制链接链接已复制到粘贴板!
您可以使用 help 命令了解更多有关 kn func build 命令选项的信息:
构建 help 命令
kn func help build
$ kn func help build
5.1.4. 部署功能 复制链接链接已复制到粘贴板!
您可以使用 kn func deploy 命令将功能部署到集群中,作为 Knative 服务。如果已经部署了目标功能,则会使用推送到容器镜像 registry 的新容器镜像进行更新,并更新 Knative 服务。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您必须已创建并初始化要部署的功能。
流程
部署功能:
kn func deploy [-n <namespace> -p <path> -i <image>]
$ kn func deploy [-n <namespace> -p <path> -i <image>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Function deployed at: http://func.example.com
Function deployed at: http://func.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果没有指定
namespace,则该函数部署到当前命名空间中。 -
此函数从当前目录中部署,除非指定了
path。 - Knative 服务名称派生自项目名称,无法使用此命令进行更改。
-
如果没有指定
您可以使用 Developer 视角的 +Add 视图中的 Import from Git 或 Create Serverless Function 使用 Git 存储库 URL 创建无服务器功能。
5.1.5. 列出现有功能 复制链接链接已复制到粘贴板!
您可以使用 kn func list 列出现有功能。如果要列出部署为 Knative 服务的功能,也可以使用 kn service list。
流程
列出现有功能:
kn func list [-n <namespace> -p <path>]
$ kn func list [-n <namespace> -p <path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME NAMESPACE RUNTIME URL READY example-function default node http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com True
NAME NAMESPACE RUNTIME URL READY example-function default node http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出部署为 Knative 服务的功能:
kn service list -n <namespace>
$ kn service list -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME URL LATEST AGE CONDITIONS READY REASON example-function http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com example-function-gzl4c 16m 3 OK / 3 True
NAME URL LATEST AGE CONDITIONS READY REASON example-function http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com example-function-gzl4c 16m 3 OK / 3 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.6. 描述函数 复制链接链接已复制到粘贴板!
kn func info 命令输出有关已部署功能的信息,如功能名称、镜像、命名空间、Knative 服务信息、路由信息和事件订阅。
流程
描述函数:
kn func info [-f <format> -n <namespace> -p <path>]
$ kn func info [-f <format> -n <namespace> -p <path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
kn func info -p function/example-function
$ kn func info -p function/example-functionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.7. 使用测试事件调用部署的功能 复制链接链接已复制到粘贴板!
您可以使用 kn func invoke CLI 命令发送测试请求,在本地或 OpenShift Container Platform 集群中调用功能。您可以使用此命令测试功能是否正常工作并且能够正确接收事件。本地调用函数可用于在功能开发期间进行快速测试。在测试与生产环境更接近的测试时,在集群中调用函数非常有用。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您必须已部署了要调用的功能。
流程
调用函数:
kn func invoke
$ kn func invokeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
kn func invoke命令仅在当前运行本地容器镜像时或在集群中部署功能时才有效。 -
kn func invoke命令默认在本地目录上执行,并假定此目录是一个功能项目。
-
5.1.7.1. kn func 调用可选参数 复制链接链接已复制到粘贴板!
您可以使用以下 kn func invoke CL 命令标记为请求指定可选参数。
| 标记 | 描述 |
|---|---|
|
|
指定调用函数的目标实例,如 |
|
|
指定消息的格式,如 |
|
| 指定请求的唯一字符串标识符。 |
|
| 指定集群上的命名空间。 |
|
|
指定请求的发件人名称。这与 CloudEvent |
|
|
指定请求类型,例如 |
|
|
指定请求的内容。对于 CloudEvent 请求,这是 CloudEvent |
|
| 指定包含要发送数据的本地文件的路径。 |
|
| 指定请求的 MIME 内容类型。 |
|
| 指定项目目录的路径。 |
|
| 启用系统提示,以交互方式确认所有选项。 |
|
| 启用打印详细输出。 |
|
|
输出有关使用 |
5.1.7.1.1. 主要参数 复制链接链接已复制到粘贴板!
以下参数定义 kn func invoke 命令的主要属性:
- 事件目标 (
-t,--target) -
调用函数的目标实例。接受
local值用于本地部署的函数、remote值用于远程部署函数,或一个 URL 用于一个任意的端点。如果没有指定目标,则默认为local。 - 事件消息格式 (
-f,--format) -
事件的消息格式,如
http或cloudevent。默认为创建函数时使用的模板格式。 - 事件类型 (
--type) -
发送的事件类型。您可以查找有关各个事件制作者文档中设置的
type参数的信息。例如,API 服务器源可能会将生成的事件的type参数设置为dev.knative.apiserver.resource.update。 - 事件源 (
--source) -
生成该事件的唯一事件源。这可能是事件源的 URI,如
https://10.96.0.1/或事件源的名称。 - 事件 ID (
--id) - 由事件制作者创建的随机唯一 ID。
- 事件数据 (
--data) 允许您为
kn func invoke命令发送的事件指定data值。例如,您可以指定一个--data值,如"Hello World",以便事件包含此数据字符串。默认情况下,kn func invoke创建的事件中不包含任何数据。注意已部署到集群的功能可以对现有事件源的事件响应,该源提供属性(如
source和type)的值。这些事件通常具有 JSON 格式的data值,用于捕获事件的特定域上下文。通过使用本文档中介绍的 CLI 标志,开发人员可以模拟这些事件以进行本地测试。您还可以使用
--file标志发送事件数据,以提供包含事件数据的本地文件。在这种情况下,使用--content-type指定内容类型。- 数据内容类型 (
--content-type) -
如果您使用
--data标志为事件添加数据,您可以使用--content-type标志指定事件传输的数据类型。在上例中,数据是纯文本,因此您可以指定kn func call --data "Hello world!" --content-type "text/plain"。
5.1.7.1.2. 示例命令 复制链接链接已复制到粘贴板!
这是 kn func invoke 命令的一般调用:
kn func invoke --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> --id <event_ID> --format <format> --namespace <namespace>
$ kn func invoke --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> --id <event_ID> --format <format> --namespace <namespace>
例如,要发送 "Hello world!" 事件,您可以运行:
kn func invoke --type ping --source example-ping --data "Hello world!" --content-type "text/plain" --id example-ID --format http --namespace my-ns
$ kn func invoke --type ping --source example-ping --data "Hello world!" --content-type "text/plain" --id example-ID --format http --namespace my-ns
5.1.7.1.2.1. 使用数据指定文件 复制链接链接已复制到粘贴板!
要指定磁盘上包含事件数据的文件,请使用 --file 和 --content-type 标志:
kn func invoke --file <path> --content-type <content-type>
$ kn func invoke --file <path> --content-type <content-type>
例如,要发送存储在 test.json 文件中的 JSON 数据,请使用以下命令:
kn func invoke --file ./test.json --content-type application/json
$ kn func invoke --file ./test.json --content-type application/json
5.1.7.1.2.2. 指定功能项目 复制链接链接已复制到粘贴板!
您可以使用 --path 标志指定到功能项目的路径:
kn func invoke --path <path_to_function>
$ kn func invoke --path <path_to_function>
例如,要使用位于 ./example/example-function 目录中的功能项目,请使用以下命令:
kn func invoke --path ./example/example-function
$ kn func invoke --path ./example/example-function
5.1.7.1.2.3. 指定部署目标功能的位置 复制链接链接已复制到粘贴板!
默认情况下,kn func invoke 作为功能本地部署的目标:
kn func invoke
$ kn func invoke
要使用不同的部署,请使用 --target 标志:
kn func invoke --target <target>
$ kn func invoke --target <target>
例如,要使用在集群中部署的功能,请使用 --target remote 标志:
kn func invoke --target remote
$ kn func invoke --target remote
要使用在任意 URL 中部署的功能,请使用 --target <URL> 标志:
kn func invoke --target "https://my-event-broker.example.com"
$ kn func invoke --target "https://my-event-broker.example.com"
您可以明确以本地部署为目标。在这种情况下,如果这个功能没有在本地运行,命令会失败:
kn func invoke --target local
$ kn func invoke --target local
5.1.8. 删除函数 复制链接链接已复制到粘贴板!
您可以使用 kn func delete 命令删除功能。当不再需要某个函数时,这很有用,并有助于在集群中保存资源。
流程
删除函数:
kn func delete [<function_name> -n <namespace> -p <path>]
$ kn func delete [<function_name> -n <namespace> -p <path>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果没有指定要删除的功能的名称或路径,则会搜索当前目录以查找用于决定要删除的功能的
func.yaml文件。 -
如果没有指定命名空间,则默认为
func.yaml文件中的namespace值。
-
如果没有指定要删除的功能的名称或路径,则会搜索当前目录以查找用于决定要删除的功能的