인그레스 컨트롤러 선택 가이드 3부: 오픈 소스 vs. 기본 제공 vs. 상용

NGINX | 2021년 9월 20일

편집자 – 이 글은 10부작 시리즈의 일부입니다:

  1. 프로덕션급 Kubernetes로 복잡성 줄이기
  2. 고급 트래픽 관리로 Kubernetes의 복원력을 향상하는 방법
  3. Kubernetes에서 가시성을 개선하는 방법
  4. 트래픽 관리 도구를 사용하여 Kubernetes를 보호하는 6가지 방법
  5. 인그레스 컨트롤러 선택 가이드 1부: 요구 사항 파악하기
  6. Ingress 컨트롤러 선택 가이드, 2부: 위험 요소와 미래 대비
  7. 인그레스 컨트롤러 선택 가이드 3부: 오픈 소스 vs. 기본 제공 vs. 상용(이 글)
  8. 인그레스 컨트롤러 선택 가이드 4부: NGINX 인그레스 컨트롤러 옵션
  9. 서비스 메시를 선택하는 방법
  10. 동적 Kubernetes 클라우드 환경에서 NGINX Ingress Controller 성능 테스트

전체 블로그 모음을 무료 eBook으로 다운로드할 수도 있습니다. – Kubernetes를 테스트에서 프로덕션으로 전환하기.

축하합니다! Ingress 컨트롤러 선택 가이드의 첫 두 편을 읽으셨으니, 이제 어떤 컨트롤러를 선택할지 결정할 준비가 거의 끝났습니다. 지금까지 살펴본 내용을 요약해 보겠습니다:

  • In 1부에서는 성능, 예산, 사용 사례, 아키텍처, 소유권 등을 포함한 요구 사항을 파악하는 방법을 설명합니다.
  • In 2부에서는 잘못된 Ingress 컨트롤러를 선택함으로써 발생할 수 있는 위험을 살펴보고, 향후 변화에도 대비할 수 있는 선택을 위해 고려해야 할 핵심 영역을 설명합니다.

Ingress 컨트롤러는 오픈 소스, 기본 제공, 상용의 세 가지 범주로 나뉩니다. 각 범주마다 적합한 사용 사례가 있으므로 선택하기 전에 단기 및 장기 요구 사항을 명확히 파악하는 것이 중요합니다. 이 블로그에서는 각 범주의 장단점을 살펴봅니다.

오픈 소스 Ingress 컨트롤러

