블로그 | NGINX

NGINX Ingress 컨트롤러 버전 2.0: 당신이 알아야 할 것

NGINX-F5-수평-검정-유형-RGB의 일부
브라이언 엘러트 썸네일
브라이언 엘러트
2021년 12월 27일 게시

10월에 F5 NGINX Ingress Controller 버전 2.0 ( nginxinc/kubernetes-ingress ) 을 출시하여 Kubernetes 1.22Ingress API 버전 1( networking.k8s.io/v1 )에 대한 지원을 추가했습니다. 당신은 궁금할 것입니다 - 그게 무슨 상관인가요?

그 "그래서 뭐야"는 미묘하며 우리는 세 가지 상호 관련된 질문에 답함으로써 이에 답할 것입니다.

답변을 읽어 보시고 2022년 1월 11일Kubernetes 버전이 공격할 때의 전투 계획을 시청해 보세요.

쿠버네티스 릴리스가 중요한 이유는 무엇입니까?

이 질문에 대한 답은 간단하면서도 복잡합니다. Kubernetes의 호환성 관리가 어려운 이유는 Kubernetes 운영자가 세 가지 범주의 버전을 관리해야 하기 때문입니다.

  1. Kubernetes 플랫폼 자체 – Kubernetes 팀은 새로운 릴리스가 나올 때마다 이전 버전의 유지 관리를 중단합니다. 이러한 버전을 계속 사용하면 위험 관리 전략에 문제가 생길 수 있으며, Kubernetes 팀의 도움을 더 이상 받을 수 없으므로 문제 해결이 더 어려워집니다. 현재, Kubernetes 프로젝트는 가장 최근의 3개 마이너 릴리스(1.20, 1.21, 1.22)에 대한 릴리스 브랜치를 유지 관리하고 있습니다. Kubernetes 1.19 이상은 약 1년 동안 패치 지원을 받는 반면, 1.18 이하 버전은 약 9개월 동안 패치 지원을 받았습니다. (1.18 및 이전 버전의 기간이 더 짧은 이유는 Kubernetes가 현재 3회가 아닌 1년에 4회 릴리스를 했기 때문입니다).

  2. Kubernetes API – Kubernetes가 릴리스될 때마다 새로운 API가 탄생하고 폐기된 API는 사용되지 않으며, API에 대한 변경 사항은 해당 리소스와 도구에 영향을 미칩니다. Kubernetes 플랫폼을 업그레이드하면 API도 업그레이드해야 할 수 있습니다.

  3. Kubernetes에 배포한 도구 – Kubernetes 또는 해당 API에 대한 주요 변경 사항은 Ingress 컨트롤러와 같은 도구와 해당 리소스가 계속해서 제대로 작동하는지에 영향을 미칠 수 있습니다.

따라서 Kubernetes, Ingress API, NGINX Ingress Controller에 대한 총 3개의 타임라인을 추적해야 합니다. Kubernetes가 손상되는 것을 방지하려면 Kubernetes 버전이 API 및 NGINX Ingress Controller와 호환되는 적절한 지점을 찾아야 합니다. 세 가지 구성 요소 중 하나라도 호환성을 확인하지 않고 업그레이드하면 심각한 결과가 초래될 수 있습니다. 세 가지 구성 요소가 모두 서로 호환되지 않는다면... 축하합니다. 앱이 망가졌습니다!

Ingress API는 무엇이고 networking.k8s.io/v1은 왜 중요한가요?

Ingress API를 사용하면 Ingress 컨트롤러가 Kubernetes 앱을 안전하게 노출할 수 있습니다. networking.k8s.io/v1 API(일명 Ingress API v1)은 Kubernetes 1.19에서 도입되었습니다. 당시 Kubernetes는 v1beta1v1 을 모두 지원했으며 한 버전을 다른 버전으로 자동 표시했습니다. API 버전의 이러한 "비밀리에" 호환성은 운영상 이점이 있지만 계획 수립에 방해가 될 수도 있습니다.

