본문으로 건너뛰기

API Gateway Resource Adjustment Method

이 가이드는 시스템 리소스 및 내부 구성을 조정하여 API Gateway 성능을 미세 조정하는 세 가지 주요 방법을 소개합니다. 이러한 방법은 배포 중에 적용하거나 구성 파일 및 UI 인터페이스를 통해 수동으로 적용할 수 있습니다.

방법 1: Pod 리소스 조정 (CPU / 메모리)

개념

Kubernetes에서 실행 중인 Kong Gateway Pod의 CPU 및 메모리 리소스를 관리할 수 있습니다. 적절한 리소스 한도 및 요청을 설정함으로써 게이트웨이 인스턴스를 안정화하고 최적의 성능을 보장할 수 있습니다.

구성 방법

리소스 한도를 다음 중 하나에 설정합니다:

  • Helm values.yaml
  • Kubernetes 배포 YAML
resources:
limits:
cpu: "1000m" # 최대 1 코어
memory: "1024Mi" # 최대 1GB
requests:
cpu: "500m" # 보장된 0.5 코어
memory: "512Mi" # 보장된 512Mi

적용 위치

  • Helm 기반 배포: values.yaml에 추가
  • 수동 배포: 배포 파일의 spec.template.spec.containers.resources 아래에 적용

APIM 콘솔에서 게이트웨이 관리 페이지로 이동하여 다음을 시각적으로 구성할 수 있습니다:

  • 게이트웨이 CPU / 메모리
  • 데이터베이스 CPU / 메모리
  • 게이트웨이 복제 수

방법 2: 환경 변수를 통한 Nginx 설정 조정

개념

Kong은 내부적으로 Nginx를 사용하며, 여러 성능 관련 설정을 환경 변수 또는 nginx.conf 내에서 조정할 수 있습니다. 이러한 설정은 게이트웨이가 클라이언트 요청, 버퍼 및 연결 한계를 처리하는 방식에 영향을 미칩니다.

구성 방법

다음 방법으로 값을 설정합니다:

  • KONG_ environment variables*
  • Helm values.yaml env 섹션
env:
KONG_PROXY_ACCESS_LOG: "/dev/stdout"
KONG_ADMIN_ACCESS_LOG: "/dev/stdout"
KONG_CLIENT_BODY_BUFFER_SIZE: "16k"
KONG_CLIENT_MAX_BODY_SIZE: "128m"
KONG_LARGE_CLIENT_HEADER_BUFFERS: "4 16k"
KONG_NGINX_WORKER_PROCESSES: "2"
KONG_NGINX_WORKER_CONNECTIONS: "2048"

nginx.conf의 동등한 설정

client_body_buffer_size 16k;
client_max_body_size 128m;
large_client_header_buffers 4 16k;
worker_processes 2;
worker_connections 2048;

이 설정의 대부분은 values.yaml에서 환경 변수로 선언할 수 있습니다. 배포 시, 이 값들은 자동으로 deployment.yaml에 반영됩니다.

방법 3: 데이터베이스 및 업스트림 처리 리소스 조정

개념

Kong이 PostgreSQL을 사용하거나 DB-less 모드로 실행될 때, 리소스 사용량은 허용되는 DB 연결 수와 캐싱 구성에 따라 영향을 받습니다.

구성 방법

env:
KONG_DATABASE: "postgres"
KONG_PG_MAX_CONCURRENT_QUERIES: "100"
KONG_PG_MAX_CONNECTIONS: "200"

Kong 3.x 이상에서는 캐시를 추가로 구성할 수 있습니다:

env:
KONG_DB_CACHE_TTL: 3600 # 캐시 TTL (초)
KONG_DB_CACHE_WARMUP_ENTITIES: "services,routes,plugins"

매개변수 설명

  • KONG_PG_MAX_CONNECTIONS: DB 연결 수 제한
  • KONG_DB_CACHE_TTL: 캐시된 데이터의 생존 시간
  • KONG_DB_CACHE_WARMUP_ENTITIES: 시작 시 캐시에 미리 로드되는 엔티티

이 값들은 APIM 콘솔의 게이트웨이 관리 페이지에서 직접 관리할 수 있습니다.

주요 구성 매개변수 요약 표

Parameter Description Where to Set
resources.limits.cpu / memoryPod의 최대 CPU 및 메모리Deployment / values.yaml
resources.requests.cpu / memory보장된 리소스 할당Deployment / values.yaml
KONG_CLIENT_MAX_BODY_SIZE최대 클라이언트 본문 크기env / nginx.conf
KONG_NGINX_WORKER_PROCESSESNginx 작업자 수env / nginx.conf
KONG_PG_MAX_CONNECTIONSDB 연결 제한env
KONG_DB_CACHE_TTLDB 캐시의 생존 시간env
KONG_DB_CACHE_WARMUP_ENTITIES미리 로드된 캐시 엔티티env