본문 바로가기
[Cloud]/심심풀이

[다시 심심풀이..] Kubernetes + rancher2.0 + Istio 그리고 KIALI

by journes 2019. 3. 20.


[다시 심심풀이..] Kubernetes + rancher2.0 + Istio 그리고 KIALI


- 궁금한 사항..
 > 어제 대화 내용 중..   AWS summit 에서  kubernetes  + Mash Service 를 들었는데. 끝내주더라 , 개념이 어떨지 궁금하다.. (나도 궁금.. ) 
      * 그 중에서도,   Istio 가 가장 Hot 하다고 하네요..     


그래서,  간단하게 TEST 해봤습니다.  

TEST 구성
Kubernetes + rancher2.0 + Istio (Service Mash) 
  -  rancher2.0 에서  Istio를  Catalog로 지원하고 있습니다. 


우선,  기본이 아래와 같습니다. 

 Mash Service 기본 개념
MSA로 전환이 되면서, 내부 서비스간의 Orchestration 뿐 아니라, 서비스 레지스트리, 중앙 로그 수집, 분산 트렌젝션 추적, 메세지 라우팅등 다양한 기능들이 필요하게되었는데,
이러한 구현은 ESB에서 근래에 API GW 등을 사용하는 접근으로 바뀌었지만, 적당한 솔루션이 없고, 중앙 집중화된 솔루션으로 인한 장애와 운영 복잡도에 따라 중앙 집중형이
아닌 Proxy 서버를 각 서비스 앞에 배치 시키는 형태의 접근 방법이 대두되고 있는데, 이를 service mesh라고 하며, 이에 대한 실 구현체로는 Isitio나 linkerd 와 같은 오픈 소스
 프로젝트들이 진행되고 있다.


내용을 정리해 보면.. 각 Service 앞에 Proxy를 있다는 것이고,   Istio 에는  아래와 같이 Envoy 라는  똑똑한 proxy 를 제공 합니다.  

Istio  아키텍처



Envoy 에 대해서 좀더 살펴 보면,, 아래와 같습니다.


Envoy 아키텍처 

 - 중간에 있는 Proxy 가 Envoy 입니다. 



Envoy 배포 아키텍처 좀더 살펴보면 아래와 같다고 합니다. 



Front envoy proxy
특정 서비스가 아니라, 전체 시스템 앞의 위치하는 프록시로, 클라이언트에서 들어오는 호출을 받아서 각각의 서비스로 라우팅을 한다. URL 기반으로 라우팅을 하는 기능 이외에도, 
TLS(SSL) 처리를 하는 역할들을 할 수 있다. 통상적으로 nginx나 apache httpd가 리버스프록시로 이 용도로 많이 사용되었다. 

Service to service ingress listener
특정 서비스 앞에 위치하는 배포 방식으로 서비스로 들어오는 트래픽에 대한 처리를 하는데, 트래픽에 대한 버퍼링이나 Circuit breaker 와 같은 역할을 수행한다.

Service to service egress listener
특정 서비스 뒤에서 서비스로부터 나가는 트래픽을 통제 하는데, 서비스로 부터 호출 대상이 되는 서비스에 대한 로드 밸런싱, 호출 횟수 통제 (Rate limiting)와 같은 기능을 수행한다.

External service egress listener
내부서비스에서 외부 서비스로 나가는 트래픽을 관리하는 역할인데, 외부 서비스에 대한 일종의 대행자(Delegator)와 같은 역할을 한다.


내용이 많이 복잡합니다.  아키텍처에 대한 부분은  저도 잘은 모르니 이정도만 하겠습니다. ...   : )

------------------------------------------------------------------------------------------------------------------------------------------

TEST 진행. 결과.. 

Istio 사이트에 아래와 같이 TEST를 할수 있는 yaml  파일을 제공해 주고있습니다.
-     중간에 Envoy가 보인네요..   






위 내용을  실제 구성해 보면 .. 아래와 같습니다. 

  -   Requests 를 받은 Ingress Proxy (Envoy) 가 3개의 Service 를  R/R 방식으로 띄워 줍니다. 



실제로 Rancher2 에서   Istio를 설치하면..  아래와 같은  어려개의 pod이 설치 됩니다.  






또.. Istio는 기본적으로.. 아래와 같이 Grafna 와 Prometheus 가 제공되어,   리소스 모니터링을 바로 진행할수 있습니다. 




그리고..  가장 잼있는 기능이 있는데..    바로  KIALI 라고 하는데..  UI는 아래와 같습니다.
Istio 의 모든 기능을 컨트롤하는  툴인거 같은데.. 끝내줍니다. !!  : )

 > 아래 유튜브 동영상을 먼저 보세요..  


아래  유튜브 영상을 보시면..  Istio에서 제공되는 TEST용 yaml을 적용한거 같은데..  기능이 마음에 드네요.. 꼭 한번씩 보세요..  !!