RATSENO

KONG API GATEWAY 설치 (Docker for window) 본문

DEV/DevOps

KONG API GATEWAY 설치 (Docker for window)

RATSENO 2020. 8. 6. 15:15

오픈소스인 KONG API GATEWAY를 공부하기 위해서 셋팅하는 도중, 설치부터 막혀버렸습니다.

해결하는데 하루가 걸리더군요 ㅠㅠ... 도커 자체도 미숙한지라 설치하는데 어려움을 겪었습니다.

자세한 원리는 생략하고 문제와 해결했던 방법을 남겨놓으려 합니다. 

 

한글로 된 자료가 거의 전무하기 때문에, KONG 공식 홈페이지로 들어갑니다.

https://konghq.com/

 

Kong: Next-Generation API platform for Microservices

Kong is the world's most popular open source microservice API gateway. Use Kong to secure, manage and orchestrate microservice APIs.

konghq.com

다양한 방법으로 설치가 가능하다고 목록이 나옵니다. 저는 window를 사용하고 도커도 깔려있기 때문에 도커로

설치 해보겠습니다.

 

https://docs.konghq.com/install/docker/?_ga=2.136868408.981421771.1596608925-355120519.1581990881

 

Open-Source API Management and Microservice Management

Secure, Manage & Extend your APIs or Microservices with plugins for authentication, logging, rate-limiting, transformations and more.

docs.konghq.com

DB가 포함되어(With a Database)있는 방법과, DB 없이(DB-less mode) 설치하는 방법이 있습니다.

저는 DB없이 설치하는 방법을 따라했습니다.

 

 

도커를 이용하여 설치할것입니다.(window 10에서 진행하였습니다.)

도커 컨테이너 간에 서로 발견하고 통신을 하기 위해서 네트워크를 만들어야 합니다. 이름은 상관없습니다. 

문서에 따라서 kong-net으로 정하고 만들겠습니다. 

윈도우10에 내장되어있는 Windows PowerShell ISE를 관리자 권한으로 실행합니다.

docker network create kong-net

그 다음 KONG API GATEWAY의 설정 파일을 담아둘 docker volume를 생성하겠습니다.

docker volume create kong-vol

생성된 kong-vol이라는 이름을 가진 docker volum에 대한 상세 정보를 보겠습니다.

docker volume inspect kong-vol

 [
     {
         "CreatedAt": "2019-05-28T12:40:09Z",
         "Driver": "local",
         "Labels": {},
         "Mountpoint": "/var/lib/docker/volumes/kong-vol/_data",
         "Name": "kong-vol",
         "Options": {},
         "Scope": "local"
     }
 ]

이 볼륨과 도커 컨테이너의 지정폴더를 맵핑되고, 볼륨안에 있는 kong.yml 이라는 설정파일을 통해 도커가 KONG API GATEWAY를 실행 할수 있어야 하는데.

여기서 부터 난관에 봉착하였습니다. 굵게 표시되어있는 "Mountpoint"로 되어있는 경로를 window에서 찾을수 가 없었습니다.

당연히 window상의 경로로만 알고있었고, 도커, 도커 볼륨에 대한 경험과 지식이 부족했습니다.

저 경로는 window10의  hyper-v(가상머신)를 통해 띄워진 host의 경로입니다.

(제가 이해한것은 이것입니다 잘못된 부분이라면 말씀해주세요..!!!!!)

그 host를 통해 도커가 떠있는 것이죠. 그래서 아무리 찾아도 저 경로를 찾을수 없었습니다.

 

저 경로에 KONG API GATE를 도커 컨테이너로 띄우기 위한 설정파일

kong.yml

https://docs.konghq.com/2.1.x/db-less-and-declarative-config/#the-declarative-configuration-format

 

Open-Source API Management and Microservice Management

Secure, Manage & Extend your APIs or Microservices with plugins for authentication, logging, rate-limiting, transformations and more.

docs.konghq.com

을 집어 넣어야 하는데 넣을수가 없었습니다...

 

그래서 우여곡절 끝에 찾아냈습니다.(맞는 방법인지 모르겠지만 ㅠㅠ

간단하게 말하면 실제 host(window)의 볼륨을 사용하는 것입니다.

 

먼저 docker desktop의 setting을 열어줍니다.

다음으로 Resources > FILE SHARING을 클릭합니다.

Resources의 몇몇 탭들은 window, mac에서만 보인다고 합니다.(가상화로 생성된 도커이기 때문에..)

경로 및 폴더는 임의로 지정해 줍니다. kong.yml 설정파일을 저장해둘 폴더를 생성하여 등록합니다.

이제 저 폴더와 KONG API GATEWAY가 실행될 도커컨테이너의 폴더를 맵핑하고 실행하기만 하면 됩니다.

 

$ docker run -d --name kong \

--network=kong-net \

-v "kong-vol:/usr/local/kong/declarative" \

-e "KONG_DATABASE=off" \

-e "KONG_DECLARATIVE_CONFIG=/usr/local/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 8000:8000 \

-p 8443:8443 \

-p 127.0.0.1:8001:8001 \

-p 127.0.0.1:8444:8444 \

kong:latest

 

위의 명령어는 guid상에 나와있는 명령어 입니다. 여기서 변경해야할 부분은 -v 명령어 뒤의 부분입니다.

kong-vol은 초반에 사용하려 만들었던 도커 볼륨이며, 뒤의  /usr/local/kong/declarative폴더를 공유하는 내용입니다.

 

저는 kong-vol대신 위에서 만들어둔 host의 경로를 적용하겠습니다.

$ docker run -d --name kong \

--network=kong-net \

-v "/c/ProgramData/Docker/volumes/kong-vol/_data:/usr/local/kong/declarative" \

-e "KONG_DATABASE=off" \

-e "KONG_DECLARATIVE_CONFIG=/usr/local/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 8000:8000 \

-p 8443:8443 \

-p 127.0.0.1:8001:8001 \

-p 127.0.0.1:8444:8444 \

kong:latest

 

 

성공적으로 run이 되고.

powershell 대신 git bash가 있다면 git bash를 이용하여 curl명령어로 응답을 확인해봅니다.

 

응답을 확인할 수 있습니다.

 

용어나 개념에 대한 설명이 많이 부족하고, 틀렸을것 같습니다.

해결했던 내용을 공유하기 위한 포스팅이니 많은 양해 부탁드리겠습니다.

감사합니다.

 

 

 

 

 

 

 


참고 및 출처

https://docs.docker.com/storage/volumes/

 

Use volumes

Volumes are the preferred mechanism for persisting data generated by and used by Docker containers. While bind mounts are dependent on the directory structure of the host machine, volumes are...

docs.docker.com

https://konghq.com/

 

Kong: Next-Generation API platform for Microservices

Kong is the world's most popular open source microservice API gateway. Use Kong to secure, manage and orchestrate microservice APIs.

konghq.com

https://docs.docker.com/docker-for-windows/#resources

 

Get started with Docker for Windows

Welcome to Docker Desktop! The Docker Desktop for Windows section contains information about the Docker Desktop Community Stable release. For information about features available in Edge releases, see the Edge...

docs.docker.com

https://sungwookkang.com/1296

 

Docker Volume (호스트 볼륨 공유)-컨테이너 데이터를 호스트 디스크에 저장하기

Docker Volume (호스트 볼륨 공유) -         컨테이너 데이터를 호스트 디스크에 저장하기 ·         Version : Docker Docker 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며 컨테이..

sungwookkang.com

https://jungwoon.github.io/docker/2019/01/13/Docker-3/

 

Docker 정리 #3 (도커 볼륨) - Jungwoon Blog

Docker 정리 #3 최근에 쿠버네티스를 공부할 일이 있어서 보고 있는데, 쿠버네티스 자체가 도커(Docker) 오케스트레이션을 해주는 툴이라 도커에 대한 개념이 없으니, 공부하기가 힘들었습니다. 그��

jungwoon.github.io

https://bcho.tistory.com/1361

 

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

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

bcho.tistory.com

 

Comments