본문 바로가기
INFRA/DevOps

Kong API Gateway가 뭐예요?

by BTC_조롱이 2022. 12. 10.

Kong이란 무엇인가?

Kong 공식페이지를 보면, Kong은 MSA구성을 가속화하는 가장 유명한 오픈 소스 API Gateway라고 말합니다. 또한 경량화 된 프록시 환경위에 구축 되어 있어, 어디서든지 모든 마이크로 서비스에 성능 및 확장성을 제공한다고 합니다. 

이외에도 가장 큰 특징은, 모든 기능을 Restful Interface로 제공하고 있으며, API Gateway를 구성하는 필수 기능들, 예를 들면 OAuth 인증, Logging, 유량제어 등을 Plugin 기반으로 손쉽게 추가하여 사용할 수 있으며, 위에서 언급한대로 Platform(런타임)에 구애받지 않고 어디서든지 Kong을 구축할 수 있습니다.

kong 공식 홈페이지




Kong 시작하기

여러 문서나 블로그를 찾아보았는데, 대부분 Docker를 이용하여 설치를 진행하시는 것 같아 저도 Docker를 이용하여 설치를 해보겠습니다.

kong은 두 가지 타입으로 설치할 수 있는데, With a Database 와 DB-less Mode가 있습니다. 아무래도 DB-less는 설정 같은 것들이나 데이터들을 확인하는 것에 제한적인 부분이 있겠죠. DB까지 설치해서 연결해야하나... 귀찮다고 생각했지만, 시작하는 김에 제대로 시작해보자 + Docker를 이용해서 설치하는 이유로 With a Database로 진행하기로 하였습니다.

1. docker network 생성

docker를 이용하기 때문에 DB, Kong 컨테이너 간 통신을 위해서 docker network를 생성하여 네트워크를 구성합니다.

$ docker network create kong-net
c7478f0a6f5d91f99d87bf344b43d6345811fd9381b18f5d84e3688f4ec5c6a3


2. Database 설치 / 구동

Kong은 현재 Cassandra 와 PostgreSQL을 지원하고 있습니다. 예제에서는 PostgreSQL로 설치하겠습니다.

$ docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6

$ docker ps



3. Database Setting (최초 설정)

2번에서 Database를 PostgreSQL로 설치는 완료했지만, 저 DB는 현재 아무것도 없는 껍데기 상태의 DB이기 때문에, kong의 bootstrap환경을 migration하여 DB 스키마를 최초 설정해주는 Step입니다.

$ docker run --rm  \ 
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap



4. Kong 설치 / 구동

3번에서 Migration을 완료하여 Database는 이제 준비가 되었고, 이제 Kong을 준비한 DB 컨테이너와 연결하여 구동해보겠습니다.

$ docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest



5. Kong 구동 확인

Admin Port인 8001번으로 curl 요청을 해보면 200 OK를 확인하실 수 있습니다.

$ curl -I http://localhost:8001



오늘은 Kong의 기본 개념과 Docker를 이용한 설치까지 해보았습니다. 다음 포스팅에선 설치 된 Kong으로 여러 API를 등록하고 사용해보는 내용을 작성해보겠습니다.

 

출처 및 참고: https://ibks-platform.tistory.com/378

'INFRA > DevOps' 카테고리의 다른 글

Grafana 란?  (0) 2022.12.10
Kibana 란?  (0) 2022.12.10
Ansible AWX은 뭐하는 녀석일까  (0) 2022.12.09
EC2 Ansible로 환경구성 자동화  (1) 2022.12.09
[K8s] Headless Service  (1) 2022.12.06

댓글