본문 바로가기

Programming

Kong API Gateway #2 - Konga & API 등록/요청

반응형
2020/05/21 - [Programming] - Kong API Gateway #1 - 개념 & 설치

안녕하세요. 지난 포스트에 이어 오늘은 Kong의 관리자 기능을 GUI환경에서 편리하게 이용할 수 있는 Konga와 Kong을 이용하여 API를 등록해보고 등록한 API를 실제 Kong로 요청하여 사용해보겠습니다.

Konga 설치

1. Database Setting (최초 설정)

Konga 역시 최초에 Konga의 Bootstrap환경을 위해 DB migration이 필요합니다. 지난 포스팅에서 생성한 환경을 그대로 사용하므로 network는 kong-net DB 접속정보 역시 kong-database로 입력하여 prepare 명령을 실행합니다.

$ ~ docker run --rm --network=kong-net pantsel/konga:latest -c prepare -a 'postgres' -u postgresql://kong:kong@kong-database:5432/konga
debug: Preparing database...
Using postgres DB Adapter.
Database `konga` does not exist. Creating...
Database `konga` created! Continue...
debug: Hook:api_health_checks:process() called
debug: Hook:health_checks:process() called
debug: Hook:start-scheduled-snapshots:process() called
debug: Hook:upstream_health_checks:process() called
debug: Hook:user_events_hook:process() called
debug: Seeding User...
debug: User seed planted
debug: Seeding Kongnode...
debug: Kongnode seed planted
debug: Seeding Emailtransport...
debug: Emailtransport seed planted
debug: Database migrations completed!

2. Konga 실행

DB 세팅이 완료가 되었다면, 이제 Konga를 실행해보겠습니다.

기본포트 1337을 설정, 네트워크는 kong-net로 설정하고 환경변수로 TOKEN_SECRET과 DB 접속정보 등을 전달합니다.

docker run -p 1337:1337 --network=kong-net 
            -e "TOKEN_SECRET=YOUR_TOKEN_SECRET" 
            -e "DB_ADAPTER=postgres" 
            -e "DB_URI=postgresql://kong:kong@kong-database:5432/konga" 
            -e "NODE_ENV=production" 
            --name konga pantsel/konga

3. Konga 접속

Konga가 정상적으로 구동이 되었다면 브라우저에 localhost:1337로 접속합니다.

최초 보이는 화면은 아마 아래 화면처럼 관리자계정을 설정하는 화면일 것 입니다. 관리자계정 정보를 입력하고 생성합니다.

관리자 계정을 생성한 뒤 다음화면으로는 Konga가 연동 될 Kong의 정보를 입력하는 화면입니다. 적당한 이름을 입력하신 뒤, Admin URL에는 Kong 생성 시 발생 된 Admin 주소를 입력합니다.

Konga 와 Kong 이 docker network(kong-net)으로 연결되어 있기 때문에 저 같은 경우 http://localhost:8001을 인식하지 못하여 찾아 본 결과 docker에서 실행한 kong의 name을 넣으니 정상적으로 연결이 되었습니다.

4. API 등록해보기

위와 같이 로컬호스트 3000포트에서 각각 users, posts 경로에 대한 JSON Object Array를 리턴하는 API를 샘플로 만들었습니다. 이 샘플 API를 Konga를 이용해 Kong에 등록하여 사용해보도록 하겠습니다.

먼저 Services 메뉴로 가셔서 서비스를 생성합니다.

  • Name : 로컬 서비스이기 때문에 간략하게 loc 라고 명명했습니다.
  • Description : 간단한 설명을 입력합니다.
  • Url : 해당 입력에 Kong Gateway에 등록 할 서비스의 주소를 입력합니다. 아래 예제에선 docker 환경에서 구동 된 kong/konga가 제 로컬PC의 주소를 localhost로 찾지 못하여 검색한 결과 docker.for.mac.localhost 로 접근하면 되는 것을 확인하였습니다.
  • Protocol, Host, Port, Path의 경우는 Url만 입력 후 등록 시 자동적으로 파라미터가 셋팅 되어 등록됩니다.

loc 서비스를 등록한 결과화면

서비스가 정상적으로 등록되었다면 위 NAME 영역의 loc링크를 클릭해보면, Routes 화면으로 넘어가게 되며, Routes를 등록해보겠습니다.

  • Name : route 이름을 입력합니다.
  • Paths : 중요 이 Paths 입력 부분이 실제 Kong에 연결되는 Routing에 정보입니다. 아래와 같이 /json-server로 등록을 한다면, http://localhost:8000/json-server 호출 시 해당 요청이 http://localhost:3000/ 로 분기되게 됩니다.
  • Methods : 해당 Routing에 허용할 HTTP Mehtod를 등록합니다.

/json-server path를 등록한 라우팅

Routes까지 등록이 완료되었다면, 이제 등록한 서비스/라우팅 정보로 Kong을 호출해 보겠습니다.

위에 http://localhost:3000/users 의 호출결과와 http://localhost:8000/json-server/users 호출 결과가 동일한 것을 확인하실 수 있습니다.

이렇게 지난 포스팅에 이어 이번 포스팅까지 Kong의 설치부터 Konga 그리고 API 등록까지 진행해보았습니다. 이외에도 Kong이 지원하는 플러그인들을 사용하시면 더 유연하게 API Gateway 기능을 수행하는 Kong을 경험하실 수 있으실 겁니다.

감사합니다.