본문 바로가기

project/홍보 사이트

Kong API gateway 사용기

사용 배경

React와 Spring를 이용해서 서비스를 개발을 함에 있어서 운영되는 서버가 두개이기에 브라우저에서 Cors에러가 발생하는 것을 방지하고 나중에 부하를 분산하기 위한 시스템을 구축할 때 용이하기 때문에 사용했다.

kong?

kong이 제공하는 기능은 kong의 공식 홈페이지에 가면 설명이 되어있으니 그것을 참고하는 것이 좋다.

kong을 사용하려고 하면 데이터베이스를 선택할지 안할지를 선택할 수 있다.

데이터베이스를 사용하면 좀 더 능동적으로 kong을 사용할 수 있고 추후 변경사항이 있을 때 kong을 재실행하지 않고 운영이 가능하다.

하지만 추가적이 데이터베이스를 운영해야한다는 점은 단점이라고 생각했다.

개발할 서비스에서는 하나의 db만 사용할 것을 고려하고 있기 때문에 데이터 베이스 없이 사용했다.

데이터베이스 없이 운영하기 위해서 kong.yml 설정파일에 설정을 하고 이 파일을 기반으로 kong을 운영하면된다.

kong.yml 설정하기

  • 다음은 내가 사용한 kong 설정파일이다.
_format_version: "3.0"
_transform: true

 services:
 - name: back_end_server 
   #그냥 서비스를 제공하는 이름
   url: http://host.docker.internal:8080 
   # kong에서 어디로 request를 넘겨주어야하는지에 대한 url
   routes: # 어떤 url 요청을 원하는지 라우팅 정보가 있다.
   - name: spring_route # 그냥 이름
     paths: # sub url 이 다음과 같으면 url로 넘겨준다는 뜻
     - /api
 - name: back_end_server
   url: http://host.docker.internal:3000
   routes:
   - name: react_route
     paths:
     - /

도커 컨테이너 구성은 kong, back, front 이렇게 3가지로 구성되어 있다.

도커에서 프론트 서버와 백엔트 서버를 각각 운영하고 들어오는 요청에 따라 각 서버로 넘겨주는 상황에서 사용했다.

 

공식문서를 통해서 설정을 좀 더 자세히 알 수 있다.

 

Kong Docs

Documentation for Kong, the Cloud Connectivity Company for APIs and Microservices.

docs.konghq.com

kong container 실행하기

도커에서 kong을 컨테이너화해서 사용하기 위한 명령어는 다음과 같다.

# kong 이미지를 다운로드한다.
$ docker pull kong
# kong 이미지로 컨테이너를 만들고 kong을 실행한다.
$ docker run -d --name kong \
  --network=kong-net \
  -v "$(pwd):/kong/declarative/" \  # kong.yml 가 위치한 디렉토리 연결
  -e "KONG_DATABASE=off" \
  -e "KONG_DECLARATIVE_CONFIG=/kong/declarative/kong.yml" \ 
  -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 80:8000 \ # http 요청 포트 설정
  -p 443:8443 \  # https 요청 포트 설정
  -p 127.0.0.1:8001:8001 \  # http api 요청 포트 설정
  -p 127.0.0.1:8444:8444 \  # https api 요청 포트 설정
  kong:latest

끝으로

kong을 이용해서 서비스를 구현하는데 집중해서 다른 기능을 많이 사용하지 못한 것 같다. 유용한 기능이 무엇이 있는지 천천히 공부하면서 살펴보는 것도 나쁘지 않은 것 같다.

 

참고 사이트

 

Kong API Gateway #1 - 개념 & 설치

안녕하세요. 남산돈가스입니다. 마이크로 서비스 아키텍처(이하 MSA)의 개념이 대두되면서 핵심기술이라고 할 수 있는 API Gateway의 필요성이 늘어났습니다. 그 중에서 오늘은 Kong API Gateway에 대해

ibks-platform.tistory.com

 

[API Gateway] Kong Gateway 설치

Kong이란? Kong 은 API Gateway 이며 Nginx 기반의 Gateway 로 Plugin 을 add 하면서 부가 기능을 사용할 수 있다. 1.3 버전부터 gRPC 를 지원하기 시작했고 grpc-gateway Plugin도 지원하여 Restful 등록도 가능하다. gRPC

godd.tistory.com

 

Kong API gateway #1 - 설치와 둘러보기

오픈소스 API 게이트웨이 Kong조대협 (http://bcho.tistory.com) Kong API 게이트 웨이를 설치 하는 방법은 여러가지가 있지만, 여기서는 테스트 환경용으로 로컬 환경에 도커 이미지로 간단하게 설치 하는

bcho.tistory.com

 

Kong Docs

Documentation for Kong, the Cloud Connectivity Company for APIs and Microservices.

docs.konghq.com

 

 

'project > 홍보 사이트' 카테고리의 다른 글

프로젝트 개선하기  (0) 2023.08.30
HTTPS 적용하기  (0) 2023.02.13
[Docker file] RUN CMD ENTRYPOINT 실행 방식  (0) 2023.02.13
CI/CD 환경구축시에 도움 받은 자료 정리  (0) 2023.02.01