istio 기본 개념과 구조


회사에서 진행한 istio basic 핸즈온 관련 정리 -1


3줄 요약

  • istio는 open source service mesh(infra layer) 이다.
  • istio는애플리케이션의 코드를 변경할 필요 없이 traffic management / observability / security 를 도와준다.
  • istio는 envoy를 proxy/sidecar 패턴으로 사용해 서비스는 비즈니스 로직에만 집중할 수 있게 한다.

istio

사용 배경

  • 분산된 마이크로 서비스 아키텍처에서 겪게 되는 관리 문제들을 해결해줌
    • 서비스 수가 증가함에 따라 service-to-service 커뮤니케이션을 위한 routing이 엄청 복잡해짐
    • 서비스 별로 metric, tracing, serurity 등을 모두 관리해야 하는 번거로움

micro-service.png

  • 이를 위해 proxy sidecar pattern을 선택
    • 비즈니스 로직 외의 dependency를 감당하지 않기 위해 사용하게된 디자인 패턴
    • proxy: 대신 해주는 것
    • sidecar: 메인 드라이버는 운전만 하고, 옆에 앉은 사람이 다 처리해줄 수 있는!
      • main은 비즈니스 로직만 맡고, sidecar가 나머지를 다 담당하게 됨

envoy

  • istio 는 envoy 라는 proxy를 사용
  • 서비스간의 통신이 아니라 envoy 끼리 통신
    • 서비스 container가 존재하는 pod에 envoy container를 밀어넣는 것
  • envoy를 관리하는 control plane이 생김 (인증, 메트릭 등등)
  • istio control plane이 관제탑 같은 역할을 한다.

control plane이 해주는 일

  • 클러스터 내에서 service-to-service 커뮤니케이션을 안전하게 지켜줌
  • http, gRPC, WebSocket, TCP 트래픽을 자동으로 로드 발란싱 해줌
  • 풍부한 라우팅 규칙, retries, failovers, fault injection으로 트래픽 관리를 정교하게 해줌
  • 접근 관리, rate limits, quota를 지원하는 설정 API를 추가할 수 있음
  • 클러스터 내의 모든 트래픽에 대한 자동 metrics, logs, traces

이미지 출처는 공식 홈페이지

service-mesh.png

  • data plane
    • 서비스 간의 커뮤니케이션
    • proxy를 사용해 네트워크 트래픽을 intercept
  • control plane
    • desired configuration을 파악하고 proxy server를 프로그래밍해 서비스들을 업데이트해준다.

다음 게시물에는 실습 관련해서 정리해보려고 한다.