[편집자– 이 게시물은 종합 전자책 F5 NGINX를 활용한 Kubernetes 트래픽 관리: 실용 가이드에서 발췌한 내용입니다. 지금 무료로 다운로드하세요.]
NGINX Ingress Controller는 HTTP 트래픽뿐만 아니라 TCP 및 UDP 트래픽도 부하 분산하므로, 다음을 비롯해 이러한 프로토콜을 기반으로 하는 다양한 앱과 유틸리티의 트래픽을 관리하는 데 사용할 수 있습니다.
- MySQL, LDAP 및 MQTT – 널리 사용되는 여러 애플리케이션에서 활용되는 TCP 기반 앱
- DNS, syslog 및 RADIUS – 엣지 디바이스 및 비트랜잭션 애플리케이션에서 사용하는 UDP 기반 유틸리티
NGINX Ingress Controller를 사용한 TCP 및 UDP 부하 분산은 다음과 같은 상황에서 Kubernetes 애플리케이션으로 네트워크 트래픽을 분산하는 데에도 효과적인 솔루션입니다:
- 엔드투엔드 암호화(EE2E)를 사용하며, NGINX Ingress Controller 대신 애플리케이션에서 암호화 및 복호화를 처리하는 경우
- TCP 또는 UDP 기반 애플리케이션을 위한 고성능 부하 분산이 필요한 경우
- 기존 네트워크(TCP/UDP) 로드 밸런서를 Kubernetes 환경으로 마이그레이션할 때 변경 사항을 최소화하려는 경우
NGINX Ingress Controller에는 TCP/UDP 부하 분산을 지원하는 두 가지 NGINX Ingress 리소스가 제공됩니다:
- GlobalConfiguration 리소스는 일반적으로 클러스터 관리자가 DevOps 팀에서 사용할 수 있는 TCP/UDP 포트(
리스너)를 지정하는 데 사용됩니다. 각 NGINX Ingress Controller 배포에는 GlobalConfiguration 리소스를 하나만 사용할 수 있습니다. - TransportServer 리소스는 일반적으로 DevOps 팀이 애플리케이션의 TCP/UDP 부하 분산을 구성하는 데 사용합니다. NGINX Ingress Controller는 관리자가 GlobalConfiguration 리소스에서 생성한 포트에서만 수신 대기합니다. 이를 통해 포트 충돌을 방지하고, DevOps 팀이 관리자가 안전하다고 미리 지정한 포트만 외부 공개 서비스에 노출하도록 하여 보안을 한층 강화합니다.
다음 다이어그램은 GlobalConfiguration 및 TransportServer 리소스의 사용 사례를 보여줍니다. gc.yaml에서 클러스터 관리자는 GlobalConfiguration 리소스에 TCP 및 UDP 리스너를 정의합니다. ts.yaml에서 DevOps 엔지니어는 트래픽을 MySQL 배포로 라우팅하는 TransportServer 리소스에서 TCP 리스너를 참조합니다.

The GlobalConfiguration resource in gc.yaml의 GlobalConfiguration 리소스는 두 개의 리스너를 정의합니다. 하나는 syslog 서비스에 연결하기 위한 포트 514의 UDP 리스너이고, 다른 하나는 MySQL 서비스에 연결하기 위한 포트 5353의 TCP 리스너입니다.
코드 예제를 로드하는 중…
Lines 6–8 of the TransportServer resource in ts.yaml에 있는 TransportServer 리소스의 6~8행은 gc.yaml에 정의된 TCP 리스너를 이름(mysql-tcp)으로 참조하며, 9~14행은 TCP 트래픽을 mysql-db 업스트림으로 전송하는 라우팅 규칙을 정의합니다.
코드 예제를 로드하는 중…
이 예시에서는 DevOps 엔지니어가 MySQL 클라이언트를 사용하여 구성이 정상적으로 작동하는지 확인합니다. 이는 MySQL 배포 내 rawdata_content_schema 데이터베이스의 테이블 목록이 출력되는 것으로 확인할 수 있습니다.
$ echo “SHOW TABLES” | mysql –h <external_IP_address> -P <port> -u <user> –p rawdata_content_schema Enter Password: <password>
Tables_in_rawdata_content_schema
authors
postsUDP 트래픽용 TransportServer 리소스도 비슷한 방식으로 구성합니다. 전체 예제는 GitHub의 NGINX Ingress Controller 리포지토리에 있는 기본 TCP/UDP 부하 분산을 참조하세요. 고급 NGINX 사용자는 리포지토리의 stream-snippets ConfigMap 키를 사용하는 TCP/UDP 부하 분산 지원 예제와 같이 네이티브 NGINX 구성을 사용하여 TransportServer 리소스를 확장할 수 있습니다.
TransportServer 리소스에서 구성할 수 있는 기능에 대한 자세한 내용은 NGINX Ingress Controller 설명서를 참조하세요.
이 게시물은 종합 전자책인 NGINX를 활용한 Kubernetes 트래픽 관리: 실용 가이드에서 발췌한 내용입니다. 지금 무료로 다운로드하세요.
NGINX Plus 기반 NGINX Ingress Controller를 30일 무료 평가판으로 지금 직접 사용해 보거나, 문의하여 사용 사례에 대해 상담해 보세요.
작성자 소개
관련 블로그 게시물
시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.
F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.
Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.
진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.
NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.
Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.
