Kong이란 무엇인가?
Kong 공식페이지를 보면, Kong은 MSA구성을 가속화하는 가장 유명한 오픈 소스 API Gateway라고 말합니다. 또한 경량화 된 프록시 환경위에 구축 되어 있어, 어디서든지 모든 마이크로 서비스에 성능 및 확장성을 제공한다고 합니다.
이외에도 가장 큰 특징은, 모든 기능을 Restful Interface로 제공하고 있으며, API Gateway를 구성하는 필수 기능들, 예를 들면 OAuth 인증, Logging, 유량제어 등을 Plugin 기반으로 손쉽게 추가하여 사용할 수 있으며, 위에서 언급한대로 Platform(런타임)에 구애받지 않고 어디서든지 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를 등록하고 사용해보는 내용을 작성해보겠습니다.
'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 |
댓글