편집자 - 이 게시물은 10부작 시리즈의 일부입니다.
또한 전체 블로그 세트를 무료 전자책인 ' 테스트에서 프로덕션까지 Kubernetes 활용' 으로 다운로드할 수 있습니다.
2020년은 우리 중 거의 누구도 잊지 못할 한 해였습니다. 학교, 기업, 공공 서비스가 갑자기 문을 닫으면서 우리는 갑자기 지역 사회에서 고립되었고, 안전과 재정적 안정에 대한 불확실성에 빠졌습니다. 이제 이런 일이 2000년이나 심지어 2010년에 일어났다고 상상해보세요. 무엇이 달라질까요? 기술 . 의료, 스트리밍 비디오, 원격 협업 도구 등 우리가 당연하게 여기는 고품질 디지털 서비스가 없다면 팬데믹은 매우 다른 경험이 될 것입니다. 2020년의 기술이 지난 수십 년과 크게 다른 점은 무엇일까요? 컨테이너와 마이크로서비스 .
일반적으로 컨테이너 와 쿠버네티스를 활용하는 마이크로서비스 아키텍처는 디지털 경험의 출시 시간을 단축하여 비즈니스 성장과 혁신을 촉진합니다. 기존 아키텍처와 함께 사용하거나 단독으로 사용할 경우 이러한 최신 앱 기술은 뛰어난 확장성과 유연성, 빠른 배포, 심지어 비용 절감까지 가능하게 해줍니다.
2020년 이전에는 대부분 고객이 디지털 혁신 전략의 일환으로 마이크로서비스를 도입하기 시작했지만, 팬데믹으로 인해 앱 현대화가 정말 가속화되었습니다. 2020년에 NGINX 사용자를 대상으로 실시한 설문 조사에 따르면 응답자의 60%가 프로덕션에서 마이크로서비스를 사용하고 있는 것으로 나타났습니다. 이는 2019년의 40%보다 증가한 수치이며, 컨테이너는 다른 최신 앱 기술보다 두 배 이상 인기가 높습니다.
Kubernetes는 컨테이너화된 앱을 관리하기 위한 사실상의 표준입니다. 이는 Cloud Native Computing Foundation(CNCF)의 2020년 설문 조사 에서 입증되었으며, 응답자의 91%가 Kubernetes를 사용하고 있으며, 그 중 83%는 프로덕션에 Kubernetes를 사용하고 있습니다. 많은 조직이 Kubernetes를 도입할 때 상당한 아키텍처 변화에 대비하지만, 대규모로 최신 앱 기술을 실행함으로써 조직에 미치는 영향에 대해서는 놀랍니다. Kubernetes를 실행 중이라면 다음의 세 가지 비즈니스에 중요한 장벽을 모두 겪었을 가능성이 높습니다.
CNCF 클라우드 네이티브 대화형 환경은 마이크로서비스 기반 애플리케이션을 지원하는 데 필요한 인프라의 복잡성을 잘 보여줍니다. 조직은 다양한 기술에 능숙해져야 하는데, 그로 인해 인프라 잠금, 섀도 IT, 도구 확산, 인프라 유지 관리를 담당하는 사람들의 가파른 학습 곡선 등의 문제가 발생합니다.
대부분의 조직적 문제와 마찬가지로 쿠버네티스의 과제를 극복하기 위한 답은 기술과 프로세스의 조합입니다. 이 게시물의 나머지 부분에서는 기술 구성 요소에 초점을 맞추겠지만 프로세스 및 기타 주제에 대한 향후 블로그에도 주목하세요.
쿠버네티스는 오픈 소스 기술이기 때문에 구현 방법이 다양합니다. 일부 조직에서는 자체적인 바닐라 Kubernetes를 선호하는 반면, 많은 조직에서는 Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift Container Platform, Rancher 등의 서비스가 제공하는 유연성, 규범성 및 지원 의 조합에서 가치를 찾습니다.
쿠버네티스 플랫폼을 사용하면 쉽게 구축하고 실행할 수 있지만, 깊이보다는 광범위한 서비스에 중점을 둡니다. 따라서 필요한 모든 서비스를 한곳에서 얻을 수 있지만, 대규모로 진정한 프로덕션 준비에 필요한 기능 세트를 제공하지는 않을 가능성이 큽니다. 즉, Kubernetes가 많은 고객을 실망시키는 부분인 고급 네트워킹 및 보안에 초점을 맞추지 않습니다.
Kubernetes를 프로덕션 수준으로 만들려면 다음 순서로 세 가지 구성 요소를 추가해야 합니다.
클러스터 내부 및 외부로 트래픽을 전송하기 위한 확장 가능한 유입-유출 계층
이는 Kubernetes 네트워킹의 복잡성을 추상화하고 Kubernetes 클러스터 내부의 서비스와 외부 서비스 간의 브리지를 연결하는 특수한 로드 밸런서인 Ingress 컨트롤러를 통해 달성됩니다. 이 구성 요소는 복원성을 높이는 기능(예: 고급 상태 검사 및 Prometheus 메트릭), 빠른 확장성(동적 재구성)을 가능하게 하는 기능, 셀프 서비스(역할 기반 액세스 제어[RBAC])를 지원하는 기능을 포함할 경우 프로덕션 등급이 됩니다.
클러스터 전체의 위협으로부터 보호하기 위한 내장 보안 기능
클러스터 외부에서는 "대단위" 보안으로 충분할 수 있지만 클러스터 내부에서는 "세분화된" 보안이 필요합니다. 클러스터의 복잡도에 따라 유연한 웹 애플리케이션 방화벽 (WAF)을 배포해야 하는 세 가지 위치가 있습니다. Ingress 컨트롤러, 서비스별 프록시, Pod별 프록시입니다. 이러한 유연성을 통해 결제와 같은 민감한 앱에는 더 엄격한 통제를 적용하고 위험이 낮은 앱에는 더 느슨한 통제를 적용할 수 있습니다.
클러스터 내 트래픽을 최적화하기 위한 확장 가능한 동서 트래픽 계층
이 세 번째 구성 요소는 Kubernetes 애플리케이션이 기본 도구로 처리할 수 있는 복잡성과 규모 수준을 넘어선 경우에 필요합니다. 이 단계에서는 클러스터 내의 애플리케이션 서비스에 대해 보다 세분화된 트래픽 관리 및 보안을 제공하는 오케스트레이션 도구인 서비스 메시가 필요합니다. 서비스 메시는 일반적으로 컨테이너화된 애플리케이션 간의 애플리케이션 라우팅을 관리하고, 자율적인 서비스 간 상호 TLS(mTLS) 정책을 제공하고 시행하고, 애플리케이션 가용성과 보안에 대한 가시성을 제공하는 역할을 합니다.
이러한 구성요소를 선택할 때는 휴대성과 가시성을 우선시하세요. 플랫폼 독립적인 구성 요소는 복잡성을 줄이고 보안을 강화하며, 팀이 학습해야 할 도구가 적고 비즈니스 요구 사항에 따라 워크로드를 안전하고 쉽게 전환할 수 있습니다. 가시성과 모니터링의 중요성은 과장하기 어렵습니다. Grafana 및 Prometheus와 같은 인기 있는 도구와 통합하면 인프라에 대한 통합된 "단일 창구" 뷰가 생성되어 고객이 문제를 발견하기 전에 팀에서 문제를 감지할 수 있습니다. 이 외에도 프로덕션 수준의 Kubernetes에 반드시 필요하지는 않지만 최신 앱 개발의 필수적인 부분인 다른 보완 기술도 있습니다. 예를 들어, 조직이 기존 앱을 현대화할 준비가 되면 첫 번째 단계 중 하나는 API 게이트웨이를 사용하여 마이크로서비스를 구축하는 것입니다.
당사의 Kubernetes 솔루션은 플랫폼에 구애받지 않으며 프로덕션 등급 Kubernetes를 활성화하는 데 필요한 세 가지 구성 요소를 포함합니다. NGINX Ingress Controller는 유입-유출 계층으로, NGINX App Protect는 WAF로, NGINX Service Mesh는 동-서 계층으로 구성됩니다.
이러한 솔루션은 Kubernetes를 네 가지 주요 영역에서 활성화하여 귀하의 가장 친한 친구가 되도록 도울 수 있습니다.
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 콘텐츠로 리디렉션됩니다."