Ssoon

[9주차] Ambient Mode : 데이터 플레인 본문

Istio Hands-on Study [1기]

[9주차] Ambient Mode : 데이터 플레인

구구달스 2025. 6. 3. 18:18

🚀 Istio Ambient Mesh Data Plane 이해하기

  • Istio의 ambient mesh는 서비스 간 통신을 관리하는 강력한 시스템입니다. 특히 data plane은 실제 트래픽을 처리하는 역할을 맡습니다. 

🛠️ Data Plane이란?

  • Data plane은 Istio에서 실제로 데이터를 주고받는 부분입니다. 네트워크 트래픽을 처리하고, 보안을 적용하며, 정책을 실행하는 역할을 합니다. Control plane이 '지휘자'라면, data plane은 '실제 작업자'라고 생각하면 됩니다. Ambient mesh에서는 sidecar 없이도 효율적으로 동작하도록 설계되었습니다.

Data plane은
네트워크 트래픽을 처리하고 보안 및 정책을 실행하는 핵심 시스템입니다.


🧩 Workload의 세 가지 상태

  • Ambient mesh에서는 pod가 세 가지 상태로 나뉩니다. 각 상태에 따라 트래픽 처리 방식이 달라집니다.

Out of Mesh

  • Out of mesh 상태는 Istio나 ambient mesh 기능이 전혀 적용되지 않은 일반 pod입니다. 이 경우, pod는 기본 Kubernetes 네트워크를 사용하며 추가적인 보안이나 정책이 적용되지 않습니다.

Out of mesh pod는
Istio 기능이 적용되지 않은 기본 pod입니다.

In Mesh

  • In mesh 상태는 pod가 ambient mesh의 data plane에 포함되어 Layer 4 수준에서 트래픽이 ztunnel에 의해 처리되는 상태입니다. 이 모드는 istio.io/dataplane-mode=ambient 레이블을 설정하여 활성화됩니다. Layer 4 정책(예: 기본 보안 정책)이 적용됩니다.

In mesh pod는
ztunnel을 통해 Layer 4 트래픽과 정책을 처리합니다.

In Mesh, Waypoint Enabled

  • Waypoint enabled 상태는 In mesh 상태에 더해 waypoint proxy가 배포된 pod입니다. 이 모드에서는 Layer 7 정책(예: HTTP 기반 라우팅)도 적용됩니다. istio.io/use-waypoint 레이블로 활성화됩니다.

Waypoint enabled pod는 Layer 7 정책을 적용받아 더 정교한 트래픽 관리가 가능합니다.


🔄 Mesh Routing: 트래픽 흐름

  • Ambient mesh에서의 트래픽 라우팅은 pod의 상태에 따라 다르게 동작합니다.

Outbound 트래픽

  • Pod에서 외부로 요청을 보낼 때(outbound), 트래픽은 node-local ztunnel로 투명하게 리다이렉트됩니다. ztunnel은 요청을 어디로 보낼지 결정합니다. 예를 들어, Kubernetes Service로의 요청은 해당 Service의 endpoint로 전달됩니다.
    • In mesh 대상: 대상도 ambient mesh에 포함되면, 요청은 HBONE 터널로 암호화되어 전송됩니다.
    • Waypoint enabled 대상: 대상에 waypoint proxy가 있으면, 요청은 waypoint로 보내져 Layer 7 정책이 적용됩니다.

Outbound 트래픽은 ztunnel을 통해 라우팅되며,
대상에 따라 HBONE 또는 waypoint를 거칩니다.


Inbound 트래픽

  • Pod가 외부에서 요청을 받을 때(inbound), 트래픽은 ztunnel로 리다이렉트됩니다. ztunnel은 Authorization Policies를 적용하고, 정책을 통과한 요청만 pod로 전달합니다.
    • HBONE 또는 plaintext: 기본적으로 ztunnel은 HBONE(암호화)과 plaintext 트래픽을 모두 허용합니다. 하지만 정책으로 plaintext를 차단할 수 있습니다.
    • Waypoint enabled: 출발지가 ambient mesh라면, 요청은 waypoint를 거쳐 Layer 7 정책이 적용됩니다. 하지만 외부(out of mesh) 요청은 waypoint를 거치지 않습니다.

Inbound 트래픽은 ztunnel에서 정책 검사를 거치며,
waypoint enabled pod는 Layer 7 정책을 적용받습니다.


