Istio의 핵심 컴포넌트

Istio의 핵심 컴포넌트

1️⃣ Control Plane (Istiod, Pilot, Galley, Citadel)

1 Control Plane 개요

Control Plane은 Istio의 관리 및 제어 기능을 담당하며, 트래픽 라우팅, 보안, 정책 등을 설정합니다. 이 Plane은 여러 컴포넌트로 구성되어 있으며, 클러스터 내의 서비스와 상호작용합니다.

2 Istiod

Istiod는 Istio의 핵심 컴포넌트로, Control Plane의 모든 기능을 담당합니다. 이전에는 Pilot, Citadel, Galley가 별도로 분리되어 있었으나, Istiod로 통합되었습니다.

  • Istiod의 역할: 서비스 디스커버리, 트래픽 라우팅, 정책 적용, 보안 등을 관리합니다.
  • 서비스 디스커버리: 클러스터 내 서비스들을 자동으로 탐지하고 구성합니다.
  • 트래픽 관리: Envoy 사이드카 프록시를 통해 트래픽을 제어합니다.

📌 Istiod 설치 확인

kubectl get pods -n istio-system

Istiod가 제대로 설치되었는지 확인할 수 있습니다.

3 Pilot

Pilot은 Istio의 초기 컴포넌트로, 이제 Istiod에 통합되었습니다. 주로 트래픽 라우팅과 서비스 디스커버리 기능을 수행하며, Envoy 사이드카와 통신하여 서비스 간 트래픽을 제어합니다.

4 Galley

Galley는 Istio의 설정 및 구성을 관리하는 컴포넌트로, Istiod에 통합되었습니다. 구성 파일을 읽고 이를 검증하는 기능을 담당했습니다.

5 Citadel

Citadel은 Istio의 보안 관리 컴포넌트로, 인증 및 암호화된 트래픽을 관리했습니다. 이제 Istiod에서 보안을 담당하며, 특히 서비스 간의 인증서 발급을 처리합니다.


2️⃣ Data Plane (Envoy Proxy 개념 및 작동 방식)

1 Data Plane 개요

Data Plane은 실제 서비스 간의 트래픽을 처리하는 역할을 하며, Envoy Proxy가 주요 컴포넌트로 사용됩니다. Envoy는 Istio의 ‘측면 프록시(sidecar proxy)‘로, 각 서비스 인스턴스와 함께 배포되어 트래픽을 모니터링하고 제어합니다.

2 Envoy Proxy

Envoy는 고성능의 분산 프록시로, Istio의 핵심 요소입니다. 트래픽 라우팅, 로드 밸런싱, 보안, 서비스 모니터링 등 다양한 기능을 제공합니다. Envoy는 주로 Sidecar Pattern으로 각 서비스와 함께 배포됩니다.

📌 Envoy의 역할

  • 트래픽 라우팅: 서비스 간 요청을 올바르게 전달합니다.
  • 보안: 서비스 간의 인증 및 암호화를 담당합니다.
  • 모니터링: 트래픽과 요청의 성능을 모니터링합니다.

Envoy의 동작 방식을 이해하려면, 트래픽 흐름을 아래와 같이 살펴볼 수 있습니다.

Client -> Envoy (Sidecar Proxy) -> Service (Envoy Proxy) -> Destination Service

3 Envoy의 주요 기능

  • 트래픽 라우팅: 요청을 목적지 서비스로 전달하는 방식 (예: A -> B 또는 A -> C)
  • 로드 밸런싱: 여러 서비스 인스턴스 간의 부하 분산
  • 서비스 인증: 서비스 간의 TLS 암호화된 통신을 관리

3️⃣ Mixer (폐지됨) → Telemetry & Policy 개념 및 역할

1 Mixer의 역할 (이전)

Mixer는 Istio의 초기 컴포넌트로, 트래픽의 정책, 텔레메트리, 로깅 및 모니터링을 담당했습니다. 그러나 Istio 1.5 버전 이후 Mixer는 폐지되고, 텔레메트리와 정책 처리는 다른 컴포넌트로 분리되었습니다.

  • 정책 관리: API 호출, 트래픽 경로 등에 대한 정책을 처리
  • 모니터링: 서비스 간의 트래픽 및 성능을 수집하여 분석

2 현재 Telemetry & Policy

Mixer의 역할은 이제 TelemetryPolicy 컴포넌트가 처리합니다. 이들은 Istio의 다른 서비스와 통합되어, 데이터 수집, 요청 분석 및 정책 관리를 수행합니다.

  • Telemetry: 서비스 간 트래픽의 실시간 모니터링 및 데이터 수집
  • Policy: 서비스 호출에 대한 규칙을 정의하여 액세스 제어, 트래픽 제한 등을 설정

4️⃣ CNI (Container Network Interface)와 Istio 연동

1 CNI 개요

CNI는 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼에서 네트워크 인터페이스를 관리하는 표준입니다. CNI를 사용하여 Istio의 Data Plane을 Kubernetes 네트워크와 통합할 수 있습니다.

2 CNI와 Istio 연동

Istio는 기본적으로 Envoy를 사이드카로 사용하여 트래픽을 제어하지만, CNI 플러그인을 사용하면 네트워크 레벨에서 더 세밀한 트래픽 관리를 할 수 있습니다. CNI 플러그인은 Istio가 Kubernetes 네트워크와 효율적으로 통신할 수 있도록 도와줍니다.
CNI 설치 후, Istio는 각 Pod의 네트워크 인터페이스와 직접 상호작용하여 사이드카 프록시를 연결합니다.

📌 CNI 설치 명령

kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/cni-plugins/install/k8s/cni-install.yaml

5️⃣ Istio Gateway와 VirtualService 개념 및 사용법

1 Istio Gateway 개요

Istio Gateway는 외부 요청을 클러스터 내부로 라우팅하는 역할을 합니다. 일반적으로 HTTP, HTTPS, TCP 요청을 처리합니다.

  • Gateway는 트래픽의 입구 역할을 하며, 특정 규칙에 따라 트래픽을 처리합니다.

📌 Gateway 리소스 예시

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: example-gateway
  namespace: default
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

2 VirtualService 개요

VirtualService는 Istio의 라우팅 규칙을 정의하는 리소스로, 특정 서비스에 대한 트래픽을 다양한 방식으로 라우팅할 수 있습니다.

  • VirtualService는 요청 URL이나 헤더 값에 따라 트래픽을 동적으로 분배할 수 있습니다.

📌 VirtualService 리소스 예시

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: example-virtualservice
spec:
  hosts:
    - "example.com"
  gateways:
    - example-gateway
  http:
    - match:
        - uri:
            exact: "/path"
      route:
        - destination:
            host: example-service
            port:
              number: 80

3 Gateway와 VirtualService 결합

GatewayVirtualService를 결합하여 외부에서 들어오는 요청을 정의된 규칙에 따라 특정 서비스로 전달할 수 있습니다. 이 두 리소스를 통해 Istio는 클러스터 외부와 내부 간의 트래픽을 세밀하게 제어합니다.

RSS Feed
마지막 수정일자