본문 바로가기
OpenSource/istio

What is istio?

by 태하팍 2022. 9. 1.
반응형

Istio란?

플랫폼과 관계없는 오픈소스 서비스 매쉬로 마이크로서비스를 보호, 연결, 모니터링할 수 있습니다.

Istio는

Kubernets, Nomad 및 Console에서 실행합니다.

Service Mesh란?

간단히 말해 마이크로서비스의 네트워크 입니다.
예를 들어 서비스 A, 서비스 B간의 서로 통신하는 방법이자 각 서비스를 제어하는 지점 입니다.
또한 아래와 같이 각 서비스들이 직접 호출하는 것이 아닌 각 서비스마다 Proxy를 넣습니다.(Sidecar 구성 방식)
이렇게 하면 서비스로 들고나가는 트래픽을 네트워크 단에서 모두 통제가 가능하며, 트래픽에 대한 통제를 통해서
마이크로서비스의 여러가지 문제를 해결할 수 있습니다.
ex) 써킷 브레이커(호출되는 서비스가 응답이 없을 경우 프록시단에서 연결을 끈어 장애가 전파되지 않도록 설정)

Circuit Breaker


Client의 OS(크롬, IOS, Android)에 따라 다른 서비스를 호출해야한다면 서비스가 다른 서비스 호출 시 프록시에서 메시지의 헤더를 보고 "Client"라는 필드가 Android면, Android 서비스로 라우팅을 하고, IOS면 IOS 서비스로 라우팅 하는 서비스를 Proxy단 설정에서 이를 수행할 수 있습니다.

이런 다양한 기능을 수행하기 위해서는 기존의 HA Proxy, NGINX, Apache처럼 TCP 기반의 프록시로는 한계가 있다.

또한 우리는 위와 같은 마이크로서비스에 대한 문제를 소프트웨어 코딩레벨이 아닌 인프라 계층에서 풀어낼 수 있다는 것을 알게 되었고, 서비스 매쉬가 점점 복잡해지면 서로 통신하는 방법을 제어할 방법이 필요 합니다. 즉, 각 Envoy(Proxy)가 점점 많아진다면 어떻게 관리를 해야할까요?  바로 이 시점에 Istio를 사용합니다.

Istio 기능

1. Load Balancing
이것을 사용하면 HTTP, TCP, WebSocket 트래픽 관리가 허용되며, 이때 서비스 A와 서비스 B간의 통신이 이루어지는 방법과 데이터가 들어오고 나가는 방법을 제어할 수 있습니다.

2. Fine-Grain Control
규칙, 재시도, 장애복구, 결함 주입 등을 사용할 수 있는 세밀한 제어 기능이 있습니다.
예를 들어 상황에 따라 서비스 B를 제외하고 서비스 A와만 통신할 수 있도록 구성할 수 있습니다.

3. Access Control
클라우드 네이티브 애플리케이션에 사용한 정책이 올바르고 적용 가능한지 여부를 확인하는 액세스 제어 기능도 있습니다.

4. Visibliity
가시성 - 로그나 그래프등을 사용하여 모든 요소가 제대로 작동하는지 여부를 표시할 수 있습니다.
이 모든 기능은 무료이며 Istio를 설치할 때 기본으로 제공 됩니다.

Istio 컴포넌트

Pilot : 실제 Istio 서비스 매쉬를 자동으로 구동 합니다.
Pilot은 A/B 테스팅을 가지고 있고,  카나리(Canary) 배포와 제한시간 초과를 제어 합니다.
또한 모든 요소의 작동방식을 제어하는 인텔리전스도 포함 되어 있습니다.
Istio의 핵심 컴포넌트라 할 수 있습니다.
이녀석은 Envoy에 대한 설정관리를 하는 역할을 합니다.
   - Service Discovery
   - 트래픽의 경로를 컨트롤 : 서비스에서 서비스로 호출되는 경로를 컨트롤할 수 있으며, 서비스간 호출이 발생할 때 
                재시도, 장애 전파를 막기 위한 써킷 브레이커, Timeout등의 기능을 제공하게 된다.


Citadel : 서비스 매쉬의 보안 측면으로 실제로 CA를 내장하고 있습니다.
또한 필요에 따라 서비스 A와 서비스 B의 통신을 허용합니다.
실제로 암호화되지 않은 트래픽을 서비스 매쉬를 통해 업그레이드한 경우,
Citadel을 사용하여 트래픽을 오가며 암호화해야 합니다.
하나의 Kubernetes 클러스터에서 시작하여 여러 클러스터로 확장하는 경우, 
여러 클러스터 간에 서비스 매쉬를 확장하고 인터넷을 통해 데이터를 전송하려면 보안을 적용해야 할 수 있습니다.
Citadel이 사용자 대신 이 작업을 수행할 수 있습니다.
요약하면 보안에 관련된 기능을 담당하는 모듈 입니다.
사용자 인증(Authentication), 인가(Authorization)을 담당 합니다.
Istio는 통신을 TLS(SSL) 암호화를 수행할 수 있는데,
TLS 암호화 또한 사용자 인증에 필요한 인증서를 관리하는 역할을 수행 합니다.