많은 오픈 소스 Ingress 컨트롤러는 사용자와 자원봉사 개발자 커뮤니티에서 유지 관리하지만, 일부는 전담 엔지니어링 팀을 두고 있기도 합니다. 가장 널리 사용되는 오픈 소스 Ingress 컨트롤러 중 두 가지는 NGINX를 기반으로 합니다. 하나는 Kubernetes 커뮤니티에서 유지 관리하고, 다른 하나는 NGINX 핵심 엔지니어링 팀이 주도하여 오픈 소스로 공개한 것입니다. NGINX 기반 Ingress 컨트롤러에 대한 자세한 비교는 이 시리즈의 4부를 참조하세요.

  • 장점:
    • 무료이며 커뮤니티 주도 – 많은 개인과 조직이 오픈 소스 프로젝트를 선택하는 이유는 비교할 수 없는 가격(무료!)뿐만 아니라 커뮤니티가 개발한 기술을 선호하기 때문이기도 합니다.
    • 기능 개발 속도 – 이러한 Ingress 컨트롤러는 혁신적인 최신 기능을 더 빠르게 도입하는 경향이 있습니다.
  • 단점 (일반적인 오픈 소스 프로젝트와 공통):
    • 비용(시간) – 손쉬운 설정과 확장을 위한 기본 제공 도구가 부족하므로, 특정 요구 사항에 맞게 사용자 지정하고 우회 방법을 마련하는 데 시간을 들이게 됩니다.
    • 위험성 – 기능 출시 속도를 중시하고 기여자들이 자원봉사자로 참여하기 때문에 안정성, 보안 및 신뢰성에 문제가 발생할 수 있습니다. 일반적인 취약점 및 노출(CVE)에 대한 패치가 아예 제공되지 않거나, CVE가 공개된 후 몇 달이 지나서야 제공될 수 있어 해커가 Ingress 컨트롤러를 공격할 시간이 충분해질 수 있습니다.
    • 지원이 거의 없거나 전혀 없음 – 대부분은 ‘스스로 해결’해야 하며, 의지할 수 있는 것은 본인과 문서뿐입니다. 혼자 해결할 수 없는 문제가 발생하면 도움을 받기가 어렵거나 불가능할 수 있습니다. 사실상 유일한 방법은 커뮤니티 포럼에 문제를 게시한 뒤, 다른 커뮤니티 구성원이 (a) 답변해 주고 (b) 해결 방법을 알고 있기를 바라는 것뿐입니다.
  • 요약: 조직에서 Kubernetes를 처음 시험해 볼 때는 편의성 때문에, 또는 문서에서 무료로 빠르게 시작할 수 있다고 안내하기 때문에 오픈 소스 Ingress 컨트롤러를 선택하는 경우가 많습니다. 이러한 방식은 도입 초기나 테스트 환경 또는 트래픽이 적은 프로덕션 환경에서는 매우 효과적일 수 있습니다.

기본 Ingress 컨트롤러

많은 기본 Ingress 컨트롤러가 오픈 소스 기술을 기반으로 하지만, 완전한 Kubernetes 플랫폼과 더불어 이를 관리하기 위한 지원까지 제공하는 경우가 많은 기업에서 개발하고 유지 관리하므로 별도의 범주로 분류합니다. 이 범주에는 퍼블릭 클라우드 Ingress 컨트롤러, Rancher, Red Hat OpenShift 라우터 등이 포함됩니다.

  • 장점:
    • 무료 또는 저렴한 비용 – 저렴한 가격은 이러한 제품을 사용하게 만드는 매력적인 이유입니다. 이미 플랫폼에 통합되어 있어 처음 시작할 때 시간을 확실히 절약할 수 있습니다.
    • 안정적이며 지원 제공 – 전담 엔지니어링 팀에서 유지 관리하므로 커뮤니티에서 유지 관리하는 Ingress 컨트롤러보다 더 안정적일 수 있습니다. 상용 지원은 일반적으로 기본으로 포함되거나 추가 비용으로 제공됩니다.
  • 단점:
    • 인프라 종속 – 기본 Ingress 컨트롤러는 특정 인프라에 종속되므로, 컨트롤러나 해당 구성을 다른 클라우드로 그대로 이전할 수 없습니다. 따라서 배포 환경마다 서로 다른 Ingress 컨트롤러가 필요하며, 이로 인해 도구가 난립하고 팀의 학습 부담이 커지며 Ingress 컨트롤러의 보안 유지도 더욱 어려워집니다.
    • 기본 기능 – 일반적으로 대규모 배포에 필요한 고급 트래픽 관리 및 보안 기능이 부족합니다.
    • 예측 불가능한 비용(시간 및 금전) – 초기 비용은 없거나 적지만, 애플리케이션이 성장함에 따라 비용이 급격하고 예측 불가능하게 증가할 수 있습니다. Ingress 컨트롤러의 최소 기능 세트에 없는 기능을 앱에 구현하는 데 시간이 들 수 있으며, 앱을 업데이트할 때마다 해당 기능에 대한 회귀 테스트도 수행해야 합니다. 또한 일부 기본 도구는 처음에는 대수롭지 않아 보이는 처리량 요금 때문에 앱의 인기가 높아질수록 클라우드 비용이 크게 치솟을 수 있다는 단점이 있습니다.
  • 요약: 기본 Ingress 컨트롤러는 Kubernetes를 처음 접하고 Amazon Elastic Kubernetes Service(EKS), Google Kubernetes Engine(GKE), Microsoft Azure Kubernetes Service(AKS), Rancher, Red Hat OpenShift Container Platform 등의 관리형 플랫폼을 사용하는 팀에서 널리 선택됩니다. 애플리케이션이 성숙하고 팀이 성장함에 따라 조직은 기본 도구를 교체하기보다는 엔터프라이즈급 Ingress 컨트롤러를 스택에 추가하는 경우가 많습니다.

