istio 정리
Devops

istio 정리

뉴비뉴 2020. 6. 8.

개념

  • 2017년 5월에 Google, Lyft, IBM에서 내놓은 서비스 메쉬 솔루션입니다.
  • Istio는 마이크로서비스 간 데이터 공유를 제어하는 기반을 제공하는 오픈소스 서비스 메쉬 플랫폼입니다. 여기에는 Istio를 모든 로깅 플랫폼, 텔레메트리 또는 정책 시스템으로 통합하도록 지원하는 API가 포함되빈다. Istio는 온프레미스, 클라우드 호스팅, 쿠버네티스 컨테이너, 가상 머신에서 실행되는 서비스 등 다양한 환경에서 구동되도록 설계되었습니다.
  • 서비스 메쉬는 MSA 구조에서 각 서비스들간의 트래픽을 제어하는 역할을 합니다.
  • 서비스 메쉬란 애플리케이션의 다양한 부분들이 서로 데이터를 공유하는 방식을 제어하는 방법입니다. 서비스 간 커뮤니케이션을 관리하는 다른 시스템들과 달리, 서비스 메쉬는 애플리케이션에 구축된 전용 인프라 계층입니다. 이 가시적인 인프라 계층은 서로 다른 애플리케이션 부분이 얼마나 원활하게 상호작용하는지를 기록할 수 있으므로, 더욱 손쉽게 커뮤니케이션을 최적화하고 애플리케이션 확장에 따른 다운 타임을 방지할 수 있습니다.

주요 기능

  • 트래픽 관리 - Istio 에서의 트래픽 라우팅 및 룰 설정을 통해 서비스 간 트래픽 흐름 및 API 호출을 제어할 수 있습니다.
  • 보안 - Istio는 기본 통신 채널을 제공하고 스케일에 따른 인증, 권한 부여 및 서비스 통신 암호화를 관리합니다.
    Istio와 쿠버네티스 네트워크 정책을 함께 사용하면 네트워크 및 애플리케이션 레이어에서 팟 간 또는 서비스 간 커뮤니케이션을 보안할 수 있습니다.
  • 관찰 가능성 - 추적, 모니터링 및 로깅 기능을 통해 서비스 메쉬 배포 환경에 대한 인사이트를 확보할 수 있습니다. 모니터링을 통해 서비스 활동이 성능 업스트림 및 다운스트림에 어떻게 영향을 미치는지 파악할 수 있습니다.

ex) School, Class, Student 라는 MSA모듈이 있다고 가정하고, Student는 학교의 공지를 받기 위해 School 까지 요청을 보냈습니다. 하지만 타임아웃이 되고, 리퀘스트가 돌아오지않았고, 그 문제를 해결하기 위해 클래스에서 학교의 공지를 받기 위해 요청을 보냈습니다. 역시나 타임아웃이 되었고, School 모듈로가서 문제를 확인하니 특정 부분에서 오류가 발생했었습니다. 하지만 MSA 모듈이 100개가 넘어가고, 수천수만개가 된다면 에러를 추적하기란 정말 어려운 일 입니다. 이 문제를 Istio가 해결해줍니다.

 

동작(서비스매쉬)

K8s의 Service를 호출할 때 Service가 Service를 호출하는 것이 아닌 Envoy Proxy 라는 것을 통해 통신을 하게 한다.

 

Proxy가 Envoy Proxy 입니다. 만약 Service가 100개가 된다고 가정하고, 그럼 Proxy의 개수도 100개로 늘어날 것 입니다.
그럼 100개의 Proxy의 값을 일일이 수정해주는 것도 많은 비용이 들어가게 됩니다.

 

그래서 컨트롤 플레인에서는 Envoy Proxy를 컨트롤 하는 부분으로, 파일럿(Pilot), 믹서(Mixer), 시타델(Citadel) 3개의 모듈로 구성되어 있습니다.

 

- 파일럿은 Envoy Proxy의 설정을 명세파일로 정의해서 Proxy를 생성/관리 할 수 있습니다.

- 믹서는 로깅, 모니터링 관련된 기능을 담당하는 모듈입니다.

- 시다텔은 보안 관련된 기능을 담당하는 모듈입니다.

 

Istio 동작

출처: 갓대협님의 블로그

  1. Client가 요청을 합니다. 클라이언트가 해당 게이트웨이에 접근할 권한이 있는지 확인하고, 없다면 Istio Gateway 단계에서 접속하지 못합니다.
  2. Istio Virtual Service 에서는 어떤 Istio Gateway로 들어온 요청을 어떠한 K8s Service를 보낼지 결정합니다.

Istio 모니터링 툴

모니터링 도구가 기본적으로 인스톨되어 있다. 굿

 

 

 

Reference

댓글

💲 추천 글