【问题标题】:unable to create trigger from openwhisk kafka feed that listens to a Generic Kafka instance无法从侦听通用 Kafka 实例的 openwhisk kafka 提要创建触发器
【发布时间】:2017-11-07 01:43:23
【问题描述】:

我在 Ubuntu 16.04 桌面上进行了 openwhisk 本地安装。操作、触发器、规则和警报触发器正在工作。

我克隆了 git 存储库 https://github.com/apache/incubator-openwhisk-package-kafka 并依次运行以下命令: installCatalog.sh , gradlew :distDocker, installKafka.sh

然后我尝试创建一个触发器:

bin/wsk trigger create MyKafkaTrigger -f /messaging/kafkaFeed -p brokers "
[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true -
-insecure

我正在关注自述文件的这一部分:“创建一个侦听通用 Kafka 实例的触发器”

我正在重新使用作为 Openwhisk 安装的一部分创建的 Kafka 实例,并创建了一个名为“test”的主题 - 我可以使用 kafka 命令行工具发布/使用该主题。

触发器创建失败(删除触发器,说资源不存在)。

我观察到的一件事是在 /guest 下创建了以下包:

bin/wsk package list /guest --insecurepackages
/guest/messagingWeb                                                    
                     private
/guest/messaging                      

我确实把feed名字改成了/guest/messaging/kafkFeed,只有kafkaFeed等,但是结果略有不同:

bin/wsk trigger create MyKafkaTrigger -f /guest/messaging/kafkaFeed -p 
brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p 
isJSONData true --insecure

给出一个 JSON 输出说“错误”:“请求的资源不存在。”

bin/wsk trigger create MyKafkaTrigger -f /messaging/kafkaFeed -p brokers "
[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true -
-insecure

给予

ok: deleted trigger MyKafkaTrigger
error: Unable to create trigger 'MyKafkaTrigger': Unable to invoke trigger 
'MyKafkaTrigger' feed action '/messaging/kafkaFeed'; feed is not configured: 
Unable to invoke action 'kafkaFeed': The supplied authentication is not 
authorized to access this resource. (code 186)

寻求帮助

【问题讨论】:

  • 请注意,我只是打算使用没有 SASL 的通用 Kafka 实例。用户名/密码/kafka admin (REST) url。

标签: openwhisk serverless


【解决方案1】:

我按照开发指南启动并运行:https://github.com/apache/incubator-openwhisk-package-kafka/blob/master/devGuide.md

以下是我成功创建提要触发器的步骤:

  1. 通过运行记下身份验证密钥

    bin/wsk -i property get --auth
    
  2. 运行安装脚本

    ./installKafka.sh <authKey> <edgehost> <dburl> <dbprefix> <apihost>
    

注意authKey的值是第一步得到的值,其他参数的值见https://github.com/apache/incubator-openwhisk-package-kafka/blob/master/devGuide.md#install-actions

  1. 安装脚本成功完成后,验证是否安装了正确的软件包。您应该会看到 messagingmessagingWeb 包。例如

    bin/wsk -i package list /guest
    
    packages
    /guest/messagingWeb                                                    private
    /guest/messaging                                                       shared
    
  2. 现在验证 kafkaFeed 操作是否存在

    bin/wsk -i package get --summary /guest/messaging
    
    package /guest/messaging: Returns a result based on parameter endpoint
       (parameters: *endpoint)
     action /guest/messaging/kafkaProduce: Produce a message to a Kafka cluster
       (parameters: base64DecodeKey, base64DecodeValue, brokers, key, topic, value)
     feed   /guest/messaging/kafkaFeed: Feed to listen to Kafka messages
       (parameters: brokers, endpoint, isBinaryKey, isBinaryValue, isJSONData, topic)
    
  3. 现在,您可以通过将命名空间作为完整包名的一部分传递,或从包名中去掉前导 / 来创建触发器

    bin/wsk -i trigger create MyKafkaTrigger -f /guest/messaging/kafkaFeed -p brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true
    
    OR
    
    bin/wsk -i trigger create MyKafkaTrigger -f messaging/kafkaFeed -p brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true
    

【讨论】:

  • 我以前没有看过 devGuide。然而,上面的#3 和#4 可以按预期工作。所以我可能已经正确设置了 Feed。我错过了 docker 构建和运行步骤。所以现在我也遵循了这两个步骤。我在创建触发器时仍然遇到同样的错误。不过需要注意的是,我无法在 docker 中公开端口 80:5000,因为我处于本地设置中,其中来自 openwhisk 安装的 nginx 已经使用了端口 80。这可能是失败的原因吗?
  • 触发器的创建不依赖于提要提供者本身。即使触发器没有运行,您也应该能够创建触发器
  • 运行bin/wsk -i property get --namespace的结果是什么?
  • bin/wsk -i property get --namespace Whit namespace 但是错误信息 (JSON) 显示 namespace 'guest' "namespace": "guest", ... "error": { "error ": "请求的资源不存在。"}
  • 尝试bin/wsk -i property unset --namespace,然后再次尝试trigger create。如果这没有帮助,也许您可​​以在存储库中打开一个问题,我们可以在那里继续?
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2020-01-17
  • 2020-11-06
相关资源
最近更新 更多