将本地泊坞窗容器上的API添加到Kong

时间:2017-12-28 17:20:59

标签: docker kong api-gateway

我正在开发一个带有微服务的小项目,我想将Kong配置为我的结构的API网关,但是我无法将来自Kong的传入请求转发到我的服务。

例如,我有一个在地址172.18.0.15和端口8006上本地运行的docker容器。我可以在172.18.0.15:8006/compute访问api,我想配置kong,以便能够在localhost:8001/compute拨打同一个电话。我错过了什么吗?我的网址中应该api,以便Kong能够发现我的api吗?这是我添加到Kong的配置,我基本上只添加了所有REST方法并将url:port设置为upstream-url字段。

{
    "data": [
        {
            "created_at": 1514479841682,
            "http_if_terminated": false,
            "https_only": false,
            "id": "9cf925a5-2c27-4dbc-ae2a-e70fba94ef53",
            "methods": [
                "GET",
                "POST",
                "PUT",
                "DELETE"
            ],
            "name": "compute",
            "preserve_host": false,
            "retries": 5,
            "strip_uri": true,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "upstream_url": "http://172.18.0.15:8006"
        }
    ],
    "total": 1
}

这对我不起作用:当我尝试通过localhost访问API时,请求会因499错误而超时。任何帮助都非常感谢。

编辑:我尝试通过设置URI字段来添加我的API。我已经使用docker logs kong进行了检查,看起来kong正在定义访问正确的地址,但出于某种未知原因超时:

2017/12/28 17:55:25 [error] 47#0: *103 upstream timed out (110: Connection timed out) while connecting to upstream, client: 172.17.0.1, server: kong, request: "GET /compute?origin=20,20&destination=20,20 HTTP/1.1", upstream: "http://172.18.0.15:8006/compute?origin=20,20&destination=20,20", host: "localhost:8000"

但是,如果我使用curl访问相同的地址,它可以正常工作:

# curl http://172.18.0.15:8006/compute?origin=20,20\&destination=20,20
[]

我非常怀疑其他人会遇到同样的问题,但问题出在我的Docker配置中,我忘了将api网关放在与服务相同的子网上。解决这个问题解决了我的问题。

0 个答案:

没有答案