개발자

쿠버네티스 서비스 메시 ‘이스티오’ 개념 다지기

Serdar Yegulalp | InfoWorld 2024.05.13
마이크로서비스 아키텍처는 몇 가지 문제를 해결하지만 새로운 문제를 야기하기도 한다. 애플리케이션을 독립적인 서비스로 분할하면 개발, 업데이트, 확장이 간편해진다. 그러나 연결하고 보호해야 할 움직이는 부분이 훨씬 더 많아진다. 모든 네트워크 서비스(부하 분산, 트래픽 관리, 인증, 권한 부여 등)를 관리하는 작업은 매우 복잡해질 수 있다. 
 
ⓒ Getty Images Bank

쿠버네티스 클러스터에서 서비스 사이의 네트워크로 연결된 이 공간을 지칭하는 용어가 서비스 메시다. 구글 프로젝트인 이스티오(Istio)의 핵심은 클러스터의 서비스 메시가 난장판이 되기 전에 관리하는 방법을 제공하는 것이다. 


서비스 메시란? 

네트워크로 연결된 모든 애플리케이션 그룹에는 몇 가지 공통적으로 수행되는 동작이 있다. 예를 들어 여러 서비스 인스턴스를 대상으로 한 부하 분산, 또는 다양한 서비스 조합에 대한 A/B 테스트, 서비스 체인 전반의 엔드투엔드 인증 설정 등이 있다. 이런 동작과 이를 구현하는 방법을 통틀어 서비스 메시라고 한다. 

서비스 메시 관리를 서비스 자체에 맡겨서는 안 된다. 서비스는 이와 같은 하향 작업을 수행하기에는 적합하지 않고, 애초에 서비스 메시 관리는 서비스가 해야 할 일이 되어서도 안 된다. 더 좋은 방법은 서비스와 네트워크 사이에 두 가지 핵심 기능인 관리와 추상화를 수행하는 시스템을 두는 것이다. 
 
  • 관리는 서비스 자체가 부하 분산, 라우팅, 재시도와 같은 네트워크 트래픽 관련 작업을 처리할 필요가 없도록 해준다.
  • 추상화는 관리자를 위한 추상화 계층을 제공해서 클러스터의 네트워크 트래픽에 대한 고수준 의사결정을 쉽게 내릴 수 있게 해준다(정책 제어, 메트릭과 로깅, 서비스 검색, TLS를 통한 안전한 서비스 간 통신 등). 


이스티오 서비스 메시 구성요소 

이스티오는 클러스터를 위한 두 가지 기본적인 아키텍처 요소인 데이터 평면과 제어 평면을 제공함으로써 서비스 메시로 작동한다. 

데이터 평면(data plane)은 네트워크 프록시 그룹을 통해 메시에 있는 서비스 사이의 네트워크 트래픽을 처리한다. 이스티오의 프록시는 엔보이(Envoy)라는 오픈소스 프로젝트를 통해 수행된다. 제어 평면(control plane)은 이스티오드(Istiod)라는 서비스로, 서비스 검색과 관리를 담당하며 데이터 평면의 보안 통신에 사용되는 인증서도 생성한다. 

이스티오는 이런 서비스를 제어하기 위한, 몇 가지 범주로 분류되는 API도 제공한다. 

가상 서비스 가상 서비스는 트래픽 라우팅 방법에 대한 규칙을 만들 수 있게 해준다. 각 가상 서비스는 메시의 실제 서비스로 트래픽을 라우팅하는 데 사용할 수 있다. 예를 들어, 특정 API의 두 가지 구현에 대한 A/B 테스트를 수행할 때 트래픽의 절반을 API의 한 버전으로 라우팅할 수 있다. 또는 주어진 도메인의 다양한 API 엔드포인트에 대한 호출을 다양한 물리적 서버로 매핑할 수도 있다. 

대상 규칙 대상 규칙은 트래픽이 가상 서비스를 통해 라우팅된 이후의 작업을 제어한다. 예를 들어 다양한 포트에 도달한 트래픽에 서로 다른 부하 분산 정책을 적용할 수 있다. 

게이트웨이 게이트웨이는 부하 분산 기능과 L4-L6 네트워크 프로토콜 제어 기능을 갖추고 메시를 들고나는 트래픽 전체를 관리한다. 가상 서비스를 게이트웨이에 바인딩해서 그 이후의 트래픽 방향을 제어할 수도 있다. 

NGINX 웹 서버 및 프록시 시스템을 이스티오의 인그레스 컨트롤러로 사용할 수 있다. 이렇게 하면 고급 부하 분산과 트래픽 라우팅을 위한 NGINX 기능을 사용해서 이스티오 메시로 트래픽을 라우팅할 수 있는데, 여기에는 NGINX의 상용 버전에만 제공되는 기능까지 포함된다. NGINX의 라우팅 기능에 이미 익숙하다면 이 방법으로 이스티오 메시에서 활용할 수 있다. 

서비스 엔트리 : 서비스 엔트리를 사용하면 이스티오의 알려진 서비스 레지스트리에 엔트리를 추가할 수 있다. 여기에 등록된 외부 API 등의 서비스는 이스티오 메시에 속하지 않는다 해도 메시의 일부처럼 취급된다. 

사이드카 : 엔보이 프록시는 기본적으로 모든 포트의 인바운드 트래픽을 허용하고 메시 내의 다른 모든 워크로드로 가는 아웃바운드 트래픽을 허용하도록 구성된다. 사이드카 구성을 사용하면 이 동작을 바꿀 수 있다. 


이스티오 앰비언트 모드 

비교적 새로운 이스티오 기능인 '앰비언트 모드(ambient mode)'에서는 각 쿠버네티스 애플리케이션 포드와 함께 엔보이 프록시를 실행하지 않고도 이스티오를 배포할 수 있다. 애플리케이션 포드가 아닌 각 쿠버네티스 클러스터 노드에 이스티오 에이전트가 있고, 따라서 트래픽 라우팅을 위한 전체적인 처리량이 줄어든다. 또한 이 모드는 쿠버네티스 클러스터에 이스티오를 배포하는 데 있어 보다 과도적인 접근 방식을 허용한다. 다만 앰비언트 모드는 여전히 극초기의 새로운 기능이므로 프로덕션 용도로는 권장되지 않는다. 


이스티오 서비스 메시 기능 

이스티오가 제공하는 가장 중요하고 가치 있는 혜택은 서비스 메시의 복잡성과 거리를 두는 수단인 추상화다. 수동으로 많은 요소를 구성한 다음 변경 사항이 적절히 반영되기를 바라는 대신, 이스티오에 명령을 내려 프로그램 방식으로 메시를 변경할 수 있다. 메시에 연결된 서비스는 새로운 네트워크 정책 또는 할당량에 따르기 위해 내부에서 다시 프로그램할 필요가 없으며 서비스 사이의 네트워킹 공간을 직접 다룰 필요도 없다. 

또한 이스티오에서는 클러스터의 네트워크 구성을 비파괴적 또는 잠정적으로 변경할 수 있다. 새로운 네트워크 레이아웃의 전체 또는 일부를 적용하거나 현재 구성과 새로운 구성에 대해 A/B 테스트를 수행하려는 경우 이스티오에서 하향식으로 할 수 있다. 또한 문제가 있는 것으로 확인될 경우 변경 사항을 롤백할 수도 있다. 

세 번째 이점은 관찰가능성이다. 이스티오는 컨테이너와 클러스터 노드 간에 일어나는 일에 대한 세부적인 통계와 보고를 제공한다. 예기치 못한 문제가 있는 경우, 정책에 부합하지 않는 부분이 있거나 변경 사항이 역효과를 내는 경우 즉시 알 수 있다. 

또한 이스티오는 서비스 메시의 일반적인 패턴을 수행하는 방법도 제공한다. 예를 들어 서킷 브레이커 패턴이 있다. 서킷 브레이커는 백엔드에서 문제가 발생해 적시에 요청을 이행하지 못하는 경우 서비스에 요청이 쏟아지지 않도록 방지하는 수단이다. 이스티오는 정책 시행을 위한 표준 라이브러리의 일부로 서킷 브레이커 패턴을 제공한다. 

마지막으로, 이스티오는 쿠버네티스와 가장 직접적, 심층적으로 작동하지만 플랫폼 독립적으로 설계됐다. 이스티오는 쿠버네티스 자체가 의존하는 여러 개방형 표준에 연결된다. 또한 개별 시스템에서 독립적인 방식으로 작동하거나 메소스(Mesos), 노마드(Nomad)와 같은 다른 오케스트레이션 시스템에서도 작동할 수 있다. 


이스티오를 시작하는 방법 

쿠버네티스를 다룬 경험이 있다면 이스티오를 배우는 좋은 방법은 프로덕션의 클러스터가 아닌 쿠버네티스 클러스터를 가져와서 선호하는 배포 방법을 사용해 이 클러스터에 이스티오를 설치하는 것이다. 그런 다음 트래픽 관리, 관찰가능성과 같은 일반적인 이스티오 기능을 시연하는 샘플 애플리케이션을 배포할 수 있다. 이렇게 해서 이스티오에 대한 기초를 익힌 다음 애플리케이션 클러스터의 서비스 메시 작업을 위해 배포할 수 있다. 

쿠버네티스 기반 오픈시프트(OpenShift) 프로젝트의 일부로 이스티오에 투자한 레드햇은 일반적인 이스티오 배포 및 관리 시나리오를 안내하는 자습서를 제공한다. 
editor@itworld.co.kr
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.