Istio Ambient Mesh

목차

Istio Ambient Mesh란

Istio Ambient Mesh는 sidecar 없이 서비스 메시에 참여할 수 있게 만든 Istio의 데이터 플레인 모드입니다.
기존 Istio가 Pod마다 Envoy sidecar를 주입하는 방식이었다면, Ambient Mesh는 노드 단위 L4 프록시(ztunnel)필요할 때만 추가하는 L7 프록시(waypoint) 로 기능을 분리합니다.

Istio 공식 기준으로 Ambient Mode는 2024-11-07 공개된 Istio 1.24에서 GA(General Availability) 상태가 되었고, 현재는 Istio의 정식 운영 옵션 중 하나로 보는 것이 맞습니다.

왜 Ambient Mesh가 나왔나

기존 sidecar 방식은 강력하지만 운영 부담이 분명합니다.

  • Pod마다 프록시가 하나씩 붙으므로 리소스 사용량이 커짐
  • 애플리케이션 배포 시 sidecar injection과 재시작이 필요함
  • 언어나 런타임, 초기화 방식에 따라 sidecar 호환성 이슈가 생길 수 있음
  • 대규모 클러스터에서는 프록시 개수가 급격히 늘어나 운영 복잡도가 커짐

Ambient Mesh는 이런 문제를 줄이기 위해, “기본은 가볍게 L4 보안만 적용하고, 필요할 때만 L7 기능을 추가” 하는 구조를 선택했습니다.

Ambient Mesh 아키텍처

1. ztunnel

ztunnel은 각 노드에 배치되는 경량 프록시입니다.

  • 노드 단위로 동작
  • 서비스 간 트래픽을 HBONE 터널로 캡슐화
  • mTLS 암호화와 워크로드 상호 인증 수행
  • L4 수준 AuthorizationPolicy 적용 가능
  • L4 텔레메트리 수집 가능

즉, Ambient Mesh의 기본 기능인 zero-trust 보안 오버레이를 담당합니다.

ztunnelHBONE의 실제 트래픽 처리 방식은 별도 글로 분리했습니다.

2. Waypoint Proxy

waypoint proxy는 필요할 때만 추가하는 Envoy 기반 L7 프록시입니다.

  • 보통 namespace 단위로 배치
  • service 또는 pod 단위로도 연결 가능
  • HTTP 라우팅, 재시도, 타임아웃, fault injection 같은 L7 트래픽 제어 지원
  • HTTP 헤더/메서드 기반 AuthorizationPolicy 같은 L7 보안 정책 지원
  • HTTP 메트릭, access log, tracing 같은 L7 관측성 지원

즉, L7 기능이 필요한 트래픽만 waypoint를 거치도록 만드는 구조입니다.

3. Istiod

Control Plane은 기존과 동일하게 istiod가 담당합니다.

  • ztunnel / waypoint 설정 배포
  • 서비스 디스커버리
  • 인증서 및 정책 관리

동작 방식

Ambient Mesh의 트래픽 흐름은 아래처럼 이해하면 됩니다.

App Pod
-> node local ztunnel
-> (필요 시) waypoint proxy
-> destination node ztunnel
-> destination Pod

기존 sidecar 모드와 가장 큰 차이는 애플리케이션 Pod 안에 프록시 컨테이너가 들어가지 않는다는 점입니다.
그래서 namespace나 pod에 Ambient label을 붙여도, 일반적으로 sidecar 방식처럼 애플리케이션 재배포가 필요하지 않습니다.

Sidecar Mode와 비교

항목 Sidecar Mode Ambient Mesh
프록시 배치 Pod마다 Envoy 1개 노드마다 ztunnel + 선택적 waypoint
애플리케이션 침투성 높음 낮음
워크로드 재시작 보통 필요 대체로 불필요
기본 보안 mTLS, 정책 가능 mTLS, L4 정책 가능
L7 라우팅/정책 기본 제공 waypoint 필요
운영 복잡도 상대적으로 높음 단순화 가능
대규모 운영 비용 프록시 수가 많아질수록 증가 공유 프록시 구조로 절감 가능

정리하면:

  • 보안과 기본 메쉬 기능만 빠르게 도입하려면 Ambient Mesh가 유리
  • 모든 워크로드에 세밀한 L7 기능이 항상 필요하면 sidecar가 더 직관적일 수 있음

설치 예시

1. Gateway API CRD 설치

