Azure 상식

AKS Istio add-on 적용 시 유의 사항

ktzzang0601 2025. 8. 18. 20:37

1. Sidecar Container에 대한 이해

  • 쿠버네티스에서 사이드카(Sidecar) 컨테이너는 포드(Pod) 안에 있는 보조 컨테이너로, “메인” 컨테이너를 확장하거나 보완하는 역할을 합니다. 컨테이너 간에는 네트워크와 파일 시스템을 공유할 수 있기 때문에 하나의 컨테이너는 애플리케이션 서버를 실행하고, 다른 컨테이너는 로그를 수집하거나 파일을 동기화하는 등 별도의 기능을 수행할 수 있습니다. 쿠버네티스 블로그는 사이드카 컨테이너를 “기존 컨테이너를 확장하고 개선한다”고 설명하며, 예로서 Nginx 웹 서버 컨테이너에 파일 시스템을 Git 저장소와 동기화하는 컨테이너를 추가해 Git Push‑to‑Deploy 기능을 제공하는 구성을 들었습니다kubernetes.io. 이처럼 사이드카는 메인 애플리케이션과 분리된 팀이 개발·유지보수할 수 있는 모듈로서, 프록시(ambassador), 로그 수집, 모니터링 어댑터 등 다양한 패턴에 활용됩니다

2. Service Mesh에 대한 이해

  • Kubernetes에서 동작하는 다양한 어플리케이션이 서로 데이터를 공유하거나, 인증 및 라우팅하는 것을 지원하는 기술이다. 특히 Microservice 환경에서 많이 활용되는 네트워크 구성이고, 네트워크의 형태가 mesh형식으로 구성되는 경우가 많아 service mesh라고 명명되었다. Service mesh는 각 컨테이너에 적용된 side car에 통신과 관련된 많은 기능들을 제공하여, 어플리케이션 코드의 변경없이 다양한 네트워크 구성(인증, 라우팅, 보안 등)을 적용할 수 있도록 한다.

3. Istio란?

  • Istio는 이러한 사이드카 패턴을 활용해 서비스 메시(service mesh) 기능을 제공하는 대표적인 플랫폼입니다. 서비스 메시란 마이크로서비스 환경에서 서비스 간 통신을 관리하는 인프라 계층으로, 보안(mTLS), 트래픽 관리, 관찰 가능성과 같은 기능을 애플리케이션 코드 변경 없이 제공하는 것이 목적입니다. Istio는 애플리케이션 옆에 “프록시(사이드카)”를 주입하여 모든 입·출력 트래픽을 프록시로 통하게 하고, 중앙의 제어 플레인에서 프록시의 동작을 설정합니다. 이 구조 덕분에 서비스 개발자는 비즈니스 로직에 집중하고, Istio가 정책 기반 라우팅, A/B 테스트·카나리 배포, 로드밸런싱, 장애 주입, 회로 차단 등 고급 트래픽 제어를 제공하며, 서비스 간 통신을 상호 TLS로 암호화하고 정책·인가를 적용할 수 있습니다. Istio는 또한 프록시에서 발생하는 텔레메트리를 수집해 Grafana나 Prometheus와 같은 도구로 통합하여 가시성을 높입니다. Istio의 데이터 플레인은 전통적인 사이드카 모드 외에도 2024년부터 개발 중인 Ambient mode를 제공하지만, 일반적으로 사이드카 방식이 가장 널리 사용됩니다.

4. Istio 구성

  • Istio는 크게 데이터 플레인(Data Plane)컨트롤 플레인(Control Plane)으로 나뉩니다.

 

  • Gateway
    - 설명: Istio Mesh의 진입점(Ingress Gateway) 혹은 출구점(Egress Gateway) 역할.
    - 용도:
    • 외부 트래픽을 받아 VirtualService로 전달
    • 수신할 포트, 프로토콜, 호스트를 정의
    • 예: HTTPS 443 포트로만 접근 허용
  • VirtualService
    - 설명: L7 계층의 라우팅 규칙을 정의하는 Istio 리소스
    - 용도:
    • URL 경로, HTTP 헤더, 요청 속성에 따라 다른 서비스 또는 버전으로 트래픽 분기
    • Canary 배포, Blue/Green 배포 등 점진적 배포 전략 가능
    • 예시: /v1 요청은 v1 서비스로, /v2 요청은 v2 서비스로 전송.
  • DestionationRule
    설명: VirtualService가 지정한 목적지 서비스에 대한 연결 정책을 정의.
    용도:
    • 서비스 버전(Subset)별 mTLS 보안 설정.
    • 로드밸런싱 전략(Round Robin, Least Request 등).
    • 장애 대응(Circuit Breaker, 재시도 정책).
  • Service
    - 설명: Kubernetes의 기본 서비스 리소스.
    - 역할: 동일한 레이블을 가진 Pod 그룹을 하나의 네트워크 엔드포인트로 노출.
    - Istio에서의 의미: DestinationRule이 참조하는 대상이며, 실제로 트래픽을 전달하는 중간 집합체.

  •  Pod
    -
    설명: 애플리케이션이 실제로 동작하는 최소 배포 단위.
    - 역할: Envoy Proxy 사이드카가 함께 배포되어 트래픽을 가로채고, Istio 정책을 적용.
    - 참고: Pod 내부의 Envoy가 mTLS, 인증·인가, 모니터링 등의 기능 수행.

