Kong api gateway 설정 – 1

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 설정이 필요합니다.

CassandraPostgresql 중 선택 가능하지만 여기서는 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

이 링크를 참고했습니다.

  1. 서비스 생성

실제 접속해야할 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' 
  1. 서비스의 호스트 생성

여기서는 hostname 을 지정해줍니다.
지정해준 이름을 사용해서, 실제. API 를 호출할 때 Host헤더를 이용해서 어느 서비스로 routing 할지를 판단합니다.

curl -i -X POST \
  --url "http://localhost:8001/services/mocha/routes/" \
  --data 'hosts[]=mocha1'
  1. 서비스 정상 작동 여부 확인

위에서 등록한 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 설치 입니다.

글쓴이

Kwon

github: https://github.com/9to6