사이드카 모드
개요
사이드카 모드는 이스티오의 기본적인 방식으로, 모든 워크로드에 프록시를 배치하는 구조를 가지고 있다.
이때 프록시로는 고성능 경량 프록시인 엔보이가 들어가며, 이 엔보이에 컨트롤 플레인이 설정을 넣는 역할을 한다.
이스티오 개발 당시 엔보이 커뮤니티와 긴밀한 협업이 있기도 했고, 엔보이 자체도 메시 환경을 염두하여 개발이 됐었다.
그러다보니 엔보이는 자연스레 서비스 메시 환경에서 사용하기에 적합하도록 만들어졌다.
어느 정도냐, 서비스 메시를 위한 기능은 물론이요, 애초에 서비스 메시 환경이어야 설정이 간편해지는 정도다.
기능
이스티오에서 바라는 모든 기능은 사실 엔보이가 제공하는 기능이라 해도 과언이 아니다.
- 다양한 네트워크 설정
- 동적 설정
- 런타임 중에 설정 변경 가능!
엔보이를 조금 파보면 알겠지만, 실상 이스티오에서 하는 다양한 설정은 엔보이의 설정 방법과 매우 유사하다.
이스티오가 아니라 그냥 엔보이 메시라 해야 하는 거 아닌가 싶을 정도임
그만큼 이스티오를 잘 다루기 위해서는 엔보이의 구조를 아는 것이 중요하다.
구조
실제로 파드가 배치되면 해당 파드에 사이드카 컨테이너가 하나 배치된다.
이 컨테이너에는 pilot-agent가 들어간다.
pilot agent는 각종 필요한 세팅을 한 이후, 정말 트래픽을 처리해낼 엔보이를 기동시킨다.
그래서 엔보이가 프록시로 배치될 때 실제 컨테이너 프로세스를 구체적으로 따져보면 한 단계의 층위가 더 있다고도 할 수 있다.
사실 사이드카로 주입되는 컨테이너의 메인 프로세스는 엔보이가 아니라 pilot-agent이다.
이 에이전트가 각종 환경 설정과 컨트롤 플레인과의 통신을 담당하면서 엔보이를 기동시켜주는 것이다.
- 15000 - 엔보이의 관리자용 ui 포트로, 이 경로로 실제로 web 인터페이스를 제공한다.
- 15001 - 아웃바운드 핸들러 포트
- 앱 컨테이너에서 나가는 요청이 엔보이로 들어가는 포트이다.
- 어떻게 그렇게 동작하는지는 E-이스티오의 데이터 플레인 트래픽 세팅 원리 참고
- 15002 - 에러 탐지를 위한 포트
- 15004 - 컨트롤 플레인에서 프록시의 상태 디버깅을 위해 사용하는 포트.
- 15006 - 인바운드 핸들러 포트
- 앱 컨테이너로 들어오는 요청이 엔보이로 들어가는 포트이다.
- 이것도 iptables로 조작되는 방식이다.
- 15008 - 터널링용 포트
- 15020 - 다양한 관리 기능을 제공하는 포트.
- 프로메테우스 메트릭 요청이 들어오면 15090 포트에서 엔보이의 메트릭과 에이전트의 메트릭을 합쳐서 보여준다.
- 헬스체킹 요청이 들어오면 15021 포트로 라우팅한다.
- 15021 - 헬스체킹용 포트.
- 15053 - 앱 컨테이너에서 DNS 질의를 날리는 포트
- 참고로 이건 추가 설정을 해야지만 사용되고, 보통 앱 컨테이너의 질의는 Core DNS로 직행한다.
- E-이스티오 DNS 프록시 동작 참고.
- 15090 - 엔보이의 프로메테우스 메트릭 포트
설정되는 포트가 많아서 어지럽지만, 결국 앱 컨테이너 트래픽과 직접적으로 연관되는 포트는 15006, 15001이고, 전반적인 설정을 볼 때 사용되는 포트가 15020 이란 것 정도만 알면 된다.
여기에 엔보이 심화 디버깅을 할 때 15000 정도가 유용하다.
컨트롤 플레인과의 통신
그러면 구체적으로 어떻게 컨트롤 플레인으로부터 각종 설정을 받아올까?
일단 아래 컨트롤 플레인 부분을 보면 알겠지만, 컨트롤 플레인에서는 15012 포트를 통해 각종 설정을 노출해주고 있다.
이 포트에 연결돼어 각종 설정을 받아오는 역할은 pilot agent이다.
에이전트는 엔보이를 위한 일종의 프록시 역할로서도 동작한다는 것이다.
에이전트는 이렇게 두 가지 유닉스 소켓 파일을 열어둔다.
엔보이 부트스트랩 파일을 보면 ADS 설정을 받을 때 xds-grpc라는 클러스터로 연결하는 것을 알 수 있는데,
해당 클러스터는 사실 에이전트가 열고 있는 소켓 파일이다.
SDS 관련해서는 Istio Security를 참고하고 보는 게 좋은데, 아무튼 이것도 결국 유닉스 소켓을 쓴다는 것은 똑같다.
관련 문서
EXPLAIN - 파생 문서
이름2 | related | 생성 일자 |
---|---|---|
이스티오 컨트롤 플레인 성능 최적화 | 이스티오 | 2025-05-18 02:29 |
이스티오 컨트롤 플레인 메트릭 | istiod | 2025-05-18 15:45 |
기타 문서
Z0-연관 knowledge, Z1-트러블슈팅 Z2-디자인,설계, Z3-임시, Z5-프로젝트,아카이브, Z8,9-미분류,미완이름1 | 코드 | 타입 | 생성 일자 |
---|---|---|---|
6W - 이스티오 컨트롤 플레인 성능 최적화 | Z8 | published | 2025-05-18 02:29 |