0

我正在使用 Kong OSS(不是容器或部署的 k8s)尝试对后端两个后端服务进行负载平衡以进行测试。我的挑战是一个需要身份验证和不同的后端路径端口,而另一个不需要。

前端 1 - Kong API 网关前端

  • 主机:本地主机
  • 端口:8000
  • 认证:无
  • 根路径:/
  • 示例请求:POST http://localhost:8000/ {JSON 数据}

我期待这个前端有以下后端

后端 A - 用于测试的本地 API 服务

  • 主机:本地主机
  • 端口:80
  • 认证:无
  • 根路径:/
  • 示例请求:POST http://localhost:80/ {JSON 数据}

后端 B - 托管 SaaS API 服务

按照文档,似乎我需要为 2 个上游/目标创建 1 个服务,但不确定如何处理不同的上游根路径? Kong负载均衡

上游配置可以根据选定的上游/目标动态更改后端路径吗?或者,也许可以创建一个在两个服务之间进行负载平衡的单一路由?

我正在尝试使用 1 个服务创建 1 个路由,该服务具有 2 个具有不同根路径的上游目标和特定上游目标的请求转换器

4

1 回答 1

0

您可以创建两个服务,每个服务都有一个路由。两条路线使用相同的路径,

服务一:http ://httpbin.org

curl --location --request POST 'http://localhost:8001/services/' \
--form 'name="httpbin"' \
--form 'url="http://httpbin.org"'

路线 1:/路径

curl --location --request POST 'http://localhost:8001/services/httpbin/routes/' \
--form 'paths[]="/testPath"' \
--form 'name="httpbinget"' \
--form 'hosts[]="httpbin.org"'

服务 2: http: //mockbin.org

curl --location --request POST 'http://localhost:8001/services/' \
--form 'name="mockbin-secure"' \
--form 'url="https://mockbin.org"'

路线 2:/testpath

curl --location --request POST 'http://localhost:8001/services/mockbin-secure/routes/' \
--form 'paths[]="/testPath"' \
--form 'name="mockbin-get"' \
--form 'hosts[]="mockbin.org"'

测试 API Gateway 代理 /testPath

curl --location --request GET 'http://localhost:8000/testPath/' \
--header 'Accept: application/vnd.yang.data+json' \
--header 'Host: httpbin.org'

curl --location --request GET 'http://localhost:8000/testPath/' \
--header 'Accept: application/vnd.yang.data+json' \
--header 'Host: mockbin.org'

如果需要身份验证,则第二个请求预计会失败,最后一步是在此特定服务上启用身份验证插件

curl -X POST http://localhost:8001/services/mockbin-secure/plugins \
    --data "name=key-auth"  \
    --data "config.key_names=apikey" \
    --data "config.key_in_body=false" \
    --data "config.key_in_header=true" \
    --data "config.key_in_query=true" \
    --data "config.hide_credentials=false" \
    --data "config.run_on_preflight=true"

测试代理时需要提供apikey

curl --location --request GET 'http://localhost:8000/testPath/' \
--header 'Accept: application/vnd.yang.data+json' \
--header 'Host: httpbin.org' \
--header 'api-key: somekey'

我现在没有可以测试的安全服务,我希望这可能会有所帮助。

于 2022-02-23T04:35:37.397 回答