Kubernetes 1.22가 출시되면서 v1이 Ingress API의 유일한 버전이 되었습니다. 이는 Ingress API v1이 "the one"이 되면서 모든 베타 버전( extensions/v1beta1networking.k8s.io/v1beta1 )이 더 이상 사용되지 않기 때문에 중요합니다. 이는 아직 Ingress API v1을 채택하지 않은 조직에게는 방해가 될 수 있지만, NGINX에서는 이 변화를 좋은 신호로 봅니다. Ingress API의 베타 버전 출시는 성숙하고 완전히 실현된 API로의 졸업을 알립니다. 이제, 이 변화가 왜 중요할까요? 음, 그건 버전 관리와 다시 관련이 있어요. 기존 클러스터를 Kubernetes 1.22로 업그레이드했지만 v1beta1 Ingress 관련 리소스를 계속 사용하는 경우를 가정해 보겠습니다. 축하합니다. Ingress 리소스가 손상되었습니다!

NGINX Ingress Controller 2.0은 현재 고객에게 어떤 영향을 미칩니까?

NGINX Ingress Controller는 Ingress API와 긴밀하게 결합되어 있기 때문에 v1이 출시되면 제품으로서 우리에게 큰 영향을 미칠 뿐만 아니라 고객인 여러분에게도 큰 영향을 미칩니다. 따라서 NGINX Ingress Controller 버전 번호를 1.x 에서 2.x 로 변경하게 되었습니다. Ingress API v1을 활용하도록 NGINX Ingress Controller 2.0을 재구성하여 Kubernetes 1.22와 완벽하게 호환되도록 만들었습니다.

NGINX Ingress Controller를 사용하는 경우 Kubernetes, Ingress 리소스 또는 NGINX Ingress Controller가 손상되는 것을 방지하기 위해 버전에 따라 즉시 몇 가지 작업을 수행해야 합니다.

  • Kubernetes 1.18 및 이전 버전:

    • 사용 가능한 모든 기능 세트를 최대한 활용하려면 NGINX Ingress Controller 1.12를 사용해야 합니다. (NGINX Ingress Controller 2.0으로 업그레이드하는 경우 Kubernetes 1.19 이상으로도 업그레이드해야 합니다.)

    • Kubernetes 1.18은 다음 Kubernetes 릴리스 이후에는 지원되지 않으므로 향후 몇 개월 내에 Kubernetes(및 NGINX Ingress Controller)의 최신 버전으로 마이그레이션하기 위한 계획을 세우세요.

  • 쿠버네티스 1.19–1.21:

    • NGINX Ingress Controller 2.0으로 업그레이드하세요.

    • 아직 Ingress 관련 리소스를 networking.k8s.io/v1 로 마이그레이션하지 않았다면( NGINX Ingress Controller 2.0 릴리스 노트 참조) 지금 계획을 만드세요. Kubernetes 1.19~1.21은 Ingress API의 모든 현재 버전( v1beta1v1 모두)을 지원하여 바로 변환할 수 있는 기회를 제공합니다.

    • 아직 수행하지 않았다면 즉시 Ingress 및 IngressClass 리소스를 networking.k8s.io/v1 로 이동하세요.

      • Ingress 리소스에서 더 이상 사용되지 않는 kubernetes.io/ingress.class 어노테이션을 사용하는 경우 ingressClassName 필드로 전환하는 것이 좋습니다.

      • 업데이트를 계획하려면 설명서와 예제 ( networking.k8s.io/v1 및 Ingress 리소스의 ingressClassName 필드에서 사용 가능)를 활용하세요.

  • 쿠버네티스 1.22:

    • 이전 버전의 NGINX Ingress Controller는 Kubernetes 1.22와 호환되지 않으며 Ingress API v1을 지원하지 않으므로 이미 NGINX Ingress Controller 2.0을 실행 중인지 확인하세요.

NGINX Ingress Controller의 (그다지) 간략하지 않은 역사

NGINX Ingress Controller는 2016년 첫 출시 이후, 아직 초기 단계인 도구에서 Kubernetes 네트워킹을 위한 최강의 도구로 성장했습니다. 출시부터 현재까지의 진화를 살펴보겠습니다.

2016 ( v0.5.0 )

NGINX 엔지니어 Michael Pleshakov가 GitHub repo ( nginxinc/kubernetes-ingress ) 에 첫 번째 항목을 게시하여 NGINX와 F5 NGINX Plus를 Kubernetes Ingress 컨트롤러(KIC)로 사용할 수 있게 되었습니다.

NGINX Ingress Controller가 KubeCon EU 2016 에서 처음으로 대중에 공개되었습니다. 녹음을 확인하세요: 1일차, NGINX를 사용하여 Kubernetes용 고급 부하 분산 솔루션 만들기; KubeCon EU 2016 .

2017 ( v1.0.0 )

