사용 배경
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 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을 이용해서 서비스를 구현하는데 집중해서 다른 기능을 많이 사용하지 못한 것 같다. 유용한 기능이 무엇이 있는지 천천히 공부하면서 살펴보는 것도 나쁘지 않은 것 같다.
참고 사이트
'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 |