반응형

Istio 구성요소 및 기능

  • Istio 동작 원리를 이해한다.

구성요소

Control Plane

Pilot

  • envoy에 대한 설정 관리
  • 서비스 디스커버리 기능 제공(서비스들의 엔드포인트들의 주소를 얻을 수 있는 기능)
  • 서비스에서 서비스로 호출하는 경로를 컨트롤
  • retry, Circuit breaker, Timeout등의 기능 제공

Mixer

  • 액세스 컨트롤, 정책 통제 그리고 모니터링 지표 수집
  • 서비스의 총 처리량 이상으로 요청을 못받게 하거나 특정 헤더값이 일치해야 요청을 받을 수 있게 하는 등의 다양한 정책을 정의 및 컨트롤 가능
  • 서비스의 응답시간, 평균 처리량 등 지표 수집 및 저장

Citadel

  • 보안에 관련된 기능을 담당하는 모듈
  • 사용자 인증(Authentication)과 인가(Authorization)를 담당
  • pod간 통신을 TLS 암호화를 위한 인증서 관리 역할 수행

Data plane

envoy proxy

  • 서비스 옆에 붙여서 사이드 카 형식으로 배포
  • evoy는 서비스들의 IP 주소를 컨트롤 플레인의 Pilot 컴포넌트를 통해 확인(service discovery)

기능

트래픽 제어(Traffic control)

  • 트래픽 분할: canary test(새로 배포된 버전에 10% 기존 버전에 90% 식의 Test)
  • 컨텐츠 기반 트래픽 분할: 패킷 내용(HTTP header의 User-agent 필드에 따라, Client 모델)에 따라 라우팅 가능

서비스 안정성(Resilience)

  • health check: 대상 서비스가 여러개의 pod로 구성되어있으면 이를 로드밸런싱하고, 서비스에 대해서 주기적으로 상태 체크를 하고 장애가 나면 자동으로 서비스에서 제거한다.
  • 서비스 디스커버리: 서비스의 위치를 pilot을 통해서 ip를 알아냄
  • Retry, Timeout, Circuit breaker: 서비스간의 호출 안정성을 위해서 재시도 횟수를 통제할 수 있다. 일정시간 이상 응답이 오지 않으면 에러처리를 할 수 있고 Circuit breaker패턴을 지원

보안

  • 통신보안: envoy를 통해서 통신하는 모든 트래픽을 자동으로 TLS를 이용해서 암호화한다. 서비스간 통신이 디폴트로 암호화 된다.(citadel)
  • 서비스 인증과 인가: 서비스에 대한 인증을 제공, 서비스와 클라이언트를 직접 인증할 수 있다.
  • 서비스간 인증: 서비스간 인증은 양방향 인증(Mutual TLS)을 이용하여 서비스가 서로를 식별하고 인증
  • 서비스와 사용자간 인증: 엔드유저 즉 사용자 Client를 JWT 토큰을 이용해서 서비스에 접근할 수 있는 Client를 인증할 수 있다.
  • 인가를 통한 권한 통제: 서비스 접근 권한 통제 가능, 사용자나 서비스는 각각 사용자 계정이나 쿠버네티스 서비스 어카운트로 계정이 정의되고 각각 Role을 부여해서 역할 기반 서비스 접근 제어를 할 수 잇다.

모니터링

  • 서비스간 호출 시 트래픽은 envoy 프록시를 통하게 되고, 응답 시간과 서비스의 처리량이 Mixer로 전달
  • 전달된 Mixer의 logging backend에 저장됨
  • Mixer의 logging backend: 플러긴형태로 가능(Bluemix, stackdriver, aws, prometheus, heapster, datadog ... )
반응형

'Tech > Kubernetes' 카테고리의 다른 글

Kubernetes_Architecture  (0) 2020.07.01

+ Recent posts