본문 바로가기
망각을위한노트

MSA 구조에서 Istio 기능, 역할

by RNE21 2022. 5. 2.
반응형

 

출처 : https://istio.io/


1. Istio가 뭐지?

  1. 마이크로서비스아키텍처(MSA) 서비스들의 트래픽을 제어할 수 있습니다.
  2. 오픈소스입니다. (Apache License 2.0)
  3. 여러분이 작성한 코드를 변경하지 않고도, 로드 밸런싱, 서비스 간 인증, 모니터링을 추가할 수 있습니다.

2. Istio가 뭘 할수 있지?

  1. 버전별 트래픽 양 조절 (예: 구버전 95%, 신버전 5%)
  2. 헤더 값을 기준으로, 트래픽 분할 (예: 클라이언트가 PC, 안드로이드, 아이폰일 때 서로 다른 서비스로 라우팅)
  3. 서비스 안정성(health check, 장애 서비스 제거)
  4. TLS 보안
  5. 서비스에 대한 인증, 인가 - 서비스간 인증, 사용자 인증(JWT토큰이용), Role base 인가
  6. 서비스 모니터링, 지표 수집

3. 작동 원리

Istio를 적용하기 전

Istio를 적용하기 전

 


Istio 적용 후

Istio 적용 후


4. Istio 디자인 목표

  • 투명성 극대화(Maximize Transparency) - 사이드카 프록시를 사용하여, 최소한의 변경으로 최대한의 효과를 얻어냄
  • Incrementality
  • Portability - 최소한의 노력으로 모든 클라우드 또는 온프레미스 환경에서 실행
  • Policy Uniformity(정책 통일성)

5. Istio 아키텍처

data plane과 control plane 으로 구분되어 있습니다.

  • data plane : 실제 데이터 트래픽이 통과하는 영역
  • control plane : 트래픽 경로를 관리. 텔레메트리 정보 수집

The overall architecture of an Istio-based application.

[출처 : https://istio.io/latest/docs/ops/deployment/architecture/]


6. Istio 구성요소

  • Envoy
  • Mixer
  • Pilot
  • Citadel
  • Galley

6.1 Envoy

모든 트래픽은 envoy를 통과하게 되어 있습니다. Istio는 envoy의 확장판을 사용합니다. envoy는 모든 서비스에 대한 inbound/outbound 트래픽을 처리하는 고성능 Proxy입니다.

Envoy를 통해, 다음의 기능들을 사용할 수 있습니다.

  • 동적 서비스 검색
  • 부하분산
  • TLS termination
  • HTTPS/2, gRPC Proxy
  • 서킷브레이커
  • 상태확인(Health Check)
  • Staged rollouts with %-based traffic split
  • 결함 주입
  • Rich metrics

SideCar 형태로 배포하기 때문에, 기존 코드나 컨테이너를 재작성하지 않고, 그대로 이용할 수 있습니다.

6.2 Mixer

** Mixer 트래픽 흐름**

Mixer트래픽흐름

액세스 컨트롤, 할당량 관리, 모니터링 지표 수집 등

  • Precondition Checking - 헤더값 체크
  • Quota Management - 정책을 통해, 서비스의 총 처리량 지정
  • Telemetry Reporting - 응답시간, 처리량 등 모니터링 값 수집 및 저장

6.3 Pilot

Envoy에 대한 설정 관리 등

  • Service Discovery - 서비스들의 endpoint주소를 얻는 데 사용
  • Routing 트래픽 관리
  • retry
  • circuit breaker
  • Timeout

6.4 Citadel

보안 관련 기능 담당

  • 사용자 인증, 인가
  • TLS 인증에 필요한 인증서 관리

EOF

반응형