Istio Hands-on Study [1기]

1주차 : Istio 첫걸음 (3) - Istio Control Plane

구구달스 2025. 4. 12. 18:33

 Istio Control Plane

  • Istio는 서비스 메시 를 관리하는 도구입니다.
  • 그 중심에는 컨트롤 플레인(Control Plane) 이라는 부분이 있습니다. 이 컨트롤 플레인은 전체 메시를 설정하고, 관찰하고, 관리하는 역할을 합니다.

🔧 컨트롤 플레인이 하는 일:

  • 트래픽을 어떻게 보낼지 정하는 라우팅 규칙 설정
  • 데이터 플레인(=사이드카 프록시)이 설정을 받아가는 API 제공
  • 서비스 간 통신을 도와주는 서비스 디스커버리
  • 누가 어떤 서비스를 사용할 수 있는지 정하는 사용 정책 관리
  • 보안 인증서 발급 및 갱신
  • 각 서비스(워크로드)에 신원 부여
  • 모니터링 데이터 수집
  • 사이드카 프록시 자동 주입
  • 네트워크 경계 설정 및 접근 제어

이 모든 기능은 대부분 istiod라는 하나의 주요 컴포넌트에서 처리합니다.
추가로 인그레스(들어오는), 이그레스(나가는) 트래픽을 처리하는 게이트웨이도 함께 사용됩니다.

 Istiod

  • Istiod는 Istio의 두뇌 역할을 하는 컨트롤 플레인 컴포넌트입니다.
  • 사용자가 작성한 설정(YAML)을 실제 네트워크 프록시(Envoy) 가 사용할 수 있도록 변환해주는 역할을 합니다.

🔧 Istiod가 하는 일 요약

📦 설정 해석 사용자가 만든 YAML 설정(예: 트래픽 분산)을 읽고 해석
🔄 Envoy 설정 생성 해석한 설정을 Envoy가 이해하는 형식으로 변환
🔌 프록시들과 통신 Envoy 프록시들에게 설정을 전달 (xDS API 사용)
🔐 보안 인증서 발급 각 서비스에 신원을 부여하고, 트래픽을 암호화(mTLS)
🔎 동적 서비스 탐색 서비스가 바뀌면 자동으로 반영 (무중단 업데이트)

🔐 ID 및 보안 관리 (mTLS)

Istio는 각 서비스에 신원(identity) 을 부여하고,  모든 트래픽을 암호화(mTLS) 합니다.

  • 📜 X.509 인증서 사용
  • 🧾 SPIFFE 표준 기반의 ID 부여
  • 🔄 자동 발급 및 갱신: 애플리케이션이 키를 직접 관리하지 않아도 됩니다.
Istiod는 사용자의 네트워크 정책을 Envoy가 실행할 수 있게 바꿔주는 뇌 역할을 하며, 서비스 간 통신을 안전하게 연결해줍니다.

🧩 Istio와 Kubernetes Custom Resources

Istio는 Kubernetes 위에 설치되면, Istio만의 설정 방식을 사용하기 위해 Custom Resource Definitions (CRDs) 를 사용

  • Kubernetes는 기본적으로 Pod, Service, Deployment 같은 자원만 알아요.
  • 그런데 Istio는 VirtualService, DestinationRule 같은 새로운 설정 객체가 필요합니다..
  • 그래서 Istio는 Kubernetes에 "이런 것도 쓸 수 있게 해줘!" 하고 CRD를 등록합니다.
Istio는 Kubernetes에 자신만의 설정 방식(CR)을 추가해서, 기존 Kubernetes 도구로 쉽게 제어할 수 있도록 합니다.

🔄 Istio 설정 → Envoy 설정으로 바꾸는 과정

Istio에서 작성한 설정(VirtualService 등)은 istiod가 받아서 Envoy 프록시가 이해할 수 있는 방식으로 자동으로 바꿔줍니다. 이걸 통해 Envoy는 어떤 요청을 어디로 보낼지 알 수 있습니다..

📌 어떻게 작동하나요?

  1. 사용자가 YAML 설정 작성
    예: 어떤 요청은 v2, 나머지는 v1 서비스로 보내기
  2. Istiod가 읽고 분석
  3. Envoy 전용 설정으로 번역
  4. Envoy 프록시에게 전달 (API로 실시간 전달)

🧠 이 과정을 도와주는 기술: xDS API

  • istiod는 Envoy와 통신할 때 xDS API라는 표준을 사용합니다.
  • 주요 API들:
    • LDS: 어떤 포트를 열지 (Listener)
    • RDS: 어떤 URL이 어디로 가는지 (Route)
    • EDS: 어떤 IP로 요청을 보낼지 (Endpoint)

이 API 덕분에 Envoy는 설정이 바뀌어도 중단 없이 바로 반영할 수 있습니다.

Istio의 설정은 istiod가 Envoy 설정으로 바꿔서, 프록시들이 자동으로 트래픽을 올바르게 라우팅하도록 해줍니다.

 

 Istio의 Ingress & Egress Gateway

애플리케이션이 외부와 통신하려면 클러스터 밖으로 나가거나 들어오는 트래픽을 제어할 수 있어야 합니.
이 역할을 하는 것이 바로:

  • Ingress Gateway 👉 클러스터 밖에서 안으로 들어오는 트래픽을 관리
  • Egress Gateway 👉 클러스터 안에서 밖으로 나가는 트래픽을 관리

📌 왜 필요한가요?

  • 외부 시스템(예: DB, 메시지 큐, 외부 API)과 안전하게 통신하려면 필수.
  • 어떤 트래픽이 오가도록 허용할지 명확히 설정할 수 있어 보안에 유리.

🧱 구성 요소는?

  • Ingress/Egress Gateway는 Envoy 프록시예요.
  • 애플리케이션 옆에 붙는 사이드카 프록시와 거의 같지만,
    • 애플리케이션에 종속되지 않고 독립적으로 동작합니다.
    • 단지 들어오고 나가는 트래픽만 담당합니다.
Ingress/Egress Gateway는 클러스터 안팎의 트래픽을 안전하고 정밀하게 제어해주는 출입문 역할을 합니다.