4.3. Knative CLI 插件
Knative (kn
) CLI 支持使用插件,这允许您通过添加不是核心发行版本一部分的自定义命令和其他共享命令来扩展 kn
安装的功能。Knative (kn
) CLI 插件的使用方式与主 kn
功能相同。
目前,红帽支持 kn-source-kafka
插件和 kn-event
插件。
kn-event
插件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
4.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>
其中:
-
--field
标志将数据作为字段值对添加到事件中。您可以多次使用它。 -
--type
标志允许您指定指定事件类型的字符串。 -
--id
标志指定事件的 ID。 您可以将
json
或yaml
参数与--output
标志一起使用,以更改事件的输出格式。所有这些标记都是可选的。
构建简单的事件
$ kn event build -o yaml
结果为 YAML 格式
data: {} datacontenttype: application/json id: 81a402a2-9c29-4c27-b8ed-246a253c9e58 source: kn-event/v0.4.0 specversion: "1.0" time: "2021-10-15T10:42:57.713226203Z" type: dev.knative.cli.plugin.event.generic
构建示例事务事件
$ kn event build \ --field operation.type=local-wire-transfer \ --field operation.amount=2345.40 \ --field operation.from=87656231 \ --field operation.to=2344121 \ --field automated=true \ --field signature='FGzCPLvYWdEgsdpb3qXkaVp7Da0=' \ --type org.example.bank.bar \ --id $(head -c 10 < /dev/urandom | base64 -w 0) \ --output json
JSON 格式的结果事件
{ "specversion": "1.0", "id": "RjtL8UH66X+UJg==", "source": "kn-event/v0.4.0", "type": "org.example.bank.bar", "datacontenttype": "application/json", "time": "2021-10-15T10:43:23.113187943Z", "data": { "automated": true, "operation": { "amount": "2345.40", "from": 87656231, "to": 2344121, "type": "local-wire-transfer" }, "signature": "FGzCPLvYWdEgsdpb3qXkaVp7Da0=" } }
-
4.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>
其中:
-
--field
标志将数据作为字段值对添加到事件中。您可以多次使用它。 -
--type
标志允许您指定指定事件类型的字符串。 -
--id
标志指定事件的 ID。 -
如果您要将事件发送到公开的目的地,请使用
--to-url
标志指定 URL。 如果要将事件发送到集群内 Kubernetes 资源,请使用
--to
标志指定目的地。-
使用
<Kind>:<ApiVersion>:<name>
格式指定 Kubernetes 资源。
-
使用
--namespace
标志指定命名空间。如果省略,则会从当前上下文中获取命名空间。所有这些标志都是可选的,除了目的地规格外,您需要使用
--to-url
或--to
。以下示例显示向 URL 发送事件:
示例命令
$ kn event send \ --field player.id=6354aa60-ddb1-452e-8c13-24893667de20 \ --field player.game=2345 \ --field points=456 \ --type org.example.gaming.foo \ --to-url http://ce-api.foo.example.com/
以下示例显示了将事件发送到 in-cluster 资源:
示例命令
$ kn event send \ --type org.example.kn.ping \ --id $(uuidgen) \ --field event.type=test \ --field event.data=98765 \ --to Service:serving.knative.dev/v1:event-display
-