사이드카

1. Pod(파드)라는 것부터

쿠버네티스에서 Pod = 실행 단위야.

  • 컨테이너(Docker 같은 거)를 1개 이상 묶어서 실행하는 “작은 서버” 같은 개념.
  • 대부분은 Pod 안에 컨테이너 1개만 있어 → 앱 하나만 띄우는 식.
  • 하지만 경우에 따라선 컨테이너 여러 개를 하나의 Pod에 넣을 수 있어.

왜냐하면 Pod 안의 컨테이너들은:

  • 같은 IP/포트 공간을 공유 → 서로 localhost로 통신 가능.
  • 같은 스토리지 볼륨을 공유 → 파일을 주고받을 수 있음.

2. 메인 컨테이너 vs 보조 컨테이너

  • 보통 Pod에 들어가는 주된 앱이 있음 → 예를 들어 Nginx 웹서버.
  • 그런데 Nginx만 있으면 부족할 때가 있음 → 로그를 따로 수집하고 싶다거나, 설정 파일을 자동으로 갱신하고 싶다거나.
  • 이럴 때 보조 컨테이너를 같은 Pod 안에 넣어 두면 좋아.

3. 사이드카(Sidecar)의 의미

  • 오토바이 옆에 붙어 있는 보조석(사이드카)에서 따온 말.
  • 쿠버네티스에서 사이드카 컨테이너 = 메인 컨테이너를 보조하는 컨테이너.
  • 혼자서 동작하는 게 아니라, 메인 앱과 함께 붙어서 동작.

4. 아주 쉬운 예시

  • 메인 컨테이너: Nginx (웹페이지를 서비스)
  • 사이드카 컨테이너: 작은 Alpine 리눅스 → ConfigMap 내용을 계속 읽어서 index.html 파일로 써줌.
  • 둘은 공유 볼륨을 사용.

흐름은 이렇게 돼:

  1. 사이드카가 ConfigMap 값(예: “색상은 빨강”)을 /pod-data/index.html에 씀.
  2. Nginx는 그 파일을 그대로 /usr/share/nginx/html/index.html에서 서비스.
  3. ConfigMap이 바뀌면 사이드카가 다시 파일을 써주고, Nginx는 최신 값을 보여줌.

5. 현실에서 자주 쓰는 사이드카

  • 로그 수집기: 앱 로그 파일을 Fluentd 사이드카가 모아서 로그 서버로 전송.
  • 프록시: 앱 앞단에 Envoy/Istio 사이드카를 붙여서 보안·트래픽 제어.
  • 동기화 에이전트: 깃 리포지토리 내용을 주기적으로 가져와서 앱이 바로 쓰도록 유지.

image.png

Comments

💬 Sign in with GitHub to leave a comment. Comments are public and stored in GitHub Discussions.