상용 Ingress 컨트롤러

이러한 Ingress 컨트롤러는 대규모 프로덕션 배포를 지원하도록 설계된 라이선스 제품입니다. 그중 한 가지 예는 NGINX Plus 기반 버전인 F5 NGINX Ingress Controller이며, 이에 대해서는 4부에서 자세히 살펴보겠습니다.

  • 장점:
    • 다양한 기능 세트 – 상용 Ingress 컨트롤러는 고급 트래픽 관리와 대규모 배포의 확장성을 지원하는 강력하고 다양한 기능을 제공합니다. WAF 또는 서비스 메시와 같은 프로덕션급 제품과의 통합 기능도 제공될 수 있습니다.
    • 확장성 – 이러한 옵션은 사용자 지정이나 임시방편이 필요 없는 기본 제공 기능이 더 많은 경우가 많아, 조직에서 시간을 절약하는 데 도움이 됩니다. 자동화 파이프라인에 손쉽게 추가할 수 있어 필요에 따라 인프라를 확장할 수 있습니다.
    • 안정성과 지원 – 상용 제품의 주요 이점 중 하나는 안정성이 뛰어나다는 것입니다. 즉, 릴리스할 때마다 철저한 테스트를 거치며 필요에 따라 정기적인 소프트웨어 업데이트와 보안 패치가 제공됩니다. 일반적으로 다양한 등급의 종합적인 상용 지원이 제공되므로 심각한 문제가 발생해도 몇 분 또는 몇 시간 내에 비공개로 도움을 받을 수 있습니다.
  • 단점:
    • 느린 개발 속도 – 상용 Ingress 컨트롤러에서는 안정성이 중요하기 때문에 기능 개발 속도가 오픈 소스 제품보다 다소 느릴 수 있습니다.
    • 비용(금전) – 상용 제품은 비용이 든다는 것이 현실입니다. 자금보다 개발 여력이 더 많은 조직의 경우, 상황이 달라질 때까지 비용이 도입을 가로막는 결정적인 요인이 될 수 있습니다.
  • 요약: 조직이 확장됨에 따라 팀과 애플리케이션의 복잡성에 맞는 Ingress 컨트롤러를 선택하는 것이 더욱 중요해집니다. 조직의 복잡성이 매우 높아지면 관리 복잡성을 줄이고 새로운 제품 기능의 출시 기간을 단축할 수 있는 상용 Ingress 컨트롤러를 사용하는 것이 합리적입니다.

다음 단계: 옵션 평가

이 단계에서는 요구 사항을 충족하지 못하는 옵션을 제외하고, 사용해 볼 몇 가지 Ingress 컨트롤러로 후보를 좁힐 준비가 되었습니다. 상위 수준의 기능 비교를 시작하기에 좋은 곳 중 하나는 learnk8s입니다. 이 사이트에서는 평가한 Ingress 컨트롤러에 대한 무료 비교표를 제공합니다.

Ingress 컨트롤러를 조사하다 보면 많은 옵션이 NGINX를 기반으로 한다는 사실을 알게 될 것입니다. NGINX 기반 옵션에 대한 개요는 곧 공개될 이 시리즈의 마지막 블로그인 Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress 컨트롤러 옵션에서 확인하세요.


공유

작성자 소개

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.