Ambient Mesh에서 waypoint는 Kubernetes Gateway API를 사용합니다.

kubectl get crd gateways.gateway.networking.k8s.io > /dev/null 2>&1 || \
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/experimental-install.yaml

2. Ambient Profile로 Istio 설치

istioctl install --set profile=ambient --skip-confirmation

설치가 끝나면 보통 istiod, istio-cni, ztunnel이 함께 배포됩니다.

3. Namespace를 Ambient Mesh에 편입

kubectl label namespace bookinfo istio.io/dataplane-mode=ambient

확인:

kubectl get ns -L istio.io/dataplane-mode

여기까지는 L4 보안 오버레이만 적용된 상태입니다.

Waypoint 추가 예시

L7 기능이 필요하면 waypoint를 추가합니다.

istioctl waypoint apply -n bookinfo --enroll-namespace --wait

위 명령은 다음을 한 번에 처리합니다.

  • bookinfo namespace에 waypoint 생성
  • namespace에 istio.io/use-waypoint=waypoint 라벨 적용
  • waypoint 준비 완료까지 대기

직접 라벨을 붙이려면 다음과 같이 할 수도 있습니다.

kubectl label namespace bookinfo istio.io/use-waypoint=waypoint

Ambient Mesh에서 기억할 포인트

1. L4와 L7을 분리해서 생각해야 한다

Ambient Mesh의 핵심은 기능 분리입니다.

  • ztunnel만 있으면 L4 보안, mTLS, 기본 텔레메트리
  • waypoint까지 있으면 L7 라우팅, L7 정책, HTTP 관측성

즉, VirtualService / HTTPRoute / L7 AuthorizationPolicy 같은 기능이 필요하면 waypoint 여부를 먼저 확인해야 합니다.

2. 정책 적용 위치가 달라진다

Sidecar 모드에서는 각 Pod의 Envoy가 정책 집행 지점이지만, Ambient에서는 다음처럼 나뉩니다.

  • L4 정책: ztunnel
  • L7 정책: waypoint

그래서 Ambient 환경에서는 “이 정책이 L4인지 L7인지”를 구분해서 봐야 합니다.

3. Gateway API 중심으로 보는 것이 좋다

Waypoint는 Kubernetes Gateway API 기반으로 구성됩니다.
Istio 공식 문서도 Ambient의 L7 구성에서 Gateway API 사용을 기본 흐름으로 안내합니다.

언제 쓰면 좋은가

Ambient Mesh는 아래 같은 환경에서 특히 잘 맞습니다.

  • 서비스 수가 많아 sidecar 운영 비용이 부담되는 경우
  • 애플리케이션 수정 없이 mTLS와 기본 보안을 빠르게 적용하고 싶은 경우
  • 모든 서비스에 L7 기능이 필요한 것은 아닌 경우
  • 단계적으로 Service Mesh를 도입하고 싶은 경우

반대로 아래 경우에는 sidecar를 같이 검토하는 것이 좋습니다.

  • 모든 서비스에 고급 L7 정책이 기본적으로 필요한 경우
  • 기존 운영 체계가 sidecar 중심으로 이미 고도화된 경우
  • 특정 확장 기능이 waypoint에서 아직 완전히 동일하지 않은 경우

운영 시 주의점

  • Ambient Mesh의 핵심 기능은 안정화되었지만, sidecar와의 완전한 기능 parity는 계속 개선 중입니다.
  • 최신 문서 기준으로 waypoint 환경에서는 EnvoyFilter 사용이 공식 지원되지 않습니다.
  • Ambient에서 L7 라우팅을 구성할 때는 Gateway API 중심으로 설계하는 편이 안전합니다.
  • 멀티클러스터/멀티네트워크/VM 같은 고급 시나리오는 버전별 지원 상태를 반드시 확인해야 합니다.

참고로 공식 발표 기준 상태 변화는 다음과 같습니다.

  • 2024-05-13: Istio 1.22에서 Ambient Beta
  • 2024-11-07: Istio 1.24에서 Ambient GA
  • 2025-08-04: Istio 1.27에서 Ambient Multicluster Alpha
  • 2026-02-18: Istio 1.29에서 Ambient Multi-network Multicluster Beta

한 줄 요약

Istio Ambient Mesh는 “sidecar 없는 기본 L4 메쉬 + 필요할 때만 붙이는 L7 waypoint” 라는 구조로, Istio를 더 가볍고 점진적으로 도입할 수 있게 만든 방식입니다.

Share