Kubernetes

[Service Mesh] Istio 란

비번변경 2024. 2. 29. 16:51

Istio

분산 어플리케이션에 계층화되는 오픈소스 Service Mesh. Service Mesh의 개념은 2024.02.23 - 서비스 메쉬(Service Mesh) 란에서 조금 살펴봤었다.

Istio는 서비스 코드 변경을 최소화하면서 로드 밸런싱이나 서비스 간 인증, 그리고 모니터링 방법을 제공한다. 또한 확장성을 고려하여 설계되어 다양한 배포 요구 사항을 처리할 수 있다.

 

 

동작 방식

Service Mesh를 구현한 만큼 Istio는 DataPlane과 ControlPlane이 존재한다.

DataPlance은 서비스 간 통신으로, 서비스 메쉬가 없으면 네트워크는 트래픽을 이해하지 못한다. 또한 트래픽의 종류나 출발/목적지 기반의 어떤 결정도 수행할 수 없다.

Envoy 프록시는 클러스터에서 동작할 서비스와 함께 배포된다.

ControlPlane은 구성을 설정하고, rule이나 발생하는 변경에 맞춰 프록시 서버를 동적으로 업데이트한다.

 

 

구성 요소

아래의 다이아그램은 Istio를 구성하는 요소를 보여준다.

Enovy

서비스 메쉬의 모든 서비스에 대한 인바운드/아웃바운드 트래픽을 관리하기 위한 고성능 프록시이다. 데이터플레인 트래픽과 상화작용하는 구성요소에 해당한다.

Enovy 프록시는 서비스의 사이트카로 배포되어 동적 서비스 디스커버리 , 로드 밸런싱, TLS, HTTP/2나 gRPC 프록시, 헬스 체크 등의 기능을 제공한다. Istio는 Enovy 프록시를 통해 네트워크 정책을 시행하고 모니터링 시스템으로 전송할 수 있는 지표를 추출하여 서비스 메쉬의 동작에 대한 정보를 제공할 수 있다.

 

 

Istiod

ControlPlane의 구성 요소로, 서비스 디스커버리 , 구성, 및 인증서 관리를 제공한다.

Istiod는 트래픽 동작을 제어하는 라우팅 규칙을 Enovy 구성으로 변환하고, 런타임 시 사이트카에 전파한다. 그리고 자격 증명 관리를 통해 서비스 간 인증 또는 최종 사용자에 대한 인증을 가능하게 한다.

 

Istio 1.4까지는 Pilot, Mixer, Citadel, Galley라는 네 가지 요소로 구성되어 있었으나, Istio 1.5부터는 네 요소가 Istiod라는 하나의 모듈로 통합되었다. 기존 요소는 각각 다음과 같은 기능을 수행했다.

- Mixer : 서비스 매쉬 엑세스 컨트롤 및 정책 관리 수행. Envoy와 다른 서비스에서 모니터링 지표 수집
- Pilot : Envoy 설정 관리 수행. Envoy가 호출하는 서비스의 주소를 얻을 수 있는 서비스 디스커버리(Service Discovery)기능, 서비스 트래픽 라우팅 기능, 서비스 간 호출 시 재시도(retry), 타임아웃(timeout) 등의 기능 제공. 
- Citadel : 보안 관련 기능 수행. 사용자 인증(Authentication), 인가(Authorization)을 통한 서비스/앤드유저 간 인증 강화. TLS(SSL)을 이용한 통신 암호화 및 인증서(Certification) 관리
- Galley : Istio의 구성 및 설정 검증. 배포 관리 수행

 

 

참고 문서

https://istio.io/latest/about/service-mesh/

https://istio.io/latest/docs/ops/deployment/architecture/

https://twofootdog.tistory.com/78

https://velog.io/@beryl/Istio-%EA%B0%9C%EB%85%90