회사에서 진행한 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 등을 모두 관리해야 하는 번거로움
- 이를 위해 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
이미지 출처는 공식 홈페이지
- data plane
- 서비스 간의 커뮤니케이션
- proxy를 사용해 네트워크 트래픽을 intercept
- control plane
- desired configuration을 파악하고 proxy server를 프로그래밍해 서비스들을 업데이트해준다.
다음 게시물에는 실습 관련해서 정리해보려고 한다.
PREVIOUS쿠버네티스 기본 개념 정리