블로그 | NGINX

프로덕션 등급 Kubernetes로 복잡성 감소

NGINX-F5-수평-검정-유형-RGB의 일부
젠 길 썸네일
젠 길
2021년 2월 5일 게시

편집자 - 이 게시물은 10부작 시리즈의 일부입니다.

  1. 프로덕션 등급 Kubernetes로 복잡성 줄이기(이 게시물)
  2. 고급 트래픽 관리를 사용하여 Kubernetes의 복원력을 개선하는 방법
  3. Kubernetes에서 가시성을 개선하는 방법
  4. 트래픽 관리 도구를 사용하여 Kubernetes를 보호하는 6가지 방법
  5. Ingress 컨트롤러 선택 가이드, 1부: 귀하의 요구 사항을 식별하세요
  6. Ingress 컨트롤러 선택 가이드, 2부: 위험과 미래 대비
  7. Ingress 컨트롤러 선택 가이드, 3부: 오픈소스 대 기본값 대비 광고
  8. Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress 컨트롤러 옵션
  9. 서비스 메시를 선택하는 방법
  10. 동적 Kubernetes 클라우드 환경에서 NGINX Ingress 컨트롤러 성능 테스트

또한 전체 블로그 세트를 무료 전자책인 ' 테스트에서 프로덕션까지 Kubernetes 활용' 으로 다운로드할 수 있습니다.

2020년은 우리 중 거의 누구도 잊지 못할 한 해였습니다. 학교, 기업, 공공 서비스가 갑자기 문을 닫으면서 우리는 갑자기 지역 사회에서 고립되었고, 안전과 재정적 안정에 대한 불확실성에 빠졌습니다. 이제 이런 일이 2000년이나 심지어 2010년에 일어났다고 상상해보세요. 무엇이 달라질까요? 기술 . 의료, 스트리밍 비디오, 원격 협업 도구 등 우리가 당연하게 여기는 고품질 디지털 서비스가 없다면 팬데믹은 매우 다른 경험이 될 것입니다. 2020년의 기술이 지난 수십 년과 크게 다른 점은 무엇일까요? 컨테이너와 마이크로서비스 .

일반적으로 컨테이너쿠버네티스를 활용하는 마이크로서비스 아키텍처는 디지털 경험의 출시 시간을 단축하여 비즈니스 성장과 혁신을 촉진합니다. 기존 아키텍처와 함께 사용하거나 단독으로 사용할 경우 이러한 최신 앱 기술은 뛰어난 확장성과 유연성, 빠른 배포, 심지어 비용 절감까지 가능하게 해줍니다.

2020년 이전에는 대부분 고객이 디지털 혁신 전략의 일환으로 마이크로서비스를 도입하기 시작했지만, 팬데믹으로 인해 앱 현대화가 정말 가속화되었습니다. 2020년에 NGINX 사용자를 대상으로 실시한 설문 조사에 따르면 응답자의 60%가 프로덕션에서 마이크로서비스를 사용하고 있는 것으로 나타났습니다. 이는 2019년의 40%보다 증가한 수치이며, 컨테이너는 다른 최신 앱 기술보다 두 배 이상 인기가 높습니다.

