Kong api gateway 설정 – 1
RESTful api 를 외부로 노출하지 않고 사용하기 위해(authentication, audit 기능 사용을 위한) Kong API 도입을 검토중입니다.
그러기 위해 직접 테스트 해보면서 내용을 여기에 정리하려 합니다.
관련된 모든 설치는 Docker 를 사용 하는 것으로 진행합니다.
Prerequisite
- kong 0.13.1
- dashboard v3.3.0
- postgres 9.6
설치
kong
을 사용하기 위해 database 설정이 필요합니다.
Cassandra 나 Postgresql 중 선택 가능하지만 여기서는 postgresql 로 진행합니다.
postgresql
execute
sudo docker run -d --name kong-database \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6-alpine
db migration
sudo docker run --rm \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
kong:latest kong migrations up
Kong
sudo docker run -d --name kong \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/var/log/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/var/log/stdout" \
-e "KONG_PROXY_ERROR_LOG=/var/log/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/var/log/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
-e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
-v /root/log:/var/log \
kong:0.13.1-alpine
Kong dashboard
Dashboard 는 사실 여기 글에서는 사용하지 않습니다.
Dashboard를 사용하기 위해서는 Dashboard 에 접속 후 UI 상에서 Creaate api
를 해줘야합니다. (services 라는 메뉴가 없기 때문, apis 를 직접 등록하는 듯합니다.)
여기서는 따로 dashboard 관련 내용을 포스팅 하진 않겠습니다.
sudo docker run -d -p 8080:8080 \
--link kong:kong \
--name kong-dashboard \
pgbi/kong-dashboard start \
--kong-url http://kong:8001 \
--basic-auth admin=admin
이제 설정을 완료했습니다.
실행
이제 실행을 위해 서비스를 등록 하겠습니다.
Configuring a Service – v0.13.x | Kong – Open-Source API Management and Microservice Management
이 링크를 참고했습니다.
- 서비스 생성
실제 접속해야할 endpoint (api server address)에 대한 url 을 입력해줍니다.
curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=mocha' \
--data 'url=http://10.110.10.124:8080'
- 서비스의 호스트 생성
여기서는 hostname
을 지정해줍니다.
지정해준 이름을 사용해서, 실제. API 를 호출할 때 Host
헤더를 이용해서 어느 서비스로 routing 할지를 판단합니다.
curl -i -X POST \
--url "http://localhost:8001/services/mocha/routes/" \
--data 'hosts[]=mocha1'
- 서비스 정상 작동 여부 확인
위에서 등록한 mocha1
이라는 hostname 을 이용해서 실제 api server endpoint(여기서는 http://10.110.10.124:8080) 으로 routing 합니다.
curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: mocha1'
정상 작동 했다면 api server 의 response 를 받을 수 있습니다.
이제 설치는 완료했고, 다음은 인증을 위한 plugin 설치 입니다.