NGINX Ingress Controller, Service Mesh, Gateway API 살펴보기
이 포스트에서는 NGINX가 오늘날 가장 인기 있는 NGINX Ingress Controller 를 만드는 과정에서의 생각과 반성,
그리고 향후 Kubernetes 애플리케이션 연결성을 관리하기 위해 최고의 능력을 제공하는 방법에 대해 공유하고자 합니다.
Kubernetes 에서의 애플리케이션 연결은 매우 복잡할 수 있습니다.
특히 On-premises, 공용, 사설, 하이브리드 및 멀티 클라우드를 포함한 다양한 클라우드 환경에서 수백 개, 심지어 수천 개의 컨테이너를 배포하는 경우입니다. NGINX에서는 Kubernetes 클러스터 내부 및 외부로의 연결성을 통합적으로 관리하는 접근 방식을 강력히 지지하며,
이를 통해 개발, 인프라, 플랫폼 엔지니어링 및 보안 팀의 작업을 크게 단순화하고 효율화 할 수 있다고 믿고 있습니다.
목차
1. Kubernetes API를 사용한 NGINX Ingress Controller
2. Ingress Controller vs Service Mesh
3. Ingress Controller 대신 Gateway API
3-1. GAMMA 하위 그룹 구성
4. NGINX Ingress Controller 시작하기
1. Kubernetes API를 사용한 NGINX Ingress Controller
NGINX는 기업용 Kubernetes 네이티브 애플리케이션 전달에 대한 수요에 대응하기 위해 NGINX Ingress Controller 의 첫 번째 버전을 출시했습니다.
NGINX Ingress Controller 는 로드 밸런싱, SSL 종료, URI 재작성, 세션 지속성, JWT 인증 및 기타 주요 애플리케이션 전달 기능으로 사용자 경험을 향상시키는 데 도움을 줍니다.
이는 세계에서 가장 인기 있는 데이터 플레인인 NGINX 위에 구축되며 Kubernetes Ingress API를 활용합니다.
NGINX Ingress Controller 는 배포와 구성의 용이성, 심한 부하에서도 낮은 자원 사용량, 그리고 빠르고 신뢰할 수 있는 작동으로 인해 즉각적인 인기를 얻었습니다.

여정이 진행됨에 따라, HTTP 이외의 프로토콜 지원 및 보안 정책과 같은 맞춤형 요청 처리 정책을 첨부할 수 없는 등
Kubernetes API의 Ingress 객체에 한계에 도달했습니다.
이러한 제한 사항으로 인해, NGINX는 Custom Resource Definitions (CRDs)를 도입하여 NGINX Ingress Controller 의 기능을 향상시키고 고객들에게 고급 사용 사례를 가능하게 했습니다.
NGINX Ingress Controller 는 CRDs VirtualServer, VirtualServerRoute, TransportServer 및 정책을 제공하여 Kubernetes 클러스터의 가장자리에서 API Gateway, 로드 밸런서 및 Ingress 기능에 대한 관찰 가능성과 함께 성능, 복원력, 가동 시간 및 보안을 향상합니다.
빈번한 앱 릴리스를 지원하기 위해 이러한 NGINX CRD는 다중 테넌트 개발 및 운영 팀에서 역할 중심의 셀프 서비스 거버넌스를 지원합니다.

릴리스 3.1 에서는 JWT 인증을 추가하고 Deep Service Insight를 도입하여 NGINX Ingress Controller 뒤의 애플리케이션 상태를 모니터링 할 수 있도록 지원했습니다.
이는 온프레미스에서 클라우드에서와 같은 고급 장애 조치 시나리오를 구현하는 데 도움이 됩니다.
로드맵에는 다른 많은 기능이 계획되어 있으므로 새로운 릴리스를 기다려주세요.
NGINX Ingress Controller 웹 페이지에서는 복잡성을 줄이고 가동 시간을 늘리며 규모에 맞게 앱의 상태와 성능에 대한 더 나은 인사이트를 제공하는 방법에 대해 자세히 알아볼 수 있습니다.
2. Ingress Controller + Service Mesh
Kubernetes 앱 연결성을 위한 NGINX Service Mesh를 도입하여 Kubernetes 클러스터 내에서 보안 및 가시성을 포함한 다양한 서비스 간 연결성 사용 사례를 지원하는 목적에 맞게 개발된 가벼우면서도 포괄적인 솔루션을 제공하여 우리의 Kubernetes 앱 연결성 여정을 계속 진행했습니다.

