问题标签 [krakend]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
155 浏览

api - Krakend 正在屏蔽客户端 IP 地址

我有一个 python 程序,它使用 request.client.host 标头和快速 API 获取客户端 IP。该程序在 kubernetes pod(ip-pod) 上运行。我有另一个使用 KrakenD 实现的网关 API,它在 kubernetes 集群的另一个 pod 上运行。两者(ip-pod 和 KrakenD)的 Kubernetes yaml 文件都具有externalTrafficPolicy: Local 我无法检索用户的真实 IP 的属性,这可能是因为 KrakenD 不允许真实 IP 访问 ip-pod。我已经通过使用将 ip-pod 暴露在互联网上来测试该程序type: LoadBalancer,这样它就可以提供正确的客户端 IP。但是当我使用 KrakenD 网关时,IP 是不同的(私有 IP)。

0 投票
1 回答
33 浏览

krakend - 未找到 Krakend 生成命令

我正在使用 krakend 版本的1.4.0文档说我可以运行生成命令来获取 OpenAPI、邮递员或配置图。

当我尝试运行任何这些命令时。我明白了 Error: unknown command "generate" for "krakend"

我需要做一些不同的事情来启用generate命令吗?这是生成器命令的链接。https://www.krakend.io/docs/enterprise/commands/openapi/

0 投票
2 回答
162 浏览

docker - 如何在 docker-compose 中解析 Consul 域

我正在使用一组使用 Java + Spring Boot 开发的微服务,并希望在 Docker 组合中使用 Consul 和 KrakenD。

我的 docker-compose 文件如下所示:

KrakenD 配置文件如下所示:

在没有 docker 的情况下,主机google-search-service.service.consul是通过我的 macOS 中的解析器解析的,但是似乎无法在 docker-compose 网络中解析,因此 Krakend 无法将 API 调用重定向到微服务因为找不到领事。

我想知道是否有办法在 docker-compose 中配置解析器或允许 KrakendD 以任何其他方式找到 Consul。

提前谢谢

0 投票
1 回答
109 浏览

krakend - 为什么通过 KrakenD API 网关访问 API 端点时返回 HTTP 500?

问题总结:

我有一个在 192.168.23.231 上运行的 k3s 实例。端口 30001 映射到我构建的 REST API 应用程序。端口 31166 映射到 Krakend。当我在浏览器中输入http://192.168.23.231:31166/datamanager/hello时,我收到一条 HTTP 500 错误消息,指出“http://192.168.23.231 当前无法处理此请求”。

如果我浏览到http://192.168.23.231:30001/hello,我会按预期得到“Hello World”,所以我知道 REST API 运行正常。我的期望是 Krakend 端点会返回同样的东西,但事实并非如此。

这是我的 krakend.json 配置文件的摘录,显示了端点配置:

除非我弄错了,否则192.168.23.231:31166/datamanager/hello应该datamanager.my-test.svc.cluster.local:4567/hello由 Krakend 路由到。

我试图用谷歌搜索,但结果似乎与我的问题不符。

0 投票
0 回答
18 浏览

python - 当从 KrakenD 网关后面访问整个 Flask API 时,Flask WTForm 操作将表单数据从一个烧瓶端点重新路由到另一个端点

所以我的 Flask 应用程序中有 2 条路线

  • <host_name>/oauth/leg1
  • <host_name>/oauth/leg2

/oauth/leg1路由验证它的输入时,它调用 render_form() 来渲染一个表单,并form-action重新路由到/oauth/leg2路由。

表单 html 看起来像这样

表单动作中的url_for调用正确地呈现了oauth/leg2

这一切都很好。单击我的表单上的提交会将表单数据发送到oauth/leg2路由,一切都会按需要进行。

现在,我也使用 KarkenD API 网关。网关的 URL 为api.dev.tech/connect/v1. 所以主机名是api.dev.tech,但另外,我希望我的 Flask API 只能通过connect/v1我的网关路径访问。

所以我的 KrakenD 网关设置是这样的,

