Я использую Kong для демонстрации Konga — пользовательского интерфейса административного интерфейса Kong.
Я запускаю его, используя стек докеров со следующим файлом докеров:
version: "3.1"
secrets:
webservices_hostname:
external: true
webservices_cert:
external: true
webservices_key:
external: true
services:
#Create a new empty database for kong to use
# postgress used instead of cassendra as I haven't been able to find a healthcheck command for cassendra
kong-database:
image: postgres:9.4
deploy:
restart_policy:
condition: any
environment:
- POSTGRES_USER=kong
- POSTGRES_DB=kong
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 10s
timeout: 5s
retries: 5
#Setup kong database
kong-migration:
image: kong
deploy:
restart_policy:
condition: on-failure
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
command: kong migrations up
deploy:
restart_policy:
condition: on-failure
#Start the kong server
kong:
image: kong
deploy:
restart_policy:
condition: any
secrets:
- webservices_cert
- webservices_key
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_DATABASE=kong
- KONG_SSL_CERT=/run/secrets/webservices_cert
- KONG_SSL_CERT_KEY=/run/secrets/webservices_key
ports:
- 80:8000
- 443:8443
healthcheck:
test: ["CMD-SHELL", "curl -I -s -L http://127.0.0.1:8000 || exit 1"]
interval: 5s
retries: 10
restart: on-failure
#The next section starts a UI for kong called konga.
#We only need a ui for development experimentation and can be removed if no UI is required
# when it is running it can be accessed on port 1337
konga:
image: pantsel/konga
deploy:
restart_policy:
condition: on-failure
ports:
- 1337:1337
#Configure kong to forward requests to flaskapp
kong-addapis-konga:
image: byrnedo/alpine-curl
deploy:
restart_policy:
condition: on-failure
command: "-i -X POST \
--url http://kong:8001/apis/ \
--data 'name=flaskapp' \
--data 'uris=/flaskapp' \
--data 'upstream_url=http://flaskapp:80'
--data 'https_only=false'
"
Я запускаю стек командой
docker stack deploy --compose-file ./docker-compose.yml webservices
Если я получу доступ к хосту: 1337, Konga будет работать как обычно. Я могу перейти к подключениям, и он без проблем подключается к API администратора kong (http://kong:8001)
Однако, если я захожу на https://host:443/konga или http://host:80/konga он получает доступ к konga без проблем, однако, когда я пытаюсь подключить konga к kong, я получаю сообщение об ошибке:
"О, щелк! Не удается подключиться к http://kong:8001"
Почему доступ к Konga через Kong вызывает такое поведение? Я думал, что не имеет значения, как я подключаюсь к Konga — как только я доберусь туда, не должно быть никакой разницы между использованием прямого порта или использованием Kong.
Любые идеи?