Istio란 무엇인가?
개요
쿠버네티스(Kubernetes)와 함께 사용되는 Istio에 대해 이해하고 알아본다.
목차
소개
1. 이스티오(Istio)란?
이스티오(Istio)의 정의
Google, Lyft, IBM에서 내놓은 서비스 메시(Service Mesh)를 구현할 수 있는 오픈소스 솔루션이다. Istio는 서비스 메시의 애플리케이션에 프록시(ex Envoy)를 'sidecar' 방식으로 배치하여 서비스간의 통신을 제어하는 방법을 구현 가능하게 하는 솔루션이라고 할 수 있다. 즉 Istio는 마이크로서비스를 운영 할 때 발생하는 새로운 기능이 추가되었을 때 발생하는 런타임시 종속성의 위험성을 줄여 별도의 소스 코드 수정 없이 인프라 계층에서 안정적으로 관리 할 수 있도록 해준다. 요약하면 Istio를 사용하면 마이크로서비스와 함께 배포되는 네트워크 통신을 담당하는 프록시(Envoy)를 설정 및 관리하여 마이크로서비스를 더욱 쉽게 관리 할 수 있게 된다.
2. Istio Architecture
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
'Infra > Cloud' 카테고리의 다른 글
[Architecture] MSA vs Monolithic (0) | 2023.09.26 |
---|---|
[Service Mesh]서비스 메시란? (0) | 2021.10.04 |
[Cloud] SENS Service를 이용한 문자 인증 API 구현하기 (4) | 2021.08.27 |
[CI/CD] CI/CD(지속적 통합, 지속적 제공 및 배포) 파이프라인이란? (0) | 2021.08.12 |
[Docker & Kubernetes] 도커, 그리고 쿠버네티스 (0) | 2021.08.06 |