Ingress Controller 선택 가이드, Part 4: NGINX Ingress Controller 옵션

Cloud Native Computing Foundation(CNCF) Survey 2020에 따르면, NGINX는 Kubernetes용 Ingress Controller 에서 가장 일반적으로 사용되는 Data Plane입니다. 하지만 “NGINX Ingress Controller“가 다른 버전이 하나 더 있다는 사실을 알고 계셨습니까?

왜 혼란이 있는지 알 수 있습니다. 두 Ingress Controller의 특징은 다음과 같습니다.

  • “NGINX Ingress Controller” 라고도 합니다.
  • Open Source
  • GitHub에서 매우 유사한 이름으로 호스팅됨
  • 비슷한 시기에 시작된 프로젝트의 결과

그리고 물론 가장 큰 공통점은 그들이 동일한 기능을 구현한다는 것입니다.

목차

1. NGINX vs Kubernetes Community Ingress Controller
1-1. NGINX Ingress Controller 목표 및 우선순위
2. NGINX Open Source vs NGINX Plus – 상용 에디션으로 업그레이드해야 하는 이유
2-1. 보안 및 규정 준수
2-2. 애플리케이션 성능 및 복원력
3. 다음 단계: NGINX Ingress Controller 사용해 보기

1. NGINX vs Kubernetes Community Ingress Controller

명확성을 위해 다음과 같이 두 버전을 구분합니다.

  • Community version – Community Ingress Controller 는 GitHub의 kubernetes/https-nginx Repo에서 찾을 수 있으며, Kubernetes.io의 문서와 함께 NGINX 오픈 소스를 기반으로 합니다. Kubernetes Community가 NGINX로부터 프로젝트 관리를 돕겠다는 약속을 받아 유지하고 있습니다.
  • NGINX version – NGINX Ingress Controller 는 GitHub의 nginxinc/kubernetes-discrepon Repo에서 찾을 수 있으며, NGINX에 의해 docs.nginx.com의 문서와 함께 개발 및 유지 관리됩니다. 두 가지 버전으로 제공됩니다.
    • NGINX Open Source‑based (무료 및 오픈 소스 옵션)
    • NGINX Plus-based(상업용 옵션)

Kong과 같이 NGINX를 기반으로 하는 다른 Ingress Controller 도 많이 있지만 다행히도 이름을 쉽게 구별할 수 있습니다. 사용 중인 NGINX Ingress Controller 가 무엇인지 잘 모르는 경우 실행 중인 Ingress Controller 의 컨테이너 이미지를 확인한 다음 Docker 이미지 이름을 위에 나열된 Repo와 비교하십시오.

1-1. NGINX Ingress Controller 목표 및 우선순위

NGINX Ingress Controller와 Community Ingress Controller(NGINX 오픈 소스 기반의 다른 Ingress Controller와 함께)의 주요 차이점은 개발 및 배포 모델이며, 이는 서로 다른 목표와 우선 순위를 기반으로 합니다.

  • Development Philosophy(개발 철학) – 모든 NGINX 프로젝트 및 제품에 대한 우리의 최우선 과제는 장기적 안정성과 일관성을 갖춘 빠르고 가벼운 도구를 제공하는 것입니다. 우리는 릴리스 간의 동작 변경, 특히 이전 버전과의 호환성을 깨뜨리는 변경을 피하기 위해 가능한 모든 노력을 다합니다. 업그레이드할 때 예기치 않은 돌발 상황이 발생하지 않을 것을 보장합니다. 또한 Bare Metal, 컨테이너, VM, Public, Private 및 하이브리드 클라우드를 포함한 모든 플랫폼에 배포할 수 있도록 선택할 수 있습니다.
  • Integrated Codebase(통합 코드베이스) – NGINX Ingress Controller는 Load Balancing을 위해 100% 순수 NGINX 오픈 소스 또는 NGINX Plus 인스턴스를 사용하여 기본 NGINX 기능만을 사용하여 모범 사례 구성을 적용합니다. 상호 운용성 테스트의 이점을 얻지 못한 타사 모듈이나 Lua 코드에 의존하지 않습니다. 우리는 많은 타사 저장소에서 Ingress Controller 를 조립하지 않습니다. Load Balancer(NGINX 및 NGINX Plus)와 Ingress Controller 소프트웨어(Go 애플리케이션)를 직접 개발하고 유지 관리합니다. 우리는 Ingress Controller 의 모든 구성 요소에 대한 단일 권한입니다.
  • Advanced Traffic Management(고급 트래픽 관리) – 표준 Kubernetes Ingress 리소스의 제한 사항 중 하나는 주석, ConfigMaps 및 고객 템플릿과 같은 보조 기능을 사용하여 고급 기능으로 사용자 지정해야 한다는 것입니다. NGINX Ingress 리소스는 TCP/UDP, 회로 차단, A/B 테스트, Blue-Green 배포, Header Manipulation, 상호 TLS 인증( mTLS) 및 웹 애플리케이션 방화벽(WAF)을 포함한 Ingress Load Balancing 기능의 구현을 단순화 하는 기본 유형 및 들여쓰기 구성 스타일을 제공합니다.
  • Continual Production Readiness(지속적인 생산 준비) – 모든 릴리스는 지원 가능한 프로덕션 표준에 따라 구축 및 유지 관리됩니다. NGINX 오픈 소스 기반 에디션을 사용하든 NGINX Plus 기반 에디션을 사용하든 이 “엔터프라이즈급” 초점의 이점을 동등하게 누릴 수 있습니다. NGINX 오픈 소스 사용자는 엔지니어링 팀이 GitHub에서 질문에 대한 답변을 얻을 수 있으며 NGINX Plus 구독자는 동급 최고의 지원을 받습니다. 어느 쪽이든 DevOps팀에 NGINX 개발자가 있는 것과 같습니다!