Mixer : 모든 사이드카와 Istio가 작동하는 방식을 중앙 집중식으로 관리하는 지점 입니다.
이때 텔레메트리를 함께 사용하기도 하는데, 이 기능은 앞에서 언급한 가시성과 관련된 그래프를 
Pilot 단계에 표시하는데 사용 됩니다.
Mixer는 장착이 가능하기 때문에 Istio가 기본 제공하는 기능 외에 다른 기능도 추가할 수 있습니다.
특별히 Mixer만 사용하여 애플리케이션을 제작하는 Third-Party 회사도 있습니다.
요약하면 Access Control, 정책통제, 각종 모니터링의 지표 수집의 역할을 합니다.

Galley : Istio Configuration 유효성 검사

아키텍처를 좀 더 살펴보자!
위에 보면 Control Plane이라는 것이 보이는데 알아보자

Plane

Data Plane : proxy들로 이루어진 트래픽들을 설정값에 따라 컨트롤하는 부분(Envoy)
Control Plane : proxy들에게 설정값을 전달하고 중앙 관리하는 컨트롤러 역할(Istio)

Data Plane의 메인 프록시로 Envoy Proxy를 사용하며 이를 컨트롤 해주는 Control Plane의 오픈소스 솔루션이 Istio이다.

다시 말해

Data Plane은 Envoy 프록시를 서비스 옆에 붙여 Side car 형식으로 배포를 하고 서비스로 인입되고 나가는 트래픽을 Envoy를 통해 제어하게 된다.
Envoy 프록시는 서비스에서 서비스를 호출할 때 상대 서비스의 IP를 찾는데 이를 Service Discovery라고 한다.
Control Plane은 Envoy를 컨트롤하는 부분이며, 위에 언급한 Pilot, Mixer, Citadel 3개의 모듈로 구성되어 있다.

기능 요약 정리

1. 트래픽 통제
   - 트래픽 분할
   - 컨텐츠 기반의 트래픽 분할
2. 서비스간 안정성 제공
   - 헬스체크 및 서비스 디스커버리 
   - Retry, Timeout, Circuit Breaker
3. 보안
    - 통신 보안(TLS 암호화)
    - 서비스 인증과 인가
    - 서비스간 인증
    - 서비스와 사용자간 인증
    - 인가를 통한 권한 통제
4. 모니터링
    - 서비스 간 통신은 Envoy 프록시를 통하게 되며, 이에 대한 응답 시간 및 서비스 처리량이 Mixer로 전달
    - 전달된 각종 지표들은 Mixer에 연결된 Logging Backend에 저장
    - 네트워크 트래픽을 모니터링하며, 서비스간 호출관계가 어떻고 서비스의 응답 시간, 처리량 등의 다양한 지표를 수집하여
       모니터링 할 수 있습니다.
    - Mixer는 플러그인이 가능한 어댑터 구조로 운영하는 인프라에 맞춰 로깅 및 모니터링 시스템을 손쉽게 변환이 가능 합니다.
       즉, Heapster, Promotheus~Datadog까지 저장이 가능하며 이렇게 저장된 지표들은 시각화를 제공 합니다.
       Kiali라는 오픈소스는 Istio를 통해 수집되는 각종 지표를 기반으로 서비스간의 관계를 시각화하여 나타낼수 있습니다. 

간단하게 아키텍처의 큰 그림과 용어 및 기능에 대해 알아보았다.
조대협님이 엄청 디테일하게 잘 정리해주셨다;ㅁ; 
이것을 바탕으로 정리하며 이해해보자!

 

ref : https://bcho.tistory.com/1293?category=731548 

 

Istio #1 - 마이크로 서비스와 서비스 매쉬

Istio #1 마이크로 서비스 아키텍처와 서비스 매쉬 조대협 (http://bcho.tistory.com) 마이크로 서비스 아키텍쳐는 여러가지 장점을 가지고 있는 아키텍쳐 스타일이기는 하지만, 많은 단점도 가지고 있다

bcho.tistory.com

https://bcho.tistory.com/1295?category=731548 

 

Istio #2 - Envoy proxy

Istio #2 - Envoy Proxy 조대협 (http://bcho.tistory.com) 그럼 앞에서 설명한 서비스 매쉬의 구조를 구현한 Istio를 살펴보기전에, Istio에 사용되는 envoy 프록시에 대해서 먼저 알아보자. (이 글은 예전에 포..

bcho.tistory.com

https://bcho.tistory.com/1296?category=731548 

 

Istio #3- Istio에 대한 소개

ISTIO 조대협 (http://bcho.tistory.com) Envoy를 이용해서 서비스 매쉬를 구현하기 위해서는 Envoy로 구성된 데이타 플레인을 컨트롤할 솔루션이 필요하다. Envoy를 데이타 플레인으로 사용하고 이를 컨트롤

bcho.tistory.com

https://bcho.tistory.com/1297?category=731548 

 

Istio #4 - Istio 설치와 BookInfo 예제

Istio #4 - 설치 및 BookInfo 예제 조대협 (http://bcho.tistory.com) Istio 설치 그러면 직접 Istio 를 설치해보자, 설치 환경은 구글 클라우드의 쿠버네티스 환경을 사용한다. (쿠버네티스는 오픈소스이고, 대

bcho.tistory.com

 

반응형