5. 주요 Istio 용어

용어 주요 용도
Gateway 외부 트래픽 진입점 정의. 포트/프로토콜/호스트 지정 가능
VirtualService L7 라우팅 규칙 정의 (경로, 헤더, 호스트 기반)
DestinationRule 서비스 목적지의 연결·보안·LB 정책 설정
ServiceEntry Mesh 기본 정책상 막혀 있는 외부 도메인/서비스 로의 호출을 허용/정의
Sidecar 리소스 네임스페이스·서비스별 트래픽 범위 제한
PeerAuthentication 서비스 간 트래픽을 mTLS(STRICT/PERMISSIVE/DISABLE) 로 설정
RequestAuthentication JWT 인증 적용
AuthorizationPolicy 주체(인증 주체/네트워크/네임스페이스 등), 대상(경로/메서드/포트), 조건을 조합해 허용/차단 규칙 설정
Virtual Host VirtualService에서 지정하는 hosts 필드 개념. 요청 호스트 기반 라우팅
Subset DestinationRule에서 정의하는 서비스 버전(예: v1, v2). Canary 배포 시 사용

 

6. AKS Istio add‑on의 주요 제한사항

제한 사항 상세 내용
Open Service Mesh(OSM) add‑on과 함께 사용할 수 없음learn.microsoft.com AKS 클러스터에 이미 OSM add‑on을 사용 중이라면 Istio add‑on을 활성화할 수 없습니다. 두 서비스 메시 add‑on은 동시에 설치할 수 없기 때문에 하나를 선택해야 합니다.
직접 설치한 Istio와 함께 사용할 수 없음learn.microsoft.com 클러스터에 오픈 소스 Istio를 수동 설치한 경우, 관리형 Istio add‑on을 사용할 수 없습니다. add‑on을 사용하려면 기존 Istio를 제거하거나 다른 클러스터에 add‑on을 활성화해야 합니다.
가상 노드(Azure Container Instances)에서 실행되는 Pod는 메시에 포함 불가learn.microsoft.com AKS의 virtual nodes 기능을 이용해 노드를 확장한 경우, 가상 노드에서 실행되는 Pod는 Istio 메시 네트워크에 참여할 수 없습니다.
Ambient 모드(사이드카 없는 모드) 미지원learn.microsoft.com 2023년부터 Istio에 추가된 Ambient mode는 사이드카 없이 서비스 메시를 구현하는 방식입니다. 현재 AKS Istio add‑on에서는 이를 지원하지 않으며, 향후 로드맵에 따라 제공될 예정입니다.
멀티 클러스터 지원 없음learn.microsoft.com 하나의 Istio 제어 플레인으로 여러 AKS 클러스터를 연결하는 멀티‑클러스터 메시 구성이 아직 지원되지 않습니다.
Windows Server 컨테이너 미지원learn.microsoft.com Istio는 현재 Linux 컨테이너만 지원하므로, Windows 기반 노드에서 실행되는 Pod는 메시에 참여할 수 없습니다.
특정 사용자 정의 리소스(CRD) 차단learn.microsoft.com ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin과 같은 CRD를 사용한 메시 설정 커스터마이징이 불가능합니다. 이는 관리형 add‑on의 안정성을 위해 일부 고급 설정을 제한한 것입니다.
허용된 EnvoyFilter 유형 제한learn.microsoft.com Envoy에 커스텀 HTTP 필터를 주입하는 EnvoyFilter 리소스는 Lua 스크립트, Compressor, Local Rate Limit 필터만 허용됩니다. 다른 유형의 필터는 차단되며, 허용된 필터 사용 중 발생한 문제는 Microsoft 지원 범위에 포함되지 않습니다.
Gateway API(이니셔티브 GAMMA)를 통한 Istio 인그레스 관리 미지원learn.microsoft.com Istio Ingress Gateway를 Kubernetes Gateway API로 구성하는 기능이 아직 정식 지원되지 않습니다. 대신 기존의 Istio 리소스나 Azure CLI 명령을 이용해야 하며, 포트·프로토콜 변경 같은 상세 설정은 제한됩니다.
MeshConfig 일부 필드만 커스터마이징 가능learn.microsoft.com Istio의 MeshConfig 구조체 중 일부 필드만 AKS add‑on에서 수정할 수 있습니다. 허용되지 않은 설정을 변경하려면 현재로서는 add‑on이 아닌 자체 Istio 설치를 이용해야 합니다.

 

7. 참고 문서