使用 Node-RED 作为 Kubernetes 中的服务的 HTTP 端点路由

HTTP Endpoint routing using Node-RED as a service in Kubernetes

我想 运行 Node-RED 作为 Kubernetes 上的一项服务,以便能够使用 HTTP IN 节点构建自定义 API。目标是能够使用 Node-RED API.

将任意数量的不同流推送到任意容器 运行ning Node-RED

我已经尝试 运行ning Node-RED 作为具有 5 个副本的服务,并通过具有 HTTP 输入和 HTTP 输出节点的 UI 构建了一个流。当我尝试在 minikube ip 上使用 curl 访问服务时(例如 curl http://192.168.64.2:30001/test),如果负载均衡器恰好落在有流量的容器上,它只会 return 结果。否则,它将 return 错误 HTML。

关于我应该如何解决这个问题有什么建议吗?谢谢!

这是按预期工作的。如果您通过负载均衡器与 Node-RED 编辑器交互,您只是在编辑该实例上的流。

如果您有 5 个 Node-RED 实例,并且其中只有一个是 运行 定义了 HTTP 端点的流,那么对该端点的调用在 5 次中只会成功 1 次。

您需要确保所有实例都在其流程中定义了相同的端点。

有几种方法可以做到这一点,一些例子是:

  • 使用 Node-RED Admin API 将流依次推送到每个 Node-RED 实例。您可能需要通过每个实例的私有 IP 地址来执行此操作,以防止负载平衡器妨碍。
  • 使用自定义存储插件将流存储在数据库中,并让所有 Node-RED 实例加载相同的流。如果您更改它,您将需要重新启动实例以强制重新加载流。