Kubernetes는 컨테이너화된 앱을 관리하기 위한 사실상의 표준입니다. 이는 Cloud Native Computing Foundation(CNCF)의 2020년 설문 조사 에서 입증되었으며, 응답자의 91%가 Kubernetes를 사용하고 있으며, 그 중 83%는 프로덕션에 Kubernetes를 사용하고 있습니다. 많은 조직이 Kubernetes를 도입할 때 상당한 아키텍처 변화에 대비하지만, 대규모로 최신 앱 기술을 실행함으로써 조직에 미치는 영향에 대해서는 놀랍니다. Kubernetes를 실행 중이라면 다음의 세 가지 비즈니스에 중요한 장벽을 모두 겪었을 가능성이 높습니다.

  • 문화
    앱 팀이 애자일 개발 및 DevOps와 같은 최신 접근 방식을 도입하더라도 일반적으로 조직은 자체 커뮤니케이션 구조를 반영하는 시스템을 설계한다"는 Conway의 법칙 의 적용을 받습니다. 즉, 분산 애플리케이션은 독립적으로 운영되지만 리소스를 공유하는 분산 팀에 의해 개발됩니다. 이런 구조는 팀의 빠른 실행에 이상적이지만, 동시에 사일로 형성을 조장하기도 합니다. 이로 인해 의사소통 부족(그 자체의 결과가 발생함), 보안 취약성, 도구 난잡함, 일관되지 않은 자동화 관행, 팀 간 충돌이 발생합니다.
  • 복잡성
    엔터프라이즈급 마이크로서비스 기술을 구현하려면 조직에서는 가시성, 보안 및 트래픽 관리를 제공하는 중요한 구성 요소를 하나로 모아야 합니다. 일반적으로 팀은 인프라 플랫폼, 클라우드 기반 서비스, 오픈 소스 도구를 사용하여 이러한 요구를 충족합니다. 이러한 각 전략에는 적합한 점이 있지만 각 전략에는 복잡성을 증가시킬 수 있는 단점이 있습니다. 그리고 단일 조직 내의 여러 팀이 동일한 요구 사항을 충족하기 위해 서로 다른 전략을 선택하는 경우가 너무 많아서 "운영 부채"가 발생합니다. 또한, 팀은 특정 시점에 프로세스와 도구를 선택하고 컨테이너를 사용하여 최신 마이크로서비스 기반 애플리케이션을 배포하고 실행하는 것과 관련된 요구 사항이 변경되더라도 계속 사용합니다.

    CNCF 클라우드 네이티브 대화형 환경은 마이크로서비스 기반 애플리케이션을 지원하는 데 필요한 인프라의 복잡성을 잘 보여줍니다. 조직은 다양한 기술에 능숙해져야 하는데, 그로 인해 인프라 잠금, 섀도 IT, 도구 확산, 인프라 유지 관리를 담당하는 사람들의 가파른 학습 곡선 등의 문제가 발생합니다.

  • 보안
    클라우드 기반 앱과 기존 앱의 보안 요구 사항은 크게 다릅니다. 왜냐하면 링펜스 보안과 같은 전략은 Kubernetes에서 실행 가능하지 않기 때문입니다. 대규모 생태계와 컨테이너화된 앱의 분산된 특성은 공격 표면이 훨씬 더 크다는 것을 의미하며, 외부 SaaS 애플리케이션에 대한 의존성은 직원과 외부인이 악성 코드를 삽입하거나 정보를 빼낼 수 있는 기회가 훨씬 더 많다는 것을 의미합니다. 또한 문화와 복잡성 영역에서 설명한 결과(특히 도구 확산)는 최신 앱의 보안과 복원력에 직접적인 영향을 미칩니다. 생태계 내의 다양한 도구를 사용하여 동일한 문제를 해결하는 것은 비효율적일 뿐만 아니라, 각 구성 요소를 올바르게 구성하는 방법을 배워야 하는 SecOps 팀에 큰 과제를 안겨줍니다.

해결책: 프로덕션 등급 쿠버네티스

대부분의 조직적 문제와 마찬가지로 쿠버네티스의 과제를 극복하기 위한 답은 기술과 프로세스의 조합입니다. 이 게시물의 나머지 부분에서는 기술 구성 요소에 초점을 맞추겠지만 프로세스 및 기타 주제에 대한 향후 블로그에도 주목하세요.

쿠버네티스는 오픈 소스 기술이기 때문에 구현 방법이 다양합니다. 일부 조직에서는 자체적인 바닐라 Kubernetes를 선호하는 반면, 많은 조직에서는 Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift Container Platform, Rancher 등의 서비스가 제공하는 유연성, 규범성 및 지원 의 조합에서 가치를 찾습니다.

쿠버네티스 플랫폼을 사용하면 쉽게 구축하고 실행할 수 있지만, 깊이보다는 광범위한 서비스에 중점을 둡니다. 따라서 필요한 모든 서비스를 한곳에서 얻을 수 있지만, 대규모로 진정한 프로덕션 준비에 필요한 기능 세트를 제공하지는 않을 가능성이 큽니다. 즉, Kubernetes가 많은 고객을 실망시키는 부분인 고급 네트워킹 및 보안에 초점을 맞추지 않습니다.

Kubernetes를 프로덕션 수준으로 만들려면 다음 순서로 세 가지 구성 요소를 추가해야 합니다.

  1. 클러스터 내부 및 외부로 트래픽을 전송하기 위한 확장 가능한 유입-유출 계층
    이는 Kubernetes 네트워킹의 복잡성을 추상화하고 Kubernetes 클러스터 내부의 서비스와 외부 서비스 간의 브리지를 연결하는 특수한 로드 밸런서인 Ingress 컨트롤러를 통해 달성됩니다. 이 구성 요소는 복원성을 높이는 기능(예: 고급 상태 검사 및 Prometheus 메트릭), 빠른 확장성(동적 재구성)을 가능하게 하는 기능, 셀프 서비스(역할 기반 액세스 제어[RBAC])를 지원하는 기능을 포함할 경우 프로덕션 등급이 됩니다.

    확장 가능한 인그레스-이그레스 계층을 제공하는 일반 인그레스 컨트롤러가 있는 Kubernetes 환경의 토폴로지 다이어그램

  2. 클러스터 전체의 위협으로부터 보호하기 위한 내장 보안 기능
    클러스터 외부에서는 "대단위" 보안으로 충분할 수 있지만 클러스터 내부에서는 "세분화된" 보안이 필요합니다. 클러스터의 복잡도에 따라 유연한 웹 애플리케이션 방화벽 (WAF)을 배포해야 하는 세 가지 위치가 있습니다. Ingress 컨트롤러, 서비스별 프록시, Pod별 프록시입니다. 이러한 유연성을 통해 결제와 같은 민감한 앱에는 더 엄격한 통제를 적용하고 위험이 낮은 앱에는 더 느슨한 통제를 적용할 수 있습니다.

    일반 Ingress 컨트롤러와 함께 배포된 WAF가 있는 Kubernetes 환경의 토폴로지 다이어그램

  3. 클러스터 내 트래픽을 최적화하기 위한 확장 가능한 동서 트래픽 계층
    이 세 번째 구성 요소는 Kubernetes 애플리케이션이 기본 도구로 처리할 수 있는 복잡성과 규모 수준을 넘어선 경우에 필요합니다. 이 단계에서는 클러스터 내의 애플리케이션 서비스에 대해 보다 세분화된 트래픽 관리 및 보안을 제공하는 오케스트레이션 도구인 서비스 메시가 필요합니다. 서비스 메시는 일반적으로 컨테이너화된 애플리케이션 간의 애플리케이션 라우팅을 관리하고, 자율적인 서비스 간 상호 TLS(mTLS) 정책을 제공하고 시행하고, 애플리케이션 가용성과 보안에 대한 가시성을 제공하는 역할을 합니다.

    일반 Ingress 컨트롤러와 함께 배포된 WAF와 확장 가능한 동서 계층을 제공하는 서비스 메시가 있는 Kubernetes 환경의 토폴로지 다이어그램

