본문 바로가기

knative & istio

istio와 isito의 구조

istio는 2017년 5월에 google, Lyft, IBM사에서 내놓은 오픈소스 서비스 메쉬 솔루션으로

마이크로서비스 간 데이터 공유를 제어하는 기반을 제공한다.

istio는 다음과 같은 기능을 가진다.

 

  • 헬스 체크 및 서비스 디스커버리 가능
    • 서비스 디스커버리란? 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치(IP와 port)를 알아낼 수 있는 기능
  • 트래픽을 관리한다.
    • HTTP, gRPC, WebSocket, TCP 트래픽에 대한 자동부하분산이 가능하다.
    • 서비스의 재시도횟수를 통제할 수 있고,
    • 호출했을때 일정시간 이상 응답이 오지 않으면 error 처리를 할 수 있고 (timeout 가능)
    • Circuit breaker가 가능하다. (circuit breaker : 특정 서비스에 오류 발생시 오랫동안 리소스를 점유하지 못하게 막는 방법)
    • a/b테스트나 카나리배포가 가능하다.
    • 트래픽에 정책 같은 것을 설정할 수도 있다.
  • 보안 기능이 있다.
    • TLS를 이용해서 암호화가 가능하다.
    • 서비스에 대한 인증 뿐만 아니라 접근 권한까지 관리할 수 있다.(인증과 인가 가능)
  • 서비스 모니터링이 가능하다.

istio 아키텍처

istio는 논리적으로 트래픽이 돌아다니는 data plane과 data plane을 관리하는 control plane으로 나눌 수 있다.

 

istiod : control plane의 통합서비스

 Control plane

control plane은 data plane을 컨트롤한다.

pilot, citadel, galley로 구성되어 있고 (예전에는 mixer라는 것도 있었는데 이건 1.6부터 Deprecated됐다)

지금은 이 세개의 모듈이 하나의 istiod로 통합되었다.

 

  • Pilot
    • data plane에 있는 envoy에 대한 설정을 관리한다.
    • service discovery 기능을 제공하고
    • retry, circuit breaker, timeout 등의 기능을 제공한다.
    • 서비스에서 서비스로 호출하는 경로를 컨트롤한다.
  • Citadel
    • 보안에 관련된 기능을 담당하는 모듈이다.
    • 서비스를 사용하기 위한 사용자 인증 (Authentication)과 인가(Authorization)을 담당한다.
    • TLS 암호화나 사용자 인증에 필요한 인증서(Certification)을 관리한다.
  • Galley
    • istio configuration의 유효성을 검사한다.
    • istio의 구성 및 설정을 검증하고 배포관리를 수행한다.

Data plane

실제로 트래픽이 돌아다니는 영역이고, 

istio는 envoy 프록시를 사용한다.

 

envoy의 대표 기능으론 다음과 같은 기능이 있는데 이런 기능들은 나중에 envoy 공부할때 정리해야겠다.

envoy 기능들

'knative & istio' 카테고리의 다른 글

서비스 메쉬(Service Mesh)  (0) 2022.01.10