api.dev.tech/connect/v1/oauth/leg1被转发到<flask_app>/oauth/leg1 api.dev.tech/connect/v1/oauth/leg2被转发到<flask_app>/oauth/leg2

我的问题

当我访问api.dev.tech/connect/v1/oauth/leg1时,它会正确验证我的请求并呈现表单。单击我的表单上的提交后,action评估结果为oauth/leg2,并且此路径附加到主机 ( api.dev.tech) 因此表单输入数据被发送到api.dev.tech/oauth/leg2-> 这不是有效的网关路径,因此失败。

表单输入数据应该发送到api.dev.tech//oauth/leg2`

我不知道如何有条件地将这个connect/v1路径插入到表单操作 URL 中(connect/v1 应该只在请求通过 KrakenD 发送时插入,而不是在请求正常直接发送到 Flask 主机时插入)

我试过的

添加了呈现完整路径的_external选项url_for- 这反而开始呈现我的 Kubernetes 服务名称(我的烧瓶应用程序和 krakend 网关在 kubernetes 上运行)

可能的解决方案

  • 始终connect/v1在我的表单操作中添加,然后我的 API 只能通过网关间接访问,但不能直接使用。
  • 有一个忽略 connect/v1 的 KrakenD 设置,因此api.dev.tech/oauth/leg2被转发到<flask_app>/oauth/leg2. 我不喜欢这样,因为现在我的 KrakenD 配置中必须有一个异常值规则,该规则缺少connect/v1路径。
  • 修改我的 Flask 路由,使其中也包含connect/v1前缀——现在 Flask API 可以直接访问,也可以通过 KrakenD 间接使用。
0 投票
0 回答
67 浏览

php - 如何获取使用 Laravel Passport 生成的公钥的详细信息?

我正在尝试创建一个端点来返回有关公钥的详细信息,以便像 Krakend 这样的 API 网关使用这些详细信息来验证 JWT。端点需要返回类似于以下 json 响应的响应。

我通过运行 Laravel Passport keys 命令生成了公钥和私钥

0 投票
1 回答
33 浏览

devops - 如何在 krakenD 中对后端配置应用速率限制

我有一个端点的 krakend 配置,如下所示

我按照这些链接形成了配置 https://www.krakend.io/docs/backends/rate-limit/ https://www.krakend.io/docs/endpoints/rate-limit/

但问题是我没有看到配置工作。对于上述配置,每秒允许的最大请求数为 2,但是,端点每秒接受超过 2 个请求而不会显示任何错误消息。根据文档,如果触发限制的人达到了 maxRate 限制,它应该显示 503 Service Unavailable。

0 投票
1 回答
90 浏览

go - 有没有办法在 krakend 端点配置中发送元数据?

我使用 Krakend 作为 API-Gateway,我的配置如下所示:

我想为每个端点传递一些元数据并在我的预定义插件中访问它。在这种情况下authenticator插件。

0 投票
1 回答
81 浏览

krakend - Krakend CE 上的通配符路线

我正在尝试按照官方文档(https://www.krakend.io/docs/enterprise/endpoints/wildcard/)在 Krakend 上启用通配符插件。我现在用的是CE版,有人知道这个版本有没有类似的插件?我在哪里可以找到可用的插件,因为我试图检查官方devopsfaith/krakend docker映像的/opt/krakend/plugins但它是空的。

0 投票
2 回答
54 浏览

websocket - KrakenD API 网关上的 Signalr 和 Websocket

使用 KrakenD API 网关时,我在实现 SignalR 微服务时遇到了麻烦。我认为这是可能的,因为我已经分别使用了 NGINX 负载均衡器和 Emissary API 网关。

据我目前的理解,KrakenD 似乎比这两种协议都要快得多。所以处理大量实时数据应该会更好。

如果有人有任何建议,之前已经这样做过,或者可以为我提供一个示例 krakend.json 配置示例,我们将不胜感激。即我目前的以下:

祝你有美好的一天,马特