쿠버네티스

Istio

안녕유지 2023. 4. 21. 00:43

서비스 메시란

기존 방식
이스티오 방식

  • 애플리케이션의 다양한 부분들이 서로의 데이터를 공유하는 방식을 제어하는 방법
  • API 등을 사용해서 마이크로 서비스간 통신을 안전하고, 빠르고, 신뢰할 수 있게 만들기 위해 설계된 전용 인프라 계층
  • 기존 서비스 아키텍처에서 호출이 직접 호출되는 방식이었다면, 서비스 메시에서의 호출은 서비스에 딸린 proxy끼리 이루어짐
    서비스 트래픽을 네트워크단에서 통제할 수 있고, client 요구에 따라 proxy단에서 라우팅 서비스도 가능하게 할 수 있다.

 

메시 네트워크

서비스 메쉬는 애플리케이션 실행 환경에 새로운 기능을 도입하지 않고, 개별 서비스로부터 서비스간 커뮤니케이션을 통제하는 로직을 통해 인프라 계층에서 추상화 한다. 서비스 메쉬에서는 요청이 자체 인프라 계층의 프록시를 통해 마이크로서비스 간에 라우팅됩니다. 이러한 이유로 서비스 메쉬를 구성하는 개별 프록시는 서비스 내부가 아니라 각 서비스와 함께 실행되므로 'sidecar'라고도 합니다. 각 서비스에서 분리된 이러한 sidecar 프록시들이 모여 메쉬 네트워크를 형성합니다. 

 

 

Istio란

Istio는 기존 분산 애플리케이션에 투명하게 계층화되는 오픈 소스 서비스 메시입니다. 마이크로서비스가 서로 통신하고 데이터를 공유하는 방법을 지원한다. Istio를 통해 마이크로서비스를 보호, 연결, 모니터링할 수 있다.

Istio의 컨트롤 플레인은 Kubernetes에서 실행되며 해당 클러스터에 배포된 애플리케이션을 메시에 추가하거나 메시를 다른 클러스터로 확장하거나 Kubernetes 외부에서 실행되는 VM 또는 다른 엔드포인트를 연결할 수도 있습니다.

이스티오의 구조는 논리적으로 Data plane과 Control plane 두 개의 영역으로 구분되어 있습니다.

  • Data plane
    • 마이스로서비스간 네트워크 통신 담당
    • 서비스 옆에 사이드카 Envoy Proxy를 붙여, 서비스로 들어오고 나가는 트래픽을 Envoy를 통해 통제
  • Control plane
    • Envoy proxy의 라우팅 설정은 Controlplane이 실시간(동적)으로 함
    • Istio가 관리하는 서비스 메시로 들어오는 Ingress traffic만 관리

 

Istio 주요 구성 요소

Data Plane

  • Envoy : 경량화된 L7 전용 Proxy, HTTP, TCP 등의 프로토콜 지원

Control Plane

  • Mixer : Serice Mesh 전체 영역에서 Access 제어 및 정책을 관리 모니터링 지표를 수집
    • (모든 컴포넌트가 istiod라는 하나의 프로세스로 합쳐지고 Mixer가 없어지고 Pilot이 이 기능까지 함께 수행)
  • Pilot : envoy에 대한 설정 관리를 하는 역할 Traffic Management 기능을 제공
  • Citadel : 보안에 관련된 기능을 담당하는 모듈 인증 기능 관리 (TLS Certification 등)
  • Galley : Istio configuration을 체크 Kubernetes Yaml 파일을 istio가 이해할 수 있는 형태로 변환

 

Istio 트래픽 흐름

  • Gateway
    • Standalone envoy proxy 형태로 Istio-ingress-gateway에서 직접적으로 트래픽을 받으며 서비스 메시에 대한 inbound, outbound 트래픽을 관리한다.
    • 쿠버네티스 CRD로 설정되어 있고 gateway의 동작은 proxy에게 위임하는데, 보통 Istio-sytsem namespace에 설치된 envoy-proxy를 사용합니다. 
  • Virtual Service
    • 쿠버네티스 서비스로 라우팅 되게 구성하는 Istio Object
      버추얼 서비스가 없는 경우, envoy proxy 는 모든 서비스 인스턴스 간에 라운드로빈 로드 밸런싱을 사용해 트래픽을 분산시킴.
  • Destination role
    • 쿠버네티스 서비스 내에서 어느 파드로 트래픽을 보낼지에 관련됨

 

Istio 기능

  • Traffic management
    • 쉬운 규칙 구성과 트래픽 라우팅을 통해 서비스간의 트래픽 흐름과 API 호출을 제어 할 수 있습니다.
  • Security
    • 기본적으로 envoy를 통해 통신하는 모든 트래픽을 자동으로 TLS암호화를 합니다.
  • Policies
    • 서비스간 상호작용에 대해 access, role등의 정책을 설정하여 리소스가 각 서비스에게 공정하게 분배되도록 제어합니다.
  • Observability
    • 강력한 모니터링 및 로깅 기능을 제공하여 문제를 빠르고 효율적으로 감지할 수 있게 합니다.

 

 

Getting Started

https://istio.io/latest/docs/setup/getting-started/

 

1. 이스티오 다운로드 및 설치

Istio 릴리스 페이지 로 이동하여 OS용 설치 파일을 다운로드하거나 자동으로 최신 릴리스(Linux 또는 macOS)를 다운로드하고 추출합니다.

 

 

 

 

 

 

2. 샘플 애플리케이션 배포

 

3. 외부 트래픽에 애플리케이션 열기

 

4. 대시보기 보기

 

 

 

 

출처

https://istio.io/latest/

 

Istio

A service mesh for observability, security in depth, and management that speeds deployment cycles.

istio.io

https://www.redhat.com/ko/topics/microservices/what-is-a-service-mesh

 

서비스 메쉬(service mesh) 개념, 기능, 작동방식, 최적화 방법

서비스 메쉬(서비스 메시)란애플리케이션에 구축된 인프라 레이어를 뜻하며, 마이크로서비스 라우팅을 요청하고 개별 프록시들이 모여 메쉬 네트워크를 형성합니다.

www.redhat.com

https://velog.io/@borab/Istio

 

Istio 👺

https://istio.io/https://www.redhat.com/ko/topics/microservices/what-is-istiohttps://gruuuuu.github.io/cloud/service-mesh-istio/https&#

velog.io

https://malwareanalysis.tistory.com/307

 

Istio 트래픽 흐름과 설정 이해

목차 서비스 메시는 무엇일까?: https://malwareanalysis.tistory.com/280 Istio아키텍처: https://malwareanalysis.tistory.com/304 envoy proxy 체험: https://malwareanalysis.tistory.com/305 Istio envoy 동적설정 원리: https://malwareanalysi

malwareanalysis.tistory.com