이 프로젝트는 NGINX Plus 기반 버전에서 JSON 웹 토큰(JWT)에 대한 주요 지원을 포함하여 프로덕션에 적합한 상태를 달성했습니다.

NGINX Conf 2017에서 Michael Pleshakov는 Kubernetes에서 부하 분산 애플리케이션을 위한 Ingress 컨트롤러로 NGINX Plus를 사용하여 고급 부하 분산을 포함한 프로덕션 기능을 시연했습니다.

2018

NGINX Ingress Controller는 가시성, 사용 편의성 및 유연성 측면에서 큰 개선을 보였습니다.

  • 5월( v1.2.0 ) – 이 프로젝트는 새로운 NGINX Plus API를 채택하고 nginx-ingress 이미지가 공식 NGINX Docker Hub 로 이동합니다. 이 버전에서는 gRPC, 수동 상태 검사, Helm 차트, Prometheus에 대한 지원이 처음으로 추가되었습니다.
  • 8월( v1.3.0 ) - NGINX Plus 고객은 이제 Prometheus로 메트릭을 내보내고 활성 상태 검사를 활용할 수 있으며, 모두가 Helm 차트 개선, 병합 가능한 Ingress 리소스, 사용자 정의 템플릿의 보다 쉬운 관리의 혜택을 누릴 수 있습니다( Kubernetes 릴리스 1.3.0용 NGINX Ingress Controller 발표 참조 ).
  • 11월( v1.4.0 ) - TCP/UDP 지원이 추가되어 레이어 4 트래픽 관리가 가능해졌습니다. 기타 기능으로는 사용자 정의 주석의 보다 쉬운 개발 및 Two Choices 부하 분산 알고리즘을 통한 Random 지원이 포함됩니다( Kubernetes 릴리스 1.4.0용 NGINX Ingress Controller 발표 참조 ).

NGINX Conf 2018에서 Michael Pleshakov가 NGINX를 Kubernetes Ingress Controller로 사용하는 방법 에 대한 강연을 합니다. 이 강연에서 그는 Helm을 사용하여 NGINX Ingress Controller를 배포하는 방법, HTTP 및 TCP/UDP 부하 분산을 구성하는 방법, Prometheus로 모니터링하는 방법, 문제를 해결하는 방법을 공유합니다.

2019

Kubernetes Ingress 리소스를 대체하는 표준 리소스를 선보이며, 이를 통해 고급 기능을 더 쉽고 안정적으로 실행할 수 있게 되었습니다.

차세대 NGINX Ingress Controller 에서 Michael Pleshakov는 NGINX Conf 2019에 복귀하여 블루-그린 배포 및 A/B 테스트를 포함한 사용 사례에 대한 VS/VSR을 시연합니다.

2020

NGINX Ingress 리소스에 대한 수많은 개선 사항 외에도 올해의 주요 주제는 생태계 도구 및 NGINX 제품과의 통합입니다.

NGINX 및 OpenShift를 사용한 보안 프로덕션 앱 에서는 기술 마케팅 엔지니어인 Amir Rawdat가 NGINX Ingress Operator를 사용하는 방법, 교차 기능 프로비저닝을 위한 역할 기반 액세스 제어(RBAC) 활용, NGINX App Protect를 사용하여 컨테이너화된 앱을 보호하는 방법, JWT를 사용하여 클라이언트를 검증하는 방법을 보여줍니다.

2021

보안은 더 많은 생태계 통합과 함께 주요 주제입니다.

NGINX Sprint 2.0 세션인 '엔드 투 엔드 암호화를 사용한 마이크로서비스 마스터링' 에서 소프트웨어 엔지니어인 Aidan Carson은 NGINX Ingress Controller를 사용하여 에지를 보호하는 방법, NGINX Service Mesh를 사용하여 서비스 간에 안전한 액세스 제어를 설정하는 방법, 두 제품을 모두 사용하여 mTLS를 사용하여 송신 트래픽을 보호하는 방법을 시연합니다.

다음 단계: NGINX Ingress Controller를 사용해 보세요

앱에 오픈소스 Ingress 컨트롤러가 적합하다고 결정했다면 GitHub 저장소 에서 NGINX 오픈소스 기반 NGINX Ingress 컨트롤러를 사용하여 빠르게 시작할 수 있습니다.

대규모 프로덕션 배포의 경우 NGINX Plus 기반의 상용 NGINX Ingress Controller를 사용해 보시기 바랍니다. NGINX App Protect가 포함된 무료 30일 체험판을 이용할 수 있습니다.


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."