본문 바로가기

컨테이너/istio

[istio] (1) istio란 무엇인가?

1.istio?

istio가 무엇이냐고 누군가 묻는다면 이렇게 대답할 것이다. Service Mesh 라고
서비스 메시는  아주 복잡한 Microservice 구조의 어플리케이션을 보다 쉽게 컨트롤 할수 있도록 해준다.

물론 Kubernetes로 우리의 클러스터를 관리하겠지만 , 이는 충분하지 않다.

왜냐하면 분산된 어플리케이션들은 네트워크로 서로 관계를 맺고 있다. 이와 같은 점에서 Service Mesh는 
굉장한 장점을 발휘한다.

 

2. 서비스 메시?


Microservices는 각각의 작은 서비스를 맡고 있는 컨테이너들이 네트워크를 통해 상호작용을 하는데,
쿠버네티스 자체만으로 이러한 네트워크를 모니터링 하는게 쉽지 않다.

물론 프로메테우스 등을 이용하여 통신상태 및 request와 response의 양적 측정은 가능하지만, 트랜잭션의 흐름에 따른 
트래픽의 이동을 관측하기에는 어려움이 따른다.
또한 수천개의 마이크로서비스를 서비스 메시 없이 네트워크 모니터링 하는것은 사실상 불가능 하다고 생각한다.

모니터링 뿐만 아니라, Service Mesh는 쉽게 설명하면, 모든 컨테이너들의 request, response들을 
관리하는 Application 레벨의 경유지라고 생각하면 된다. 이처럼 관문역할을 하는 컴포넌트들의 가장 큰 장점은 
보안적 측면이나 모니터링 측면에서 용이한 점이 많다.


즉 모든 call들은 서비스 메시를 거치기 때문에, 서비스 메시는 다음 target 에 라우팅을 해주는 정보들을 가지고 있다.

이러한 정보들을 mesh Logic 이라고 한다.

 

3. istio 구조

데이타 플레인의 Envoy Proxy 는 한 세트로 구성되어, Envoy는 사이드카 패턴으로
각각의 마이크로 서비스에 배포되어 서비스로 들어오고 나가는 모든 트래픽을 통제한다.

컨트롤 플레인은 Envoy를 컨트롤하는 정책적인 부분에 관여한다.
istio 1.4 버전 까지는 파일럿, 믹서 , 시타델 , 겔리로 구성 되어 있었지만, 1.5 버전부터는 4개의 모듈이 istiod라는 하나의 모듈로 통합 되었다.

- 믹서(Mixer) : 서비스 매쉬 엑세스 컨트롤 및 정책 관리 수행. Envoy와 다른 서비스에서 모니터링 지표 수집(서비스 응답시간, 평균 처리량 등)

- 파일럿(Pilot) : Envoy 설정 관리를 수행하는 모듈. Envoy가 호출하는 서비스의 주소를 얻을 수 있는 서비스 디스커버리(Service Discovery)기능을 제공. 서비스 트래픽 라우팅 기능 제공(서비스에서 서비스로 호출하는 경로를 컨트롤). 서비스 안정성을 위해 서비스 간 호출 시 재시도(retry), 서킷브레이커(circuit breaker), 타임아웃(timeout) 등의 기능 제공. 

- 시타델(Citadel) : 보안 관련 기능을 수행하는 모듈. 사용자 인증(Authentication), 인가(Authorization)을 통한 서비스/앤드유저 간 인증 강화. TLS(SSL)을 이용한 통신 암호화 및 인증서(Certification) 관리

- 갤리(Galley) : Istio의 구성 및 설정 검증. 배포 관리 수행
 
 
다음으로 istio1.5 이상 버전에서 제공하는 통합 컨트롤 플레인인 istiod는 서비스 디스커버리(Service Discovery), 설정 관리(Configuration Management), 인증 관리(Certificate Management) 등을 수행한다. 
 
- 트래픽 동작을 제어하는 라우팅 규칙을 Envoy 전용 설정으로 변환하고, 마이크로 서비스에 사이드카 방식으로 Envoy를 배포
- Envoy 설정 변경(Istio의 Traffic Management API 활용)을 통한 서비스 메시 트래픽 세부 제어
- 내장된 identity나 자격증명관리(Credential Management)를 통해 강력한 서비스 간 인증 및 사용자 인증 기능을 지원
- 인증기관(Certificate Authority. CA)의 역할 수행. 데이터 플레인에서 안전한 mTLS통신을 허용하는 인증서를 생성
 

 

 

개념적인 부분은 이정도면 충분하고, 다음 포스팅 부터는 minikube에 실제로 istio를 적용하여 

실습해 보도록 하겠다.

'컨테이너 > istio' 카테고리의 다른 글

[istio] (4). Traffic Management  (0) 2021.12.09
[istio] (3) istio Telemetry  (0) 2021.12.09
[istio] (2) istio 설치  (0) 2021.12.07