이러한 구성요소를 선택할 때는 휴대성과 가시성을 우선시하세요. 플랫폼 독립적인 구성 요소는 복잡성을 줄이고 보안을 강화하며, 팀이 학습해야 할 도구가 적고 비즈니스 요구 사항에 따라 워크로드를 안전하고 쉽게 전환할 수 있습니다. 가시성과 모니터링의 중요성은 과장하기 어렵습니다. Grafana 및 Prometheus와 같은 인기 있는 도구와 통합하면 인프라에 대한 통합된 "단일 창구" 뷰가 생성되어 고객이 문제를 발견하기 전에 팀에서 문제를 감지할 수 있습니다. 이 외에도 프로덕션 수준의 Kubernetes에 반드시 필요하지는 않지만 최신 앱 개발의 필수적인 부분인 다른 보완 기술도 있습니다. 예를 들어, 조직이 기존 앱을 현대화할 준비가 되면 첫 번째 단계 중 하나는 API 게이트웨이를 사용하여 마이크로서비스를 구축하는 것입니다.

NGINX가 어떻게 도움이 될 수 있는가

당사의 Kubernetes 솔루션은 플랫폼에 구애받지 않으며 프로덕션 등급 Kubernetes를 활성화하는 데 필요한 세 가지 구성 요소를 포함합니다. NGINX Ingress Controller는 유입-유출 계층으로, NGINX App Protect는 WAF로, NGINX Service Mesh는 동-서 계층으로 구성됩니다.

NGINX Ingress Controller와 함께 배포된 NGINX App Protect WAF와 NGINX Service Mesh를 갖춘 Kubernetes 환경의 토폴로지 다이어그램

이러한 솔루션은 Kubernetes를 네 가지 주요 영역에서 활성화하여 귀하의 가장 친한 친구가 되도록 도울 수 있습니다.

  • 자동화 – 앱을 더 빠르고 안전하게 출시하세요
    NGINX Ingress Controller의 트래픽 라우팅 및 앱 온보딩 기능과 NGINX Service Mesh의 NGINX Plus 사이드카 자동 배포를 결합하여 앱을 배포, 확장, 보호 및 업데이트하세요.
  • 보안 – 기존 및 새로운 위협으로부터 고객과 비즈니스를 보호하세요
    NGINX Service Mesh와 NGINX Ingress Controller를 사용하여 서비스 간의 종단 간 암호화를 관리하고 적용하는 동시에 클러스터의 어느 곳에나 NGINX App Protect를 배포하여 잠재적인 장애 지점을 줄입니다.
  • 성과 – 고객과 사용자가 기대하는 디지털 경험 제공
    다른 WAF, Ingress 컨트롤러 및 로드 밸런서보다 우수한 성능을 제공하는 NGINX 솔루션을 사용하여 성능 저하 없이 트래픽 급증과 보안 위협을 손쉽게 처리하세요.
  • 통찰력 – 비즈니스를 발전시키고 고객에게 더 나은 서비스를 제공하세요
    NGINX Ingress Controller와 NGINX Service Mesh에서 앱 성능과 가용성에 대한 타겟형 통찰력을 얻고, 마이크로서비스 앱에서 요청이 어떻게 처리되는지 이해하기 위한 심층적 추적을 활용하세요.

NGINX로 프로덕션 준비 완료

NGINX Ingress Controller는 30일 무료 평가판 으로 제공되며, 여기에는 컨테이너화된 앱을 보호하는 NGINX App Protect가 포함되어 있습니다. 평가판을 최대한 활용하려면 항상 무료인 NGINX 서비스 메시를 추가하는 것이 좋습니다( f5.com 에서 다운로드 가능). 오늘날 귀하는 원하는 클라우드에 BYOL(Bring Your Own License)을 적용할 수 있습니다.


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