2. NGINX Open Source vs NGINX Plus – 상용 에디션으로 업그레이드해야 하는 이유

여기서는 NGINX Plus 기반 NGINX Ingress Controller 에서 얻을 수 있는 몇 가지 주요 이점에 대해 살펴보겠습니다. 오픈 소스와 상용 Ingress Controller 사이에는 상당한 차이가 있습니다. 프로덕션 환경에서 대규모 Kubernetes 배포 및 복잡한 애플리케이션을 계획하는 경우 상용 Ingress Controller 를 사용하면 일부 주요 영역에서 시간과 비용을 절약할 수 있습니다.

2-1. 보안 및 규정 준수

많은 조직이 운영 환경에서 Kubernetes 애플리케이션을 제공하지 못하는 주된 이유 중 하나는 보안 및 규정 준수를 유지하기 어렵기 때문입니다. NGINX Plus 기반 NGINX Ingress Controller 는 애플리케이션과 고객을 안전하게 보호하는 데 중요한 5가지 사용 사례를 제공합니다.

  • Secure the edge(Edge 보안) – 잘 설계된 Kubernetes 배포에서 Ingress Controller는 Kubernetes 내에서 실행되는 서비스로 흐르는 Data Plane 트래픽의 유일한 Entry Point이므로 WAF(Web Application Firewall)에 이상적인 위치입니다. NGINX App Protect는 NGINX Ingress Controller와 통합되어 OWASP Top 10 및 기타 여러 취약성으로부터 Kubernetes 애플리케이션을 보호하고 PCI DSS 규정 준수를 보장하며 ModSecurity를 능가합니다.
  • Centralize authentication and authorization(인증 및 권한 부여 중앙 집중화) – OAuth 2.0 프레임워크 위에 구축된 OIDC(OpenID Connect) 및 JWT(JSON Web Token) 인증을 사용하여 수신 지점에서 인증 및 SSO(Single Sign-On) 계층을 구현할 수 있습니다.
  • Implement end-to-end encryption(End-to-End 암호화 구현) – 서비스 간 트래픽을 보호해야 하는 경우 Service Mesh를 찾게 될 것입니다. 무료로 제공되는 NGINX Service Mesh는 NGINX Ingress Controller 와 원활하게 통합되어 다른 Mesh보다 대기 시간을 최소화하면서 Ingress 및 Egress mTLS 트래픽을 모두 효율적으로 제어할 수 있습니다.
  • Get timely and proactive patch notifications(시기적절하고 사전 예방 패치 알림 받기) – CVE가 보고되면 구독자는 사전에 알림을 받고 신속하게 패치를 받습니다. 그들은 GitHub에서 업데이트를 주시하거나 패치가 출시되기까지 몇 주 혹은 몇 달을 기다릴 필요 없이 즉시 패치를 적용하여 보안 위험을 줄일 수 있습니다.
  • Be FIPS compliant(FIPS 규정 준수) – FIPS 모드를 활성화하여 NGINX Plus와 통신하는 클라이언트가 신뢰할 수 있는 구현과 함께 강력한 암호를 사용하도록 할 수 있습니다.

2-2. 애플리케이션 성능 및 복원력

가동 시간과 애플리케이션 속도는 개발자와 플랫폼 운영 팀의 핵심 성과 지표(KPI)인 경우가 많습니다. NGINX Plus 기반 NGINX Ingress Controller는 Kubernetes의 약속을 이행하는 데 도움이 되는 5가지 사용 사례를 제공합니다.

  • Get live monitoring(실시간 모니터링) – NGINX Plus 대시보드에는 수백 개의 주요 Load 및 성능 Metric을 표시하므로 느린(또는 작동 중단된) 애플리케이션의 원인을 신속하게 해결할 수 있습니다.
  • Detect and resolve failures faster(장애 감지 및 해결 시간 단축) – TCP 및 UDP Upstream 서버의 상태를 사전에 모니터링하는 활성 상태 확인으로 회로 차단기를 구현합니다.
  • Reconfigure with zero restarts(재시작 없이 재구성) – 신속한 무중단 재구성을 통해 오픈 소스 대안보다 일관된 성능과 리소스 사용률, 짧은 대기 시간으로 애플리케이션을 제공할 수 있습니다.
  • Thoroughly test new features and deployments(새로운 기능 및 구현을 철저히 테스트합니다.) – Key‑Value Store를 활용하여 Reload할 필요 없이 백분율을 변경함으로써 A/B 테스트 및 Blue-Green 배포를 더 쉽게 실행할 수 있습니다.
  • Resolve support needs quickly(지원 요구사항을 신속하게 해결) – 커뮤니티가 질문에 답할 때까지 기다릴 수 없거나 민감한 데이터가 노출될 위험을 감수할 수 없는 조직에는 상업적 지원이 필수적입니다. NGINX 지원은 요구 사항에 맞게 여러 계층에서 사용할 수 있으며 설치, 배포, 디버깅 및 오류 수정에 대한 지원을 제공합니다. 무언가가 “옳지” 않은 것처럼 보일 때도 도움을 받을 수 있습니다.

3. 다음 단계: NGINX Ingress Controller 사용해 보기

오픈 소스 Ingress Controller가 애플리케이션에 적합하다고 판단되면 GitHub Repo에서 빠르게 시작할 수 있습니다.

솔루션 개요를 확인하고 NGINX Plus Ingress Controller 성능을 직접 테스트 및 사용해 보려면 지금 30일 무료 평가판을 신청하거나 사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.