Я начал следовать этому руководству по установке docker / KONG , где они создают сеть с именем "kong-net" и запускают контейнеры KONG и postgresql.
Затем я перешел на в этом руководстве по докеру / kong регистрируется контейнер контейнера с пробой в качестве API в KONG. .
Я не видел ничего тревожного при настройке контейнера KONG с помощью службы колбы и связанных маршрутов.
Кажется, что контейнер с флягой образца работает нормально:
curl http://localhost:5055/api/v1/test1
curl http://localhost:5055/api/v1/test2
Я получаю ожидаемый результат:
{"message":"first end point test1 is called","status_code":200}
Результаты этих команд выглядят хорошо: curl -i -XPOST --url http://localhost:8001/services/ --data 'name = testApi' --data 'url = http://localhost:5055' curl http://localhost:8001/routes |json_pp
Все прекрасно, пока я не получу эту команду для проверки KONG:
curl -i -X GET --url http://localhost:8000/api/v1/test1 --header 'Host: localhost'
Я думаю, что KONG должен переслать это в контейнер с колбой для образца.
Вместо этого явижу эту ошибку:
HTTP/1.1 502 Bad Gateway
Date: Wed, 08 May 2019 18:20:00 GMT
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: kong/1.1.2
X-Kong-Upstream-Latency: 1
X-Kong-Proxy-Latency: 35
Via: kong/1.1.2
An invalid response was received from the upstream server
В журналах для контейнера KONG я вижу это:
2019/05/08 16:56:57 [error] 38#0: *167134 connect() failed (111:
Connection refused) while connecting to upstream, client:
172.19.0.1, server: kong, request: "GET /api/v1/test1 HTTP/1.1",
upstream: "http://127.0.0.1:5055/api/v1/test1", host: "localhost"
172.19.0.1 - - [08/May/2019:16:56:57 +0000] "GET /api/v1/test1
HTTP/1.1" 502 69 "-" "curl/7.59.0"
Похоже, KONG не может видеть localhost: 5055.
IЯ беспокоюсь о той сети, которую я создал в первом учебном пособии.
Я попытался остановить, перестроить и повторно запустить контейнер с колбой с помощью этой команды (поэтому колба также была частью сети):
docker run -d --name flask --network=kong-net -p 5055:5055 flask:test
Увы, это не помогло.Та же ошибка!
Когда я набираю
docker network inspect kong-net
, я вижу, что контейнер с колбой является частью kong-net.Это необходимо?
Я попробовал эту команду, и она сработала:
docker exec -ti kong sh -c "curl http://172.19.0.4:5055/api/v1/test1 "
{"message":"first end point test1 is called","status_code":200}
Я делаю все это с Windows10 / cygwin-bash / docker18.09.2 с включенным docker / kubernetes.
Вопросы:
- Нужно ли приложению пробного колбы входить в сеть kong-net?
- Учебник, кажется, говорит, что конг должен видеть 127.0.0.1:5055.Это правильно?Учебное пособие неверно?
Как заставить эту команду работать?
curl -i -X GET --url http://localhost:8000/api/v1/test1 --header 'Хост: localhost