问题标签 [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.
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)。
krakend - 未找到 Krakend 生成命令
我正在使用 krakend 版本的1.4.0
文档说我可以运行生成命令来获取 OpenAPI、邮递员或配置图。
当我尝试运行任何这些命令时。我明白了
Error: unknown command "generate" for "krakend"
我需要做一些不同的事情来启用generate
命令吗?这是生成器命令的链接。https://www.krakend.io/docs/enterprise/commands/openapi/
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。
提前谢谢
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 路由到。
我试图用谷歌搜索,但结果似乎与我的问题不符。
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 间接使用。
php - 如何获取使用 Laravel Passport 生成的公钥的详细信息?
我正在尝试创建一个端点来返回有关公钥的详细信息,以便像 Krakend 这样的 API 网关使用这些详细信息来验证 JWT。端点需要返回类似于以下 json 响应的响应。
我通过运行 Laravel Passport keys 命令生成了公钥和私钥
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。
go - 有没有办法在 krakend 端点配置中发送元数据?
我使用 Krakend 作为 API-Gateway,我的配置如下所示:
我想为每个端点传递一些元数据并在我的预定义插件中访问它。在这种情况下authenticator
插件。
krakend - Krakend CE 上的通配符路线
我正在尝试按照官方文档(https://www.krakend.io/docs/enterprise/endpoints/wildcard/)在 Krakend 上启用通配符插件。我现在用的是CE版,有人知道这个版本有没有类似的插件?我在哪里可以找到可用的插件,因为我试图检查官方devopsfaith/krakend docker映像的/opt/krakend/plugins但它是空的。
websocket - KrakenD API 网关上的 Signalr 和 Websocket
使用 KrakenD API 网关时,我在实现 SignalR 微服务时遇到了麻烦。我认为这是可能的,因为我已经分别使用了 NGINX 负载均衡器和 Emissary API 网关。
据我目前的理解,KrakenD 似乎比这两种协议都要快得多。所以处理大量实时数据应该会更好。
如果有人有任何建议,之前已经这样做过,或者可以为我提供一个示例 krakend.json 配置示例,我们将不胜感激。即我目前的以下:
祝你有美好的一天,马特