🔒 Identity와 보안

  • Data plane은 모든 Layer 4 TCP 트래픽을 mTLS로 보호합니다. ztunnel은 각 pod의 고유한 x509 인증서를 관리하며, HBONE 터널을 통해 암호화된 통신을 보장합니다. ztunnel은 CA(인증 기관)에서 인증서를 받아오며, 노드 내 pod의 identity만 요청할 수 있도록 제한됩니다.

ztunnel은
mTLS와 x509 인증서를 사용해 트래픽을 보호합니다.


📊 Telemetry

  • ztunnel은 Istio의 표준 TCP 메트릭을 생성하여 트래픽 모니터링을 지원합니다. 이를 통해 네트워크 상태를 실시간으로 확인할 수 있습니다.

ztunnel은
표준 메트릭을 통해 네트워크 모니터링을 제공합니다.


🖼️ Layer 4 트래픽 예시

  • 기본 ztunnel L4 전용 데이터 경로

https://istio.io/latest/docs/ambient/architecture/data-plane/

🔄 흐름 설명

  1. 같은 노드 내 통신 (예: C1 → C2):
    • 파란 점선 경로를 따라, C1이 C2로 요청을 보낼 때 ztunnel proxy를 거쳐 안전하게 통신합니다.
  2. 다른 노드 간 통신 (예: C1 → S1):
    • C1의 요청은 Node W1의 ztunnel을 거쳐 보안 채널(hbone)**로 전송됩니다.
    • 이 보안 연결은 잠금 아이콘으로 표시되어 있습니다 (암호화됨).
    • Node W2의 ztunnel이 이 요청을 받아서, S1으로 전달합니다.
  3. 응답도 마찬가지로 돌아감:
    • 응답도 같은 경로로 역방향으로 안전하게 돌아옵니다.
  4. C3처럼 sidecar 없는 Pod 간 통신 (빨간 점선):
    • C3에서 S1으로 직접 통신할 경우도 ztunnel이 대신 트래픽을 중계해줍니다.

Layer 4 트래픽은
ztunnel을 통해 HBONE 터널로 암호화되며, 정책이 적용됩니다.


🌉 Waypoint Enabled 라우팅

  • Waypoint가 활성화된 경우, 트래픽은 waypoint proxy를 거쳐 Layer 7 정책이 적용됩니다.
    예를 들어, 아래는 echo 서비스로의 요청을 echo-v1으로 라우팅하는 HTTPRoute 설정입니다:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: echo
spec:
  parentRefs:
  - group: ""
    kind: Service
    name: echo
  rules:
  - backendRefs:
    - name: echo-v1
      port: 80
  • 임시 경로점을 통한 Ztunnel 데이터 경로

🔄 통신 흐름 설명

  1. C1 → ztunnel (Node W1):
    • C1에서 나오는 트래픽은 먼저 Node W1의 ztunnel proxy로 갑니다.
    • 이 단계에서 트래픽이 **보안화(암호화)**됩니다.
  2. ztunnel → waypoint proxy (Node W3):
    • 암호화된 트래픽은 hbone이라는 안전한 터널을 통해 waypoint proxy로 전송됩니다.
    • waypoint proxy는 서비스 간 정책(예: 인증, 승인, 로깅 등)을 검사하고 통과시킵니다.
  3. waypoint proxy → ztunnel (Node W2):
    • 정책 확인을 마친 트래픽은 다시 hbone을 통해 S1이 있는 노드의 ztunnel proxy로 전달됩니다.
  4. ztunnel → S1 (Node W2):
    • 마지막으로 ztunnel proxy가 트래픽을 S1에 전달합니다.

 

Waypoint proxy는
Layer 7 정책과 라우팅을 처리하며, HBONE 터널로 트래픽을 전달합니다.


📌 핵심 요약

  • Data plane은 트래픽을 처리하고 보안 및 정책을 실행합니다.
  • Workload는 Out of mesh, In mesh, Waypoint enabled 세 가지 상태로 나뉩니다.
  • Outbound 트래픽은 ztunnel을 통해 라우팅되며, 대상에 따라 HBONE 또는 waypoint를 거칩니다.
  • Inbound 트래픽은 ztunnel에서 정책 검사를 거치며, waypoint enabled pod는 Layer 7 정책을 적용받습니다.
  • Identity는 mTLS와 x509 인증서로 보호되며, ztunnel이 관리합니다.
  • Telemetry는 표준 메트릭으로 네트워크 모니터링을 지원합니다.
  • Layer 4 트래픽은 ztunnel과 HBONE으로 암호화되며, waypoint는 Layer 7 정책을 추가로 처리합니다.
Comments