NGINX Service Mesh와 NGINX Ingress Controller 는 동일한 데이터 플레인 기술을 활용하며, 클러스터 내부 및 외부로의 통합된 연결성을 위해 밀접하고 원활하게 통합될 수 있습니다.
최신 릴리스(버전 2.0) 이전까지 NGINX Service Mesh는 SMI(SMI Specification) 사양과 특정 API 서버를 사용하여 Kubernetes 클러스터 내에서 서비스 간 연결성을 제공했습니다.
그러나 2.0 버전에서는 SMI 리소스를 폐기하고 Gateway API for Mesh Management and Administration (GAMMA)의 리소스를 모방하여 대체하기로 결정했습니다.
이 접근 방식을 통해 동일한 CRD 유형을 활용하여 통합된 남북방향 및 동서방향 연결성을 보장하며, 구성 및 운영을 간소화하고 효율화할 수 있습니다.
NGINX Service Mesh는 GitHub에서 무료로 다운로드 할 수 있습니다.
3. Ingress Controller 대신 Gateway API
Gateway API는 Kubernetes에서 앱과 서비스 네트워킹을 개선하고 표준화하기 위한 오픈소스 프로젝트입니다. Kubernetes 커뮤니티에서 관리되며, Gateway API 사양은 프로덕션 환경에서 Ingress 리소스의 제한 사항을 해결하기 위해 발전해왔습니다.
이러한 제한 사항에는 요청 처리에 대한 세밀한 정책 정의와 다중팀 및 역할 간의 구성 제어 위임이 포함됩니다. Gateway API는 흥미로운 프로젝트이며, Gateway API의 도입 이후로 NGINX는 적극적으로 참여하고 있습니다.

그러나 NGINX는 의도적으로 NGINX Ingress Controller 에 Gateway API 사양을 포함시키지 않았습니다.
왜냐하면 NGINX Ingress Controller가 다양한 사용 사례를 다루는 강력한 CRD 세트를 이미 갖추고 있으며, 그 중 일부는 Gateway API가 해결하려는 동일한 사용 사례입니다.
Gateway API와 Kubernetes 연결의 모든 측면을 다루는 별도의 새 프로젝트인 NGINX Kubernetes Gateway를 독립적으로 시작하기로 결정했습니다.
NGINX Ingress Controller 만 사용하는 대신 NGINX Kubernetes Gateway 프로젝트를 시작한 이유는 다음과 같습니다:
- 제품의 안정성, 신뢰성 및 프로덕션 준비 상태를 보장하기 위해서입니다(성숙한 엔터프라이즈급 Ingress 컨트롤러에 베타 수준의 사양을 포함시키고 싶지 않았습니다).
- 공급업체별 CRD와 혼합하지 않고 Gateway API 리소스에 대한 포괄적이고 공급업체 중립적인 구성 상호 운용성을 제공하기 위해서입니다.
- 쉽고 빠르고 안정적이며 안전한 Kubernetes 연결을 제공하기 위해 Data Plane 및 Control Plane 아키텍처 선택과 결정을 실험하고 미래 지향적인 방향으로 발전시키기 위해서입니다.
3-1. GAMMA 하위 그룹 구성
Gateway API는 서비스 메시 사용 사례에 대한 Gateway API 사양의 기능과 리소스를 조사하고 정의하기 위해 GAMMA 하위 그룹을 구성했습니다.
NGINX는 Gateway API에서 통합된 남북 및 동서 Kubernetes 연결의 장기적인 미래를 보고 이 방향으로 향하고 있습니다.
Gateway API는 업체 및 프로젝트 간의 협업적인 노력이며, 경험과 전문지식, 공통 지점 및 공동 결정을 기반으로 Kubernetes 사용자를 위해 더 나은 것을 구축하기 위해 모두 함께 작업하고 있습니다.
개별 구현이 혁신을 이루고 데이터 플레인이 빛날 수 있는 여지가 항상 있을 것입니다. NGINX Kubernetes Gateway를 통해 NGINX는 Gateway API의 네이티브 NGINX 구현에 대한 작업을 계속하며, Kubernetes 앱 연결의 미래를 함께 형성하는 데 참여하는 것을 권장합니다.
NGINX Kubernetes Gateway에 참여하는 방법은 다음과 같습니다:
- 기여자로 프로젝트에 참여하기
- 실험실에서 구현해 보기
- 테스트 및 피드백 제공하기
프로젝트에 참여하려면 GitHub의 NGINX Kubernetes Gateway를 방문하세요.
Kubernetes Ingress API의 이러한 발전에도 불구하고, NGINX Ingress Controller 는 어디론가 사라지지 않고 Kubernetes 클러스터의 가장자리에서 앱 연결을 관리해야하는 사용자의 현재 및 미래적인 요구를 충족시키기 위해 계속 투자하고 개발할 것입니다.
4. NGINX Ingress Controller 시작하기
NGINX Kubernetes 솔루션으로 애플리케이션 제공을 간소화하는 방법에 대해 자세히 알아보려면 NGINX STORE에 문의해 보세요.
아래 뉴스레터를 구독하고 NGINX와 NGINX STORE의 최신 정보들을 빠르게 전달 받아보세요.
댓글을 달려면 로그인해야 합니다.