본문 바로가기

Infra/Cloud

[Istio] Istio란?

Istio란 무엇인가?


개요

  쿠버네티스(Kubernetes)와 함께 사용되는 Istio에 대해 이해하고 알아본다.

 

목차

 

소개

 1. 이스티오(Istio)란? 

이스티오(Istio)의 정의

Google, Lyft, IBM에서 내놓은 서비스 메시(Service Mesh)를 구현할 수 있는 오픈소스 솔루션이다. Istio는 서비스 메시의 애플리케이션에 프록시(ex Envoy)를 'sidecar' 방식으로 배치하여 서비스간의 통신을 제어하는 방법을 구현 가능하게 하는 솔루션이라고 할 수 있다. 즉 Istio는 마이크로서비스를 운영 할 때 발생하는 새로운 기능이 추가되었을 때 발생하는 런타임시 종속성의 위험성을 줄여 별도의 소스 코드 수정 없이 인프라 계층에서 안정적으로 관리 할 수 있도록 해준다. 요약하면 Istio를 사용하면 마이크로서비스와 함께 배포되는 네트워크 통신을 담당하는 프록시(Envoy)를 설정 및 관리하여 마이크로서비스를 더욱 쉽게 관리 할 수 있게 된다.

 

 2. Istio Architecture 

 

출처: https://istio.io/latest/docs/ops/deployment/architecture/arch.svg

 

Data Plane & Control Plane
  • Data Plane: MicroService와 함께 Envoy를 'sidecar' 형식으로 배포하여 Envoy를 통해 돌아다니는 트래픽을 통제
  • Control Plane: Envoy Proxy의 Tarffice들을 관리하고 설정

위의 구조에서 보면 크게는 Data plane과 Control Plane으로 볼 수 있다. 그 아래에 이 전에는 구분되어 있던 Pilot, Citadel, Galley 영역이 istiod로 통합되어 있는 것을 확인 할 수 있는데 각 기능은 아래와 같다.

  • Pilot: Envoy 설정 관리를 수행하는 모듈이다. Envoy가 호출하는 서비스의 주소를 얻을 수 있는 서비스 디스커버리 기능, 서비스에서 서비스로 호출하는 경로를 컨트롤하는 서비스 트래픽 라우팅 기능 제공. 서비스 안정성을 위해 서비스 간 호출 시 재시도와 서킷브레이커 및 타임아웃 등의 기능을 제공한다. 또한 Pilot 에서 Envoy의 설정을 추상화시켜두어 Istio는 하나의 설정으로 Kubernetes, consol, nomad 등의 다양한 환경에서 사용 할 수 있게 된다.
  • Citadel: 보안 관련 기능을 수행하는 모듈이다. 내장된 인증 방식을 이용하여 서비스와 서비스, 엔드포인트유저와 엔드포인트유저 사이의 인증을 강화하거나, 서비스에 접근 가능한 권한을 제어 할 수 있게 된다.
  • Galley: Istio의 구성 관리 서비스를 제공한다.

 

 3. Istio의 주요 기능 

트래픽 통제
  • 트래픽 분할: 버전별로 트래픽의 양을 조절하여 카날리 테스트와 같은 테스트를 가능하게 한다.
  • 컨텐츠 기반 트래픽 분할: 네트워크 패킷의 내용을 기반으로 트래픽을 분할(라우팅) 할 수 있다.

 

서비스간 안정성 제공
    • 헬스체크 및 서비스 디스커버리: Pilot은 대상 서비스가 여러개의 인스턴스로 구성이 되어 있을 경우 이를 로드 밸런싱 하여주고, 이 서비스들에 대해서 주기적으로 상태 체크를 하며 만약에 장애가 난 서비스가 있을 경우, 자동으로 서비스에서 제거 할 수 있도록 한다.
    • Retry: 서비스간 호출의 안정성을 위해 재시도 횟수를 통제 한다.
    • Timeout: 서비스 호출시, 일정 시간 응답이 오지 않는다면 에러처리를 할 수 있도록 한다.
    • Circuit breaker: Circuit breaker Pattern을 지원한다.

 

보안성 제공
  • Envoy를 통해 모든 Traffic을 자동으로 TLS를 이용하여 암호화한다. 따라서 서비스간의 통신에 보안성이 제공된다. 이 때 인증서는 Citadel에 존재하는 인증서를 사용한다.
  • 서비스와 서비스간의 호출에서의 각 서비스에 대한 인증과, 서비스를 호출하는 클라이언트를 인증 할 수 있다. 또한 접근 권한을 통제할 수 있는 역할 기반의 권한 인증(RBAC)를 지원한다.

 

 

모니터링 지원
  • 마이크로서비스가 많아지면 서비스들 사이의 의존성을 알기 어렵고, 각 서비스마다 모니터링 하는 것이 어렵다. 이를 Istio는 네트워크 트래픽의 모니터링을 지원해주고, 서비스간의 호출관계 및 서비스의 응답시간 등의 다양한 지표를 수집하여 모니터링이 가능하도록 지원한다.

 

참고사이트

1. https://cloud.google.com/learn/what-is-istio?hl=ko 

 

Istio란?  |  Google Cloud

Istio는 조직에서 분산형 마이크로서비스 기반 앱을 어디서나 실행할 수 있도록 지원하는 오픈소스 서비스 메시입니다. Istio의 이점에 대해 알아보세요.

cloud.google.com

2. https://istio.io/latest/docs/ops/deployment/architecture/

 

Architecture

Describes Istio's high-level architecture and design goals.

istio.io

3. https://bcho.tistory.com/1296

 

Istio #3- Istio에 대한 소개

ISTIO 조대협 (http://bcho.tistory.com) Envoy를 이용해서 서비스 매쉬를 구현하기 위해서는 Envoy로 구성된 데이타 플레인을 컨트롤할 솔루션이 필요하다. Envoy를 데이타 플레인으로 사용하고 이를 컨트롤

bcho.tistory.com