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 아래에 적용
관련 UI
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 / memory | Pod의 최대 CPU 및 메모리 | Deployment / values.yaml |
resources.requests.cpu / memory | 보장된 리소스 할당 | Deployment / values.yaml |
KONG_CLIENT_MAX_BODY_SIZE | 최대 클라이언트 본문 크기 | env / nginx.conf |
KONG_NGINX_WORKER_PROCESSES | Nginx 작업자 수 | env / nginx.conf |
KONG_PG_MAX_CONNECTIONS | DB 연결 제한 | env |
KONG_DB_CACHE_TTL | DB 캐시의 생존 시간 | env |
KONG_DB_CACHE_WARMUP_ENTITIES | 미리 로드된 캐시 엔티티 | env |