[ 一日30分 인생승리의 학습법][API Gateway] Kong Gateway 설치
2022.04.15 13:22
[ 一日30分 인생승리의 학습법][API Gateway] Kong Gateway 설치
Kong이란?
Kong 은 API Gateway 이며 Nginx 기반의 Gateway 로 Plugin 을 add 하면서 부가 기능을 사용할 수 있다.
1.3 버전부터 gRPC 를 지원하기 시작했고 grpc-gateway Plugin도 지원하여 Restful 등록도 가능하다.
gRPC 프로토콜을 지원하기 위한 API Gateway 가 필요하여 Kong을 설치하고 사용해보려고 한다.
Kong Gateway 설치
DB-less 버전도 있는데, 서비스 관리를 admin api를 사용하여 할 것이기 때문에 DB 있는 버전으로 설치하려고 한다.
0. Docker Network 생성
따로 쓰는 docker network가 없으면 생성해놓는다.
docker network create kong-ee-net
1. DB 설치
docker run -d --name kong-ee-database --network=kong-ee-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" postgres:9.6
2. DB에 Kong 사용을 위한 스키마 설치
docker run --rm --network=kong-ee-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-ee-database" -e "KONG_PG_PASSWORD=kong" -e "KONG_PASSWORD=kong" kong-ee kong migrations bootstrap
3. Kong 이미지 pull
docker pull kong-docker-kong-gateway-docker.bintray.io/kong-enterprise-edition:2.3.3.0-alpine
docker tag 3a786c1f88a7 kong-ee
4. Kong 실행
gRPC는 http2 기반이기 때문에 아래 빨간 표시의 config와 port를 꼭 추가해야 한다.
docker run -d --name kong-ee --network=kong-ee-net
-e "KONG_DATABASE=postgres"
-e "KONG_PG_HOST=kong-ee-database"
-e "KONG_PG_PASSWORD=kong"
-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"
-e "KONG_ADMIN_GUI_URL=http://0.0.0.0:8002"
-e "KONG_PROXY_LISTEN=0.0.0.0:9080 http2, 0.0.0.0:9081 http2 ssl"
-p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 -p 8002:8002 -p 8445:8445 -p 8003:8003 -p 8004:8004 -p 9080:9080 -p 9081:9081 -v data:/data kong-ee
Kong에서 사용 포트는 아래와 같다.
서비스 | 포트 |
http | 8000 |
https | 8443 |
http2 | 8444 |
admin api | 8001 |
grpc | 9080 |
grpcs | 9081 |
Reference
https://docs.konghq.com/enterprise/2.4.x/deployment/installation/docker/
[출처] https://godd.tistory.com/91
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.