Skip to main content

Istio를 활용한 Service Mesh 구현

Turaco 서비스 아키텍처 메뉴에서 Istio를 활용해서 마이크로 서비스 간 데이터 공유를 제어하고 자동화할 수 있는 Service Mesh를 구현할 수 있습니다. Istio를 사용하여 애플리케이션 코드를 변경할 필요없이 서비스 간 트래픽 흐름을 관리하고 액세스 정책을 적용할 수 있습니다.

Service Mesh

서비스 메시(Service Mesh)란 오픈소스 프로젝트 Istio처럼, 애플리케이션의 다양한 부분들이 서로 데이터를 공유하는 방식을 제어하는 방법입니다. 서비스 간 커뮤니케이션을 관리하는 다른 시스템들과 달리, 서비스 메시는 애플리케이션에 구축된 전용 인프라 계층입니다. 인프라 계층은 서로 다른 애플리케이션 부분이 얼마나 원활하게 상호작용하는지를 기록할 수 있으므로, 더 쉽게 커뮤니케이션을 최적화하고 애플리케이션 확장에 따른 다운 타임을 방지할 수 있습니다.

클러스터 Istios 패키지 설치

클러스터 생성 시 기본으로 설치되는 패키지에 Istio가 없기 때문에 클러스터 생성 후 추가 패키지 관리를 기능을 사용하여 Istio를 설치해 줍니다.

Istio 관련 패키지

  • Istio
  • Istio Addon
    • kiali
    • grafana
    • jaeger
    • prometheus

추가 패��키지 추가 패키지 리스트

Istio Addon

Kiali

Istio를 통해 구현한 서비스 매시를 모니터링 할 수 있는 툴입니다. Kiali는 Prometheus와 grafana에 연계해서 메트릭을 가져오고 대시보드에 보여주기 때문에 함께 구성되어야 합니다.

  • Kiali URI: {endpoint}/kiali

Grafana

Istio 용 대시보드를 구성하는 데 사용할 수 있는 오픈 소스 모니터링 솔루션입니다. Grafana를 사용하여 Istio 및 서비스 메시 내 애플리케이션의 상태를 모니터링할 수 있습니다.

  • Grafana URI: {endpoint}/grafana

Jaeger

사용자가 복잡한 분산 시스템에서 트랜잭션을 모니터링하고 문제를 해결할 수 있는 오픈 소스 엔드 투 엔드 분산 추적 시스템입니다.

  • Jaeger URI: {endpoint}/jaeger

Prometheus

오픈 소스 모니터링 시스템 및 시계열 데이터베이스입니다. Istio 및 서비스 메시 내 애플리케이션의 상태를 추적하는 지표를 기록할 수 있습니다.

  • Prometheus URI: {endpoint}/prometheus

아키텍처 설정

네트워트 타입 선택

  1. 아키텍처 목록에서 우측 상단의 아키텍처 생성 버튼을 클릭하여 새로운 아키텍처 생성할 수 있습니다.
  2. 원하는 네트워크 K8S Ingress/Networking Istio 타입을 선택하고 생성 버튼을 클릭합니다.
네트워크 타입 변경

선택한 네트워크 타입은 다른 타입으로 변경이 불가능합니다. 다른 네트워크 타입으로 변경하고 싶으면 새로운 아키텍처를 만들어야 합니다.

네트워크 선택 화면

Istio 아키텍처 생성 화면

Istio 네트워크에서 연결 가능한 컴포넌트 항목

Gatewayvirtualservice

Virtualservice백엔드, 프론트엔드

DestinationRule백엔드, 프론트엔드

이스티오 아키텍처 화면

Gateway/VirtualService 설정

Gateway

수신 또는 발신 HTTP/TCP 연결을 수신하는 메시의 가장자리에서 작동하는 로드 밸런서를 설정합니다. 노출되어야 하는 포트 집합, 사용할 프로토콜 유형, 로드 밸런서에 대한 SNI 구성 등을 설정합니다.

  • + ADD 버튼으로 Servers 정보를 다중 설정할 수 있습니다.

VirtualService

서비스 레지스트리에서 고유한 이름에 바인딩 된 애플리케이션 동작 단위입니다. 서비스는 포드, 컨테이너, VM 등에서 실행되는 워크 로드 인스턴스에 의해 구현되는 여러 네트워크 엔드포인트로 구성됩니다.

  • 연결된 컴포넌트 개수만큼 http 설정을 할 수 있습니다.
  • Path URI를 여러 가지 설정할 수 있습니다.
  • Connection timeout은 숫자+'s' 조합으로 입력합니다. ex) 100s, 80s

이스티오 세팅 화면

Destination Rule 설정

라우팅이 발생한 후 서비스를 위한 트래픽에 적용되는 정책을 정의합니다. 이러한 규칙은 로드 밸런싱 구성, 사이드카의 연결 풀 크기, 로드 밸런싱 풀에서 비정상 호스트를 감지하고 제거하기 위한 이상 값 감지 설정을 지정할 수 있습니다.

  • Sample yaml을 제공합니다. yaml은 사용자가 편집 가능하며 +ADD를 통해서 여러 가지 Sample yaml 을 설정할 수 있습니다.
  • yaml 편집 화면에 1~5 번 라인은 readonly 영역으로 그 외의 라인만 편집이 가능합니다.

제공되는 Sample yaml 항목

  • Load Balancing
    • Round Robin
    • Random
    • Least Request
    • Passthrough
  • Circuit Breaker
  • Rate Limiting
  • Sticky Session

이스